Another day, another sizetest

So there’s been some refactoring to how rooms are created, a new set of room tiles made a couple of weeks ago, the addition of some more realistic torch placement in the deep dark cave and it seemed like it was time to run my ‘SIZETEST’ map again just to get a feel for things.

The ‘SIZETEST’ is set to a base of 2500 rooms, far larger than anything expected in the finished game.  Currently, it ends up being 2674 rooms in the cave biome.  The base size is used to generate a rough estimate of a given maze/dungeon size, but other factors and randomizations will throw that off by a factor.  At any rate, clearly the refactoring has been good.  With only general logging enabled, it now only takes ~3 seconds to create that 2674 room behemoth pictured below.

That leads me to another thing that my day job should’ve taught me, but that somehow had been slipping my mind of late – logging is a resource hog.  Turning on the full compliment of logging nearly doubles the generation time.  Still, even with logging now, it takes ~6 seconds with logging.  Previously, the SIZETEST was taking closer to ~35-45 seconds to generate.  This is pleasing.

SIZETEST

Same map without the room-stage color coding, so you can see the lighting placement.

Screen Shot 2016-08-14 at 8.26.19 PM

Trying to figure it out – how to place items along colliders

In the first “Trying to Figure it Out” segment, I’ll share a question I posted on Stack Exchange.  Sometimes things just aren’t that easy to figure out, and crowd-sourcing an answer, or at least some guidance, can save huge amounts of time.

http://gamedev.stackexchange.com/questions/127998/programmatically-placing-objects-along-polygon-collider-2d

First entirely unique rooms in the game

Screen Shot 2016-08-03 at 9.31.22 PM

A couple of the first unique rooms in the game (interestingly this screenshot shows two of the same room – oops!) with lighting from a single torch.

Tiled and Tiled2Unity are both saviors, but neither come without a few major question marks.  Interestingly, right now every time I import a new room into my project, I have to reimport the tileset, even though it doesn’t change at all.  Not quite sure what’s up with that.  But it’s a minor headache.

I’ve switched to a properly top-down perspective player character as well.  It’s a place holder with no animation, but it gives a better feel for scope, motion, and lighting.  The movement script is a bit weak, and something funky is going down with the rotation of the sprite – sometimes he just rotates eternally for no good reason after coming to a stop.  It’s the joy of figuring out these little things that cause development time to increase.

Remember, great ideas don’t always lead to great code.  Hell, great code doesn’t even always lead to great code, and first attempt code is rarely great.

Base ground/dirt/cave tileset

Oddly, the thing I found most difficult about this was using Pyxel Edit to actually put the tilesets together.  Not that PE was a problem, *I* was a problem.  I ended up overwriting some tiles here and there, then creating duplicate tiles as I was moving between the editor and the tile set itself.  But, the lesson is learned.

Cave/Dirt Tileset Base
Cave/Dirt Tileset Base

For anyone interested in the process, I started with a “dirt” image from some other tilesets out there, edited it a bit in Photoshop CS4, brought it down to 64px x 64px (since that’s the “unit” size I’m using in Unity) and used that as the base.  The darker dirt color was that base.  For the lighter dirt, I lightened the tiles or selections from the tiles by +30.  For the cave walls I darkened the selections by -70, then ran Photoshop’s Sponge filter with settings of (0, 0, 8).

Beyond the base full dark dirt tile, I mostly worked in a 3×3 grid with a feathered mask that ran from 32px in and over to 160px back and down, making a sort of rounded, feathered area that blended from a midpoint 32 pixels into the edges.  This helps ensure that all tiles will fit together nicely and look decent.

For the diagonal tiles, I overlaid opposing corners, used the polygon lasso tool to cut across the opposite diagonal, merged the layers down and BOOM!  There’s a diagonal tile.

The sections at the very top center and bottom center are where the three types of terrain blend together.  I’m fairly certain that I’m missing a few combinations, but this should be pretty good to start.

For anyone looking to work in tilesets and the like, Pyxel Edit is a GREAT tool.  And I think it costs about US$9, so it won’t break the bank.

Torches and particle systems

Well, for now I’ve decided that I want to do a truly top-down (TD) graphical style.  I think this suits me well since I am not an artist.  Hotline Miami is a good example of this, as opposed to a traditional isometric “top-down” view that is common in RPGs.  So, I’ll need to make some new placeholder graphics for the main guy, but at least it’ll give me a lot more freedom with the tilesets.

I was considering how to make TD torches with a particle system.  I recently saw this video on Unity particle systems by the awesome Daniel Moran over at Makin’ Stuff Look Good in Unity.  Oddly, making a decent TD torch isn’t as easy as I would’ve expected, but it wasn’t terribly difficult.  I also have a script attached that adds a flicker-type effect and also slowly changes the color of the light generated by the torch, lerped across a gradient over time.

So, this is what the torches look like currently:

It’s a work in progress, but by all means leave a comment here or on Facebook if you have any comments, critique, or suggestions.

Things that go bump in the dark – aka if we only had a grue!

So, the first step in fleshing out the map is to add a boss.  Currently I only have one prefab creature (yet another placeholder…  YAP), but I’ve been playing with materials to ensure that the standard dungeon is dark and scary for our Labyrintheer.

Screen Shot 2016-07-23 at 3.27.13 PM

A bud guy lurks in the darkness with only our Labyrintheer’s aura to shed some light on the situation.  I’ve disabled global illumination for the dungeon and fixed all of the materials so that they don’t light up on their own – an issue with Tiled and Tiled2Unity’s default shader.  Currently I’m just using the standard shader.  Next I’ll be placing torches here and there around the dungeon either as it generates or post-generation (not sure what makes the most sense quite yet).  I also plan to add height maps in and create a LoS component so we don’t see through walls.

Hopefully this will be a productive weekend.