At inception, I was thinking of this game as "ASCII Deus Ex", but "Real-time Roguelike" might be a less copyright-infringing description. Second Order will be an action RPG with deep and complex systems, set in an infinite procedurally-generated world. I intend to support modding as extensively as possible, without getting sidetracked into "making an engine, not a game" territory.Why?
After spending years working on a yet-unannounced indie first-person shooter, I was itching to work on something with minimal content overhead. So I deliberately chose a format which has virtually no art or audio expectations. This project is purely about programming and design, the two parts of game development I'm most interested in. I don't have any grand plans for it, just some loose ideas--I'm kind of excited to see where it goes!When?
I won't be targeting a final release date. This is meant to be a project that goes live ASAP and then follows the "release early, release often" methodology. I've been working on core tech for about three weeks now. Several of the fundamental systems are ready to go live, including the launcher/patcher/modder frontend, the entity component system, and chunk streaming/serialization. I'll try to get some simple gameplay systems and a first pass of terrain procgen done within the weekend, and will release the seed build after those features are done.Platforms
Currently, Second Order is a Win32 executable. In the long term, I would like to support Linux and Mac versions too. However, I'm writing the tech from scratch, so there's a lot of low-level OS-interfacing systems that I'll need to implement twice more, and I don't have any experience with those OSes. I'd consider open sourcing the project if some smart person could commit to porting to one or both platforms. Or if you would like to contribute to the "Buy David a Mac Workstation" fund, I'll make that information available later. Screenshots
There's not much to show yet, but here's what it looks like at the moment. Updates
Sept. 5: It's been a pretty productive weekend so far. I got the foundations of a procgen graph implemented and converted some special case gameplay code into a slightly less special case form. Working with a component entity architecture for the first time is interesting. I'm struggling a bit to make rapid progress, but the code I'm writing seems more robust and reusable than my usual object-oriented gameplay code.
Sept. 6: I figured out a good algorithm for distributing points sparsely and randomly across infinite terrain. That will help solve the problem of how to spawn entities procedurally (or rather, functionally--all my procgen is purely a function of the world space coordinates). I don't yet have procedural spawning implemented, but I've demonstrated the algorithm by dotting the desert biome with green cactus characters.
Sept. 10: In the last few days, I've implemented procedural entity spawning, entity collision detection and response, and a vision system.
Sept. 13: I added pathfinding on Sunday, but it was adapted from a navmesh implementation for a 3D game and didn't perform so well on a dense grid. I rewrote it all today with the grid in mind, and it takes about 6% of the time it was taking before. Success!
Sept. 17: The past few days have been spent working on destructible terrain. It now has a health value and reacts only to certain damage types. I've also done a bit of refactoring to make some things that were previously hard-coded be represented more generically through the event system, which was driven by the desire to update the player's vision cache when the terrain is altered. Next steps will probably be adding some non-sentient entities that can play with the existing systems. Probably exploding barrels. I can't resist them. They're so 'splodey!
Sept. 20: Exploding barrels are in, and I added some more kinds of generators this evening to support rooms and corridors. I'm not super happy with the first pass, but it seems like I'm on the right track and can get it to a better place with tuning. I don't think I'll ever have rooms as well-arranged as a good Roguelike, just because of the way I'm doing generation in a single purely functional pass. But I'm enjoying the challenge of finding ways to create features within that framework, and I expect the results to work well with the game I'm making.
Sept. 21: Spent a bit of time this evening in between drinking beer and playing DXHR to improve procgen interiors, and I found a technique I'm pretty happy with.
Sept. 24: Added map exporting. Not really a critical path feature, but I wanted to see a zoomed-out view of the terrain I was generating, so there it is!
Oct. 17: SecOrd work got derailed by real work and stuff there for a bit. And also, I was simply procrastinating. But I got AI behavior trees started yesterday, and I expect I'll have some enemies moving and shooting by the end of the week. I've been wondering if using modern game AI techniques is overkill for a game like this and if I could get away with much simpler routines. But as my goals for this project include a rich, RPG-ish simulation and robust, extensible content authorship, I think it is worth investing in more complex systems.
March 7: Well, it's been a while since I updated this. Things I've done since October: more AI knowledge and behavior work, some actual enemy characters, a bunch of work on export tools to visualize the procgen graph, player death and resurrection, some UI, better procgen for buildings, huge improvements to memory allocation patterns, frobbable doors, and more. And I've been able to use this project as a sandbox for whatever random project interests me. In particular, I've implemented Jump Point Search A*
, and I'm now prototyping a kind of social sim AI to explore more artsy ideas like what happens when a player tries to forgive an enemy instead of killing it.