Everything is open source! We also have an active community of contributors on discord.
Server repo: GitHub - 2004scape/Server
Our content language is a remake of RuneScript (compiles like CS2) and our config formats are as authentically accurate as we can make them. The entire client cache is built 1:1 (CRC matches) from source files in the repo, while the server builds a cache for itself with extra data included.
The project has a huuuge focus on authenticity. The goal is to preserve the old game after all. :) We're taking great care to be era-accurate, bugs and all.
If you're looking to contribute come join us on discord!
We also have a functional JS webclient, and restored the original May/June 2004 website via archive.org snapshots.
Spoiler for Feb 2023 Update:
Discord cross-post (Feb 24):
1) Desktop Webclient: Done
- This is feature-complete. The only improvements to be made here would be optimizations, although Chrome-based browsers work really well.
- Sound and Music work after you interact with the page.
- TODO: There's one bug to be figured out with an internal delay counter (workaround in place) but that isn't blocking anything. It can be seen with jingles looping, in the Java client it doesn't loop, but in the webclient it loops once before switching back to music. It's counting down differently.
2) Mobile Webclient: "Functional"
- iOS Safari does not support full-screen canvas elements. There may be a workaround I'm looking into, which requires people add bookmark shortcuts to their home screens.
- Android supports full-screen and seems to run well.
- Sound and Music work after you interact with the page.
- TODO: There is a tap delay on Android in fullscreen, looking into this.
- TODO: Both Android and iOS have no virtual keyboard popup yet to type. Working on this. In the mean time you can log in without any username to see it load.
- TOOD: Camera controls.
- TODO: Would like a 2nd input mode so you can either tap-to-click or move around a virtual cursor.
- TODO: Need to disable some browser behaviors so you can long-press or double-press.
3) Server: Proof-of-concept stage (pre-alpha)
- You can log in and walk around. Music will change based on the area you're in. Any region that existed back then will load.
- There is an interaction system, a script queue system (integrated with the dialogue flow), and the network protocol is fully functional. Care is being taken so all original behavior is emulated, and you will be able to manipulate ticks just the same.
- Some NPCs have basic dialogue scripts written: Men (random selection of dialogue), Thessalia (no makeovers/shop yet), Baraek (yes you can run ::item 995 20 and receive a Fur), and the Gypsy (no quest... she'll think you've finished Demon Slayer currently), and Romeo (also no quest, you can hear him complain at least). The chathead expressions have not been implemented yet, they use a placeholder anim.
- A couple item processing skills (Herblore and Fletching) have been implemented for testing. Pickpocketing and Woodcutting technically appear but are not properly functional.
- Some skill unlocks have been mapped out and the appropriate jingle plays on level-up.
- A few "inauthentic" improvements have been made to the map data, Port Sarim was fixed up a bit and some tile bugs were cleaned up in other regions.
- Banking works. Nothing else to do there besides fix a general interface bug (see below).
- Most ladders are functional but they may be blocked by doors to reach them...
- Cross-world saving. The free world and members world sync to a single master server. Login does not check if you're in a members zone right now.
- CI/CD for server deployments, any time a commit is made all instances notify the player of an update and restart after the in-game timer is up.
- TODO: Zone updates - Ground items, opening/closing doors, chopping down trees, etc. WIP.
- TODO: Fix loc interactions to span multiple tiles (this will fix chopping trees and using stairs)
- TODO: Following NPCs/players
- TODO: Combat (this is a big one - sounds, animations, combat cycles)
- TODO: There is an interaction script bug causing dialogue interfaces to get cleared and reappear at the same instant, you may see a flicker.
- TODO: Social features (friends/ignore list and PMing)
- TODO: There's a button state bug that can cause the client/server to get out of sync after login. They're supposed to restore with the current code in place but still working out what's wrong there.
- TODO: Equipping items.
- TODO: Cleanup NPC spawns. The current list was converted from OSRS.
Some of these TODOs will come with the next server update ��
4) Website: Static templates done
- The majority of pages, skill guides, FAQ, and quest descriptions should be linked correctly and load.
- TODO: Need to create a Secure Services login page.
- TODO: Need to create an Account Management page.
- TODO: Need to create a dynamic hiscores area.
The next step for the project is closing out some of the TODOs in the Mobile Webclient and Server sections. You can connect and see things for yourself now, but the alpha won't begin until some of the important ones are done.
Expect the alpha announcement coming up in the next 1-3 weeks - it means all the systems are in place and some content is starting to be written, and I need people to try and break things. Beta will mean the core is solid and content is well underway (50%?) and may come 3 months after alpha. Release will mean everything is done!
Spoiler for Old Post:
Intro
Last month I organized and released a bunch of revision 225 data and refactored the client: Revision 225 (2004) Cache/Client/Packets
I figured it was time I actually used that data now that I've had a few more weeks to play around with things. Seeing the progress George has made, as well as rebecca starting on their own project, inspired me heavily.
I have a few goals with this project:
Re-create an authentic May 2004 experience*. This isn't limited to just the server content. I'm also working on making a 2004 runescape.com clone sourced from all the mostly-complete 2003-2005 runescape.com backups out there
Share all this work openly when it's something worth showing off. And if I never get to that point, whatever I have will still get released. It's no fun seeing promising threads die into obscurity
I'll host a reference server, but I really want to build something for other people to run themselves if they want to. There's a lot of value in being able to always have a good emulator ready to spin up whenever you want
To have fun making it! That's the whole point here anyways
* Some files we just don't have, in which case I filled missing gaps in maps, songs, and jingles from 289 (Jan 2005). I'm using as much original data as possible (610 map files, 135 midis). I can safely say that the cache I've put together is "100% complete" although maybe only like 99% authentic in some rare cases.
Project Progress
If a section isn't listed, I haven't gotten around to starting it.
Music Player
Overview: 100%
+ MIDI player with fading and volume control.
+ Identified all original jingles for level up, death, and quest completion to send when implementing content.
+ Identified all original songs.
+ Created a region map for every song to play in their original 2004 region.
+ Fully functional music player, with locking/unlocking tracks done via varps, and auto/manual buttons controlling the region auto-play. Update Reply 1
NPC Behavior
Overview: 35%
+ NPC spawns - imported wiki OSRS spawn dump and converted IDs+variant IDs to 225. Need to remove extra spawns.
+ NPC spawn directions for fixed NPCs (e.g. bankers) - imported .ssh/_jordan's OSRS spawn dump for directions.
+ NPC wandering range - need clipping masks generated on server.
- NPC aggro range.
- NPC/Player combat.
- NPC/NPC combat.
- NPC loot drops. Update Reply 2
Overview: 15%
+ 2004 index page
The player count updates real time as well. Marked as yellow because there's no polls system in place so that text is all placeholder.
+ News posts system
It's full of test data right now, but it gets templated by the server correctly.
- All other pages
Media
Spoiler for Game Screenshots:
Character design interface
::date command which shows the original date of the map file
Varrock Square:
Falador:
Ardougne Market:
Before Burthorpe:
Before Castle Wars:
Old Zanaris, later updated in 2006:
Goblin Village
Welcome Screen
Spoiler for Website Screenshots:
Index page:
News posts (dynamic, test data):
Specific news post (dynamic, test data):
Credits
- SnowEssence (Rakuten) for helping me find some old 2004 site assets.
- mejrs' OSRS spawn dump.
- .ssh/_jordan for their OSRS spawn dump, that I sourced many NPC directions from. Just directions - didn't want to overpopulate the world with two spawn dumps.
I've taken care to get any OSRS-related configurations to work in 225, many things are different. I'll release all of my NPC spawn configurations and any scripts I made in the process of getting the world populated.
Spoiler for Thread Edit Backups:
I don't have any plans to add any QoL features right now. Any additions I make will probably be subtle cosmetic additions.
This was written from scratch and doesn't use any existing base out there right now. It means content/systems will take longer, but I can also document everything along the way.
Currently Implemented:
- HTTP, RSA, ISAAC, no shortcuts here!
- Sending maps, songs, and jingles
- Player update masks.
- Playing songs, with fading and volume control supported
- Playing sound effects (really basic right now)
- Songs defined for every single region, accurate to May 2004. (2/22/2022)
Doesn't matter if it's Y 44 or Y 154, I took the time to go through each one and cross-check a few sources. I've updated an old post of mine here with that list Complete list of music IDs with their respective names and region IDs
- Nostalgic navbar above game (see first picture above). (2/23/2022)
Each icon/label is a Swing component, and they have event listeners for mouse clicks. Planning on some integration with a website.
- Unlocking locked tracks in the music player (2/25/2022)
Additions:
- Sky colors!
The server has the ability to send the fill color to the client when entering a region. It's an optional feature, but if it's enabled then you don't have to run around a world stuck in an endless void.
I have a big table I've made where I work on coming up with good colors that contribute positively to the feel of that region.
- MIDI soundfont downloads with the other archives
The client downloads a small soundfont file (2 MB) to help with the consistency of instruments... RuneScape in 2004 was at the mercy of your browser/OS.
- A World Map applet
They were two entirely separate programs before, and I've refactored both the client and map applet to be bundled together in the same codebase.
- Anti-aliased minimap
TODO:
- Event queue system (Kris' OSRS documentation will be critical to get this right)
- Combat system
- Dialogue system
- Quest system
- Inventory/item handling
- Object system for ground objects
- NPC roaming (clipping masks)
- Quests
This list will be filled out as I get to implementing each quest. It's a while off as I need all the previous systems in place before it's worth starting.
- Skills
This list will be filled out as I get to adding features for each individual skill.
tl;dr
It's mostly protocol stuff that's been handled so far. Basically the client can download the cache, run around, and hear songs play/fade to the next one as you enter new regions. Map data gets sent to the client and saved locally as you enter regions, there's no on-demand protocol as that came out in revision 234. I'm working on writing the different necessary systems, then content.
I also had an obsession with getting the music system done properly before any other content/systems. I figured I should give myself some good tracks to listen to while I work on everything else.
Spoiler for Teleporting to regions to unlock tracks:
Spoiler for Test command to unlock tracks:
1) Any time a song is played, the currently playing text is updated
2) When Manual mode is on it _does not_ switch the track as you enter new regions.
3) Clicking a song in the list will switch your mode to manual.
4) When Auto mode is on the client plays a new song as you enter regions. In both modes, tracks are still unlocked
5) The login process ignores your manual mode setting and sends the track for that region anyways, so you aren't listening to the title music.
It takes about 6 packets to update the entire list at once, however if a player is just walking around they only need a single packet whenever they unlock a track. Each song is a bit as part of a client-side varp, and the interface definition has the index and mask used for each song.
Not sure what I'll tackle next, maybe adding NPC spawns and wandering for them Thanks for the support everyone!
please add gsmini, i'm kidding this looks quite nice! I'm not too big on the super older revisions but I do like to see new life in revisions or even unexplored ones. Best of luck i'll keep an eye on this.