So, baby steps, but here’s a small feature I’m planning to implement next, just to shed some light what goes on behind the scenes…
As you may have noticed, NetMission loves to load its resources concurrently with the gameplay, like Metroid Prime loading nearby rooms without freezing the whole game. This means there can be any type of room transition you can imagine.
Defend Your Flaahgra (DYF) has 4 rooms (Team SCU logo, title screen, gameplay, game over), and the most interesting transition is from title screen to gameplay, where the camera falls down into the clouds and arrives at the sunchamber. If you’re on a slower computer, you may have noticed this loading text I built in. I’ve never been able to get past the first few lines, and usually I don’t get to see any of them, but here’s the full message that appears one line at a time:
Loading...
Any second now...
Pulling resources from that game file...
Thought about getting a faster hard drive?
Maybe there's something wrong with me...?
Please tell Troid92 about this! We might be stuck.
Try closing and reopening?
I am so sorry. I tried.;_;
You can tell that the scene is still running because the text is fading between black and gray. I probably should’ve added more animation to this scene, but this subtle difference is something that sets NetMission apart from, say, Game Maker (at least from the last time I used it, anyway).
===========
Flip around to the game developer side – like, through my eyes, as I made DYF. NetMission makes it very convenient to transition between rooms: just tell the engine something like, “I want these rooms loaded into memory next!”, then keep doing something until the next room is ready, then switch to that room. (You could in theory run the entire game inside 1 room if you want to specify individual resources to swap in, but that is less convenient). Plus you never have to tell NetMission when to remove resources from memory – it just knows.
HOWEVER, telling the engine which resources go with a particular room, is a huge pain in the butt. At the top of the room’s source code you have to include a crazy unreadable header that looks something like this:
courierNew10,Arial12!
sapsac.png,ghost.png,Ridley.JPG,urmomlol.bmp,seedling.PNG!!
seedling,ground,sapsac,ghost!
explode.wav,click.wav,screech.wav!track1.ogg!!
ridleyModel,seedlingModel!ridleyIdleAnim,seedlingWalk,seedlingShoot!!
This is disgusting, and it’s because I just didn’t have the time to make NetMission more user-friendly (after all, I am its only user right now )
It also has a terrible drawback: objects and other resources do not get their own dependency listings like this, meaning that if you want to include the “seedling” object in your room, you just have to know that you will also have to add seedling.PNG, explode.wav, screech.wav, seedlingModel, seedlingWalk, seedlingShoot, … in the correct spots, or your seedling won’t function correctly (sounds won’t play, it won’t animate properly, etc.)
===========
That brings us to the improvement I want to make. Here’s what I want to implement for the new header syntax:
--[[
@NetMissionResource
[Object] healthPickup, bombSlot
[Sound] explosion.wav
--]]
It’s much more legible, and you’ll be able to put it at the top of any source file. The engine will figure out the dependencies for each room, object, and resource.
This means if you want seedlings in your room, all you have to put is “[Object] seedling” and the rest will be taken care of. Or if you’re swapping in/out individual resources during gameplay, you just tell the engine, “now I want to add a seedling on top of the current room’s resources!” and NetMission will begin loading the corresponding image and animations for you.
Much, much better.
Just gotta find a time to implement this fix…