There was much progress in the beginning of this week, and in the following evenings where I had some extra hours to spend on development. I am very hopeful that I should be able to kick off the major release I have been going on about for months now this weekend! I cannot say exactly when this weekend, but I feel that if nothing gets in my way, I should be able to release something.
If you haven't been following the development closely on Discord, or through this development diary postings... Here is what coming in this next release:
- Fully working inter-host networking using 65c02 assembly.
- Player created programs and tools will now be-able to run servers and clients.
- Nothing host-related will be hardcoded! This includes the in-game mail system, shell program, etc... Anything and everything can be modified by the player.
- Proper realistic block storage, no more weird imaginary file system any longer.
- Hosts will boot from a boot ROM/BIOS, thanks to the coding skills of bauen1.
From the code and game engine standpoint, there are many changes which will improve game stability and allow for better scaling of the server down the road. This includes the following code enhancements:
- There are now separate front-end daemon services, which are not part of the game engine backend. These front-end daemons listen for Telnet and Websockets at the moment.
- The game engine code is front-end agnostic, so the game engine doesn't know about how Telnet or Websockets works. It can still send off CSI and VT220/ANSI escape codes, but otherwise doesn't know the low-end protocol.
- The Virtual Machine(s) run in their own separate daemon as well.
- When a player requests connection to a VM, it is the duty of the VM daemon to allocate the VM and process the machine code. The game engine has no 6502 knowledge.
- All the components are now entirely event-based and there is no longer any blocking I/O calls, rather than the threaded code I previously created. This should add additional game engine stability.
If you look at the new code, it is now separated into 4 server programs which talk with each other to make everything work. A new front-end can be created in almost any language and as long as it follows the game engine API, it can be used. The same goes with the VMs, as long as a new VM follows the game engine API, it can be connected to the game engine, and can be programmed in almost any language.
Once the new game engine code rolls out, I will soon be expanding to a second server. The server which hosts the website will run the front-end servers, and the second server I plan on bringing up will run the game engine and the current VM daemon. If Hacker's Edge does expand to a large player-base in the future, then further scaling up the servers should be fairly easy to do. It is very difficult to scale up a monolithic network server, as you need to expand the single server it runs on until you cannot expand it any longer.
Anyways, that's my update for now. I will be available in the discord chat for most of the day as I am continuing my development.