Wednesday, December 27, 2017

Pathfinding

So... I've already done Dijkstra's pathfinding algorithm for other things, so it wasn't (supposed) to be a huge deal to port it over to the game, but like many things, plans didn't really survive contact with the enemy.

Basically, while that kind of pathfinding works nicely for small grids, when you're dealing with 500x500 boards, you're not going to be practically able to pathfind from one side to the other.  So I wrote a version to take a subset of the board and pathfind that, with the idea of stringing them together or using a node-like approach.

However, this turned out to be somewhat impractical to test in the game itself, even in the very simple form it is now, so I had to build a stub program to debug the pathfinding object:





Anyway, I think I've tracked down the major error (which had to do with expecting the coordinates passed in manner they weren't.)  I'm probably going to do a bit more research before I decide on a larger solution to the matter, though.

Sunday, October 1, 2017

Map Generation

To be honest, this whole project started off from playing/dabbling with roguelike map generation, and thinking "you could make a much more organic looking random map."  I'd say one of the more interesting recent takes on the matter is Diablo 3, which, while not really a roguelike, does do some neat level construction, in terms of stringing together good looking 3D set pieces in a random manner.

So, the whole project started out as generating ruined cities, and spiraled from there:





Our city has a number of buildings, in various stages of ruination, as well as roads and highway overpasses, and a river in this case.  Besides just building placement, the interiors of the buildings are constructed so that doors and rooms link up within them, as well as stairwells.  Although this example doesn't show it well, the highway has fallen sections which can be used to climb into the second level, and will have exit ramps linking it with ground level roads at appropriate places.

A close-up of the room generation (where cyan pixels are doors, and red is a shaft/up staircase)


Going vertically up a level, we see higher levels of selected buildings, as well as the overpass (orange squares are reserved spaces for special buildings (i.e. non-random map pieces that can be added))


Below ground, we have a drainage network linked to both building basements, and surface drains to the street.


Lastly, just an example of a different random city.  Speed is pretty acceptable on a modern computer, particularly if you offload generation to another thread, although item/person population would still have to be done at this point.


Saturday, September 16, 2017

Ascii Art

So, I recently finished the ascii art editor for this project, EditAscii, which I'm going to use for certain events/locations, to do some rough ascii art for the game.

Here's a few screenshots.  First, showing what's actually in game (we're still pre-alpha here,) most of the overworld generation is done (placement of terrain, sites, etc)





...and here's what an overlay would look like, when you come upon a ruined city or something like that:


Saturday, July 29, 2017

Background Work

Most games require at least a little background/support work that doesn't involve the primary application.  In particular, for this game, I wanted to a title screen and some vignettes of various encounters you have in the world, and places you go to.  However, I don't have any real talent at composing ascii art, which is something of rare talent to begin with.

So, I made two companion programs to help me with the task, AsciiConvert, which is already at 1.0, to create the ascii art from line drawings; And for further processing, AsciiEdit (Yeah, I'm not wonderful with application names) which is currently a work in progress:


Finishing those is kind of where my efforts are focused at the moment.  For my next post, I'll probably talk about some of the work already mostly done, which deals with level generation.

Wednesday, July 5, 2017

Let's kick this off






So... let's kick this off.  This blog is dedicated to the development of a Sci-fi Roguelike entitled "Damnatio Memoriae."  The general theme is post-apocalyptic, with an apocalypse brought on by genetic engineering gone out of control.  The core development themes, I felt, were creating a procedural world and quest line that made gameplay significantly non-unique each game, from start to finish; coupled with detailed, procedurally generated cities and ruins.

Most of the work done to date has concentrated on those two goals, and a result, the state of the game is more a shell than an actual game.  I'll post more about that in future days.

Just a few general development details:

Developed in Visual Studio C#
Uses a virtual text mode based on SlimDX