So I’ve officially started development on MMORPG Tycoon 2.0. I’m expecting this to be a lengthy development, and I’m expecting to occasionally make diversions into “Game in a Week” or other such offerings. But for the moment, I’m focusing hard on Tycoon development. This is the first screenshot of very simple terrain generation and rendering. It’s using the “Lord” grass texture as a placeholder, but is doing proper lighting and rendering.
Game design discussions are to come. But I’m happy enough about having a real screenshot to show off that I just had to post it now.
I promise; last post about lighting support!
Here we have fully working lighting support. We have a shiny sphere, and a more matte (though still lit) cube. The bright white spots represent lights in the scene.. though in this screenshot, they’re not colored the same as the light they’re emitting. They’re just for debugging that light is actually coming from the right spots. This is now all being done through the proper VectorStorm API, and while there’s still a fair amount of optimisation work to be done, it’s now functional, and optimisation work should happen entirely inside the engine, without requiring changes to client code.
With this tech in place, I’m now ready to resume proper game development again. But more on that tomorrow!
I really do like to use $5 vocabulary words, sometimes.
Anyhow, this is just a quick note that I’ve got lights into VectorStorm. There might be a few minor API changes to them from here out, but they’re now basically functional. Currently supported are ambient, directional, and point light sources.. which should be all I ever need, really. Last major thing required for full proper 3D rendering support is a materials system (currently, all 3D geometry is being drawn with a silly bright specular highlight that makes it look like everything is made of plastic.. look at the screenshot a few posts down to see that in action) Last big thing to be done is the material system, so that different geometry can be marked as reacting to lights in different ways. My current plan is to rip out color and texture support from the innards of the renderer, and integrate both of those into a single Material system. Should simplify the code very nicely, I hope!
Actually, I suspect there’ll only be one more lighting post; when the material system is finished and working and I have a screenshot and a demo program to show off, which would technically make this the penultimate post. But I like the word ‘antepenultimate’ more, and it gives me a little extra wiggle room in case I run into problems.
Anyhow. I’m going to go sleep now. Am still mildly sick, so I’m going to try to get extra rest. Chat with you all again in a day or two!
So I took a brief break from lighting code today, and laid the foundations for translation support in VectorStorm. Basically, game code now requests coded “string keys” from the localisation system, and the localisation system provides the matching translated string from a data file. I have this all working right now, but am missing a few pieces.
First, the whole VectorStorm string and font system is based upon ANSI strings; it’s not Unicode-compatible; it’ll take some work to make them it happy with extended character sets (I may just skip that for now).
Second, I’m not sure how to best select which language string table to load. Maybe I should just put that into the “Preferences” section of the games I release; that’d be simpler than trying to automatically select an appropriate language based upon system locale settings or etc.
Work’s still very busy and tiring, so not getting as much done on this home stuff as I’d like. But still slowly making progress.
Wanted to post a quick update. Work stuff is extremely busy for the next week, possibly the next two weeks, but I’m still getting little bits and pieces done here and there. I mentioned earlier that I’m working on putting 3D lighting support into VectorStorm, but it’s taking a little longer than I’d hoped.
Here’s the current status. In order to get proper 3D lighting support, it requires replacing the old rudimentary “color” rendering system with a basic material system. However, one of the VectorStorm goals is to remain extremely easy to use and to retain backwards compatibility, so the old ‘SetColor’ commands will still be available; they’ll just internally use the new Material system.
In order to do all this, I’ve been drastically simplifying the rendering code; moving the code’s smarts from the renderer into the display list class. I’ve now got it to the stage where most API features are working again, with the simpler code structure. The only things still broken now are vsOverlays (simple gradients; I often use these for skies) and vsShaders (modify static display lists; the “strobing green wireframe” effect seen in the intro for MMORPG Tycoon was achieved using a vsShader, for example). I’ll get to vsShaders soon. vsOverlays.. I’m not sure. But I’ll probably make them work too, sometime soon.
It’s likely that the old-style of rendering, while it still works, might become slightly slower, as it’s not being as intelligently optimised by the internal systems any more. If that’s an issue, code using the old line-drawing code can be migrated to the new drawing primitives, which allow you to specify an arbitrary number of lines in a single call, instead of multiple MoveTo/LineTo calls.
Anyhow, once vsShaders are working again and the material system is in place, I’ll start looking at generating some proper terrains for MMORPG Tycoon 2.0, and see what I can do with that… wish me luck!