OoT Online Development Blog - Printable Version
+- Hylian Modding (https://hylianmodding.com)
+-- Forum: Oot Online (https://hylianmodding.com/Forum-Oot-Online)
+--- Forum: Development (https://hylianmodding.com/Forum-Development)
+--- Thread: OoT Online Development Blog (/Thread-OoT-Online-Development-Blog)
OoT Online Development Blog - Psi-Hate - 10-16-2018
Hi everyone, this blog is dedicated to posting updates about the development of OoT Online. We'll try to update as often as we can when we reach points we wish to show off.
OoT Online Team:
One of us will update through new posts when we get the chance, so stay tuned!
RE: OoT Online Development Blog - denoflions - 10-16-2018
Greetings everyone, I'm the network programmer for OotOnline.
Since taking over the network role from Melon a couple of months ago I've rewritten the client and server from the ground up. In this post I'll go into some technical aspects of the project to give you a better idea of what is going into this.
Part 1: OotModLoader
This is the very core of the project. It is a mod loader that I've designed for making Oot mods with netplay support. It gives you a modding API that allows temporary ROM patching, RAM monitoring/editing, and high level actor hooking systems to abstract away much of the meaty bits of modding to get straight to what you really want. The system contains an event bus for detecting basic things about the game state without hooking specific memory addresses. Events such as scene change (pre and post), room change, void out, and link's various states. These events are being expanded all the time as new functionality is required for OotOnline.
The mod loader also contains the Master Server. The server is capable of hosting many individual lobbies of players simultaneously. This works by specifying a unique identifier for your play session and optionally a password.
Part 2: OotOnline
This is the first mod made for the mod loader. It loads a ROM payload that contains our 'puppet' Link actor that represents other players in your game world. It utilizes the mod loader's API to detect the game state and track player movements. A puppet actor is spawned when a player enters the same scene as yourself and remains until they leave or disconnect from the server. Link's position, animation, rotation, and equipment data are monitored and transformed into commands for the puppet that represents you to other people.
The puppet is currently compatible with Adult Link with everything but Iron and Hover boots.
Part 3: SceneSync
This is the scene context module. Its purpose it to sync everything within the context of the scene so that co-op game play is possible. This includes any actors and the scene's switch, chest, and clear flags. Each actor instance is assigned a uuid (Universally unique identifier) to facilitate networked synchronization. The entire actor sync system is dynamic and works anywhere so long as the system understands the actors in play. This dynamic approach should make basic ROM hacks work right out of the box, but more sophisticated ones may require their own mod to act as a compatibility layer.
Current development goals:
We're currently in Alpha. This means we are adding content as quickly as possible. In general our Alpha goals are as follows:
RE: OoT Online Development Blog - denoflions - 10-23-2018
Development Update: October 22, 2018
This last week focused mostly on Dodongo's Cavern. Most of the dungeon is now synced.
The other thing on the agenda this week has been getting the missing pieces of the puppet into place.
Child Link + Masks
Adult Link + Boots
Adult Link + Gauntlets
These have been hurdles we've been looking to get past for a while as they barred the way to porting the puppet to the 1.0 rom.
Work has been going into the mod loader itself as well. It can now load up entire scene replacements from external files.
This week is slated to be mostly focused on puppet stability as we move towards 1.0 rom support.
RE: OoT Online Development Blog - denoflions - 10-29-2018
Development Update: October 29, 2018
Last week was focused on puppet stability and crash fixes. The addition of Child Link support added some new challenges that needed to be tackled.
A large amount of work near the end of the week went into getting the save context module assembled. This module will be responsible for allowing players to share items and quest progress in co-op mode.
This week will be further work on the save context module and continuing to improve the puppet to perfect parity with the real Link actor.
See you next week.
RE: OoT Online Development Blog - denoflions - 11-05-2018
Development Update: November 5, 2018
Last week was spent on the save context.
This week we're back on the dungeon grind with a goal of finishing out the child segment of the game.
RE: OoT Online Development Blog - denoflions - 11-12-2018
Development Update: November 12, 2018
Last week was suppose to be a dungeon week, but that work got pushed back in favor of optimizing last week's save context additions.
RE: OoT Online Development Blog - denoflions - 11-19-2018
Development Update: November 19, 2018
Last week was spent refactoring the actor hook system on the client.
The old system required that each actor have its data (actor id, offset, hook size, etc.) input and two callbacks defined (incoming and outgoing). This caused a lot of code bloat and a bunch of nearly identical callbacks that made things really unpleasant to maintain.
This example uses the 'Pushable' template to generate the appropriate callbacks to make the actor's position sync when Link interacts with it. Should an actor be highly specific where a template doesn't make sense we can use an ES6 class instead and define the callbacks manually in code.
This week we're putting the new system to work hooking up more dungeons.
RE: OoT Online Development Blog - denoflions - 11-26-2018
Development Update: November 26, 2018
Most of this week was taken off due to Thanksgiving in the US.
We're working on the port to 1.0, so not a lot of major progress will be made on content in the coming weeks. Stay tuned.
RE: OoT Online Development Blog - denoflions - 12-03-2018
Development Update: December 3, 2018