Where we’re going, we don’t need UV maps!

So, after getting a decent level generator working, I shifted my attention back to modelling. I need to populate my levels with 3D stuff, and that stuff doesn’t just come from nowhere.

I spent a good chunk of time over the past week learning about UV mapping in Blender. I learned how to mark seams and unwrap that way, I learned about the smart unwrapping feature, and I learned about the various projection methods as well.

I have a decent understanding of the very basics. I am the farthest thing from a professional aside from people who have never used Blender before, but I get the general idea.

Case in point, something extremely simple:

column

So this column has some very basic geometry, making it pretty easy to unwrap and texture. Even still, I spent a ton of time on it. Granted, the majority of that time was spent learning and playing around with things until I understood how it worked, but a ton of time none the less.

Even if I got my skills up to a reasonably skilled point, UV mapping and texturing are no joke. They take a ton of work, and I have serious respect for people who can do it well.

So… I don’t want to spend all of my time texturing, so I’m going to sidestep the issue as much as humanly possible using vertex color shaders!

Vertex color shaders are often used in games that use simple “flat” looking 3D art. It basically looks like very early 3D models looked before computers had tons of memory for textures. Vertex color shaders have other uses, but I’ll be using them to drive the overall style of my game.

This will enable me to create simple models, do almost no UV mapping. It’ll also keep my game from looking like total garbage due to limited artistic talent.

So, with all of that out of the way. I’ve started creating some simple assets I can start building the game with, this includes our first enemy type!

imps

 

These enemies are tentatively called “Rainbow Imps”. They spawn in with random colors, and will charge at the player in massive hordes. They’ll be easy to kill, and will explode in a gush of goo that matches their skin color. The goo will leave colored chunks and splat decals all over the place. Basically once you’ve wiped out a horde of these guys, it’ll look like the most intense game of Splatoon ever just took place.

They’re obviously pretty basic looking (just a sphere that has extrusions), but they should be pretty cool looking in motion, and when huge swaths of them get destroyed. Once I get further along, I’ll have to go back and alter their design, but what I have now is usable.

Now that I have the models, I need to create some basic animations, and then work on getting their AI working as intended.

(Also worth noting: I have some basic level geometry in the shot, but expect it to get brighter and more lively once I start doing music visualization.)

Adjacent rooms

I’m pretty happy with the way this turned out.

The map generator is now generating adjacent rooms. I can have levels stay mostly linear, of have huge sprawling areas just by toggling a flag.Screen Shot 2016-02-13 at 6.35.03 PM (3)

In the first image I just let the generator run 30 passes over every room, and have them expand outward until the random number generator cuts them off.

Screen Shot 2016-02-13 at 6.37.43 PM (3)

In the second image, I still run 30 passes, but then stipulate that if a room had already spawned rooms in a pass, then they can’t spawn any in subsequent passes. This results in some slight deviation from the critical path, but it’s mostly a straight line to the end.

Screen Shot 2016-02-13 at 6.43.56 PM (3)

I can also just limit the number of passes I run to get a result that’s somewhere in the middle.

Each tiny square the map is made up of will be a hand designed piece that can contain traps, enemies, loot, and platforming challenges.

The map’s critical path

criticalPath

I now have my map’s critical path being laid out using valid entrance and exit routes for each room.

The white dots on each square represent that room’s possible entrance/exit points.Adjacent rooms need to have connecting entrance and exit points in order to be placed.

You can think of them like doors. Basically every time I want to place a room, I make sure that the current room can connect to the door of the previous room. I added the red line in Photoshop to illustrate the path that’s created.

My next step is to randomly add rooms adjacent to rooms that have other possible exit points that aren’t along the critical path. Then I will add rooms randomly to those new rooms and so on until I can’t spawn any more rooms.

These additional rooms may or may not loop back onto the critical path. I don’t care if they do, as long as I have guaranteed that the player can reach the end of the map. At some point later, I’ll programmatically make some of these rooms contain loot for the player, this will encourage them to wander the whole level even if they figured out the shortest path to the end.

Going back to basics with my map generator

Screen Shot 2016-02-12 at 11.47.38 PM (3)

It may not be as exciting looking as the previous maps I generated, but my new map generator is creating the critical path from a starting room to an ending room. I’ve got some bugs to hash out with it, but it’s a good start.

Each colored square is basically an area where anything at all can go. I’ll be hand designing unique rooms that can snap together to go in those spots.

Once I have the bugs with my critical path sorted out, I’m going to make each room have a chance to spawn rooms adjacent to it, kind of like a really basic cellular automata. It should result in pretty organic layouts. The rooms themselves also won’t all be squares, I’m just doing that at the moment so I can write the logic to lay out rooms.

This approach allows me to have a very high level of control over each room. The other map generation approached I looked at generated really cool looking maps, but actually designing a challenging and coherent first person action game using those maps is quite difficult.

One of the issues that other map generators I looked at was that the concept of a “room” was very loose, and it was basically any area that had a large number of empty tiles.

Those generators also created rooms and then connected them with hallways. I personally hate first person games with big maze-like corridors, so having a series of interconnected rooms will just make for better maps. I can also still have hallways with the system I’m building, it just means that I have to make a room that is structured to look like a hallway.

Overall, I’m stoked about the direction this is going.

Progress

So I’ve been spending a good deal of time learning the basics of Blender. The idea here is that I’ll be able to make my own models for gameplay and level geometry. I don’t have to get great results right away, I just have to get usable results.

I started by following “Your first day in Blender” tutorial series that’s found on Pluralsight. It helped immensely. Here is an early shot after only an hour or so with the series:

Screen Shot 2016-02-04 at 9.29.02 PM (3)

Then I moved onto making my first un-guided model. I chose to start with a hand, since my game is in first person and I’ll need hand models I can manipulate. I was kind of shocked at how far I came along in a short period of time:

Screen Shot 2016-02-07 at 8.38.39 PM (3)

It’s super basic, but I’m proud of it. Tonight I spent more time touching it up, and then I rigged it:

Screen Shot 2016-02-08 at 6.14.37 PM (3)

Screen Shot 2016-02-08 at 6.14.43 PM (3)

I’m sure pro modellers and people who enjoy topology that doesn’t make you want to vomit may not approve, but I’m happy with the results so far.  The last thing I did for the night was pull it into Unity and quickly get an animation going:

All is right in the world.

What I’m working on right now

So I’m focusing on a couple things for the immediate future: getting my level generation algorithm into a state that I’m happy with it, and learning some of the basics of modelling with Blender.

I currently have levels being generated using cellular automata, and then I’m using marching cubes to build the level’s walls. It’s very cool looking and interesting stuff, but it comes with too many limitations.

You get results like this:

12642693_10156462762870313_8067592277705696531_n

When I want results that look more like this (really bad) sketch:

Office Lens 20160204-201950

So I’m reading up and learning about different kinds of dungeon building algorithms so that I can pull this off.

On the Blender side of things, I’m basically doing beginners tutorials and trying to get some of the core concepts down. I need this to create proper hand models for my characters, building level geometry, creating traps, and making monsters.

All that being said, I fully expect my models to suck. They will suck hard. The good thing is that I want to have a retro-low poly aesthetic, so it will allow me to build much simpler models and maintain an art style.

You might be asking “why bother with an art style when you don’t have much?”, well.. The biggest reason is because I want to start figuring out the visuals now, and aside from that, I feel like I’ve been putting off learning Blender for way too long.

 

Disco Dungeon – A roguelike music FPS

Okay,so I almost never post here. It’s actually been nearly an entire year since my last post. I doubt anyone’s desperately waiting to see anything here, and honestly you probably landed here by some fluke. Anyway, I’m going to try and change that. Hopefully. Maybe. Possibly.

I’m working on a game in my spare time that I’m calling “Disco Dungeon”. It’s going to be a roguelike (or maybe the correct term is rogue-lite?) music themed first person shooter. It sounds like I threw a bunch of game concepts into a blender and this is what was spat out, but I swear it’s almost a coherent idea!

Here’s the high level rundown of what I’m working toward…

In Disco Dungeon, you choose one of three classes of musical wizards: the world manipulating Disco Druid, the battle hardened and blood soaked Metal Mage, or the charismatic and whimsical Pop Priest. Each class is associated with a specific genre of music, and that’s what you’ll hear as background music when you start playing. Each class will have their own set of unique attacks that can be customized and changed over the course of the game.

Players will delve into procedurally generated dungeons, fight monsters, dodge traps, and try to reach the boss creature at the end of it.

Music doesn’t also just dictate your character class, it also will affect the core gameplay, the visuals in dungeons, and even things like the timing of traps.

Players can fire attacks from the character’s right and left hands. Each hand will cast a different kind of spell. These spells are powered by music, this means that players need to time their shots with the music. Firing a shot perfectly in time with a beat will be far more powerful, than completely missing the beat. The player will also have a mana pool that will deplete with each shot, correctly timing a shot will cause less drain on the mana pool than screwing up. Mana will replenish very slowly over time, and through items found in the dungeon.

It may seem strange that correctly timing a shot would give you a more powerful shot AND drain your mana pool less, but this will encourage players to develop their skill instead of just spamming attacks.

The choice of class (and thus music genre) will paint dungeons in particular aesthetics. For example, the disco druid’s dungeons may be full of crazy lighting and flashing colors, but the metal mage’s dungeons will feel dark and gritty, with such things as stone slab walls that are held together with pulsing flesh mortar. All of these elements will react in time with the music, and aside from looking cool, will also give the player visual cues to help them time their attacks.

Some extremely early prototyping:

Dungeons will be lined with all sorts of devious traps that players will have to out-think and dodge. Some will move in time with the music, others will be triggered by the player. The player is expected to learn about these through personal experience and suffering, it is a roguelike after all…

Death is permanent and will be pretty frequent, but players will collect certain persistent items that will alter gameplay and give an overall sense of progress in spite of losses. They will have a central hub that will be built up over time to gain certain bonuses, and to receive some light narrative.

… So that’s pretty much it. I’m leaving out some details that I have stored in a GDD that I chip away at from time to time, but this should give you an idea of what I want to make. I think it’ll be a fun game if I manage to build it all, and there’s enough small pieces that I can work on that I shouldn’t get distracted with some other game idea in a month’s time.

It might also keep me from waiting a whole year to post again. Hopefully. Maybe. Possibly.