Last week: 1GAM August Update 1: Setting up the basis
Last week I left you all (0 people) off with a reaaal cliffhanger. I promised to make some art and do some planning. “Planning!” I hear you all scream in excitement. That’s some interesting shit, lets hear about that. The dude abides:
So for planning I basically set up 3 catagories: Code, Art, and Design. I notched down every single thing, I could think off that I might want to put in the game and sorted them into these catagories, which ended up looking something like this:
“Wooow, slow down there buddy, it’s getting hot in here,” the voices in my head said in unity, and yes it is getting hot, but those dummies don’t even know that it’s just my pc. Any-who putting it all down in text actually made the project a lot more manageable, which is great because it wasn’t before? I guess.
Ok, now some of the actually exciting stuff, that you all came for. The ART! Oh, the art. So, art-ing is not my main craft, which definitely shows. So art became a question of how best to cover up my terrible skills so of course I went with my trusty old friend; pixelart. Only one thing. I hadn’t actually made any pixelart for a long time, so somehow I was terrible even at that. I tried out a bunch of styles, but nothing felt quite right. I realized that I just couldn’t nail down a decent palette, so in the interest of… not doing that at all, I went with 1bit aka 2 colors. Black and white. The simplest palette, yet very versatile. This made art-ing a little easier and soon I was drawing decent shit.
That’s some art! Drawing the art was actually an incredible positive experience. It almost seemed to come naturally. There’s something about being limited, that makes me more focused. Probably just the fact, that I only have to think about 16×16 pixels and 2 colors at a time.
I started by drawing characters because I’m a bitch before going on to make some of the level-stuff, like walls and grass. Happy with the results I started getting ideas. I made some water, bridges etc. The feeling at the end when I plugged it all in and had something that looked decent. My lord!
I had some art down and I felt rather good about myself, even tweeted about it. PLUG!
— Hjalte Tagmose (@hjaltetagmose) August 12, 2017
As you can see the movement is a bit… static… So I decided I needed some animations. The thing about animating though, is that its really time consuming and I’m really into not consuming time, since I have a strict youtube-watching schedule to tend to. So I felt a little bit like a walk animation wouldn’t be necessary considering that the game might actually spend more time standing still, than moving. After drifting away into twitter-space for a little while I found something, that was quite applicable to my situation. This tweet. PLUUUUUG!
boss room pic.twitter.com/bCC1If4Lbq
— Ben Lamps (@lompsy) June 17, 2017
Immediately, I started crying because oh my god that looks so nice, but then I got over it and started making a little animation.
It kinda looks like he’s doing a little dance. Eh good enough. Anyway on to the enemies. This was where the trouble came in. So, the enemies are skeletons aka they have a lot of see through space in their bodies, where their ribs are and such. This made it somewhat difficult to tell what was an arm and what was a rib. I made a few different animations, but none of them really looked that good. In the end I decided to use the second one pictured below. It looked pretty decent in game and while moving.
Anyway I’m gonna segue into coding now, so watch out! After having a decent level, I needed something to interact with. I mean I’ve been killing the same two enemies for 2 weeks! So I drew some doors, levers, pillars (that come out of the ground!), crates and so on. I wanted to be able to push things, open doors, activate stuff. I put everything into the game and made a simple Activator- and Activatable-script. Despite somewhat confusing names, it worked out. I also decided that doors would have a locked state, which meant some more finagling. In the interest ofkeeping my scripts somewhat tidy, I decided that all keys would work on all doors, as in Zelda. So, I had locked doors, normal doors and just open doors.
Now I wanted something more excited. Time to break out some pushables and something. The rising pillar was set up in the matter of seconds, due to my reasonable code. The pushables would end up being a bit of a problem though…
But hey, wow, I think we’re getting ahead of ourselves a little bit. How am I even keeping track of all this? The clever reader might think to himself. All these things changed between a walkable and an unwalkable state, doesnt that mess up all the AI and stuff. And the answer is yes! It definitely did, until I used my megamind™. So, firstly we need an easy way to see what is walkable and what isn’t. I did this by drawing black and white over the grid, buuut since the whole fucking game is black and white now, that’s not really reasonable.
Bam! Okay, so next I had to make a way to switch a tile from walkable to unwalkable. This was actually quite simple since the grid system was made to be easily manipulated. I simply made a function that could change the layer of a given object to unwalkable/update the grid and called it every time an object with that need was activated. Wow, crisis averted. That was easy.
But lets get back to those pesky pushables. I told you they’d be a problem. Basically the tiles, they inhabit have to remain walkable or the player can move there (and thereby push it (push it real good)). Of course they werent a problem for the player, but the enemies started getting real confused. I realized that I needed some kind of really complex way to solve this, but because I’m a lazy piece of shit and since I was already littering all my code with quickfixes anyway, I just made them avoid it. So enemies cant push walkables. Eh seems fine to me. Besides I’ve also realized that my AI is way too smart and I’ll probably end up using goomba-like AI instead, so it doesn’t really matter.
“Wow, I hate thinking about tiles and walkability,” I sighed as I pushed a pushable over a lowered rising pillar… Fuck. So what happens when a piston-like object pushes out of the ground right under a crate? If you answered it pushes the crate up/away, then fuck you. Yeah it didn’t do shit and I realized I’d have to make some kinda solution to take care of it.
Thankfully due to a well prepared grid system, the solution was simple. Simply get all the neighbouring tiles of the tile becoming unwalkable and push anything on it to one of those. I also smacked an if statement in there to make sure the tile wouldn’t already be unwalkable it self, which means you can technically still wall something in and push a pillar up their arse, but I guess I’ll just have to design around that.
I actually just found a bug, while writing this and I had to just fix it before I could get the gif. This involved clumsily rewriting the turn manager, which is the foundation of the entire game. Hopefully that wont give me any problems later. Anyway the main mechanics of the game all seem to be rather done, save the new enemies, and this would be about the time, I’d throw together a few levels and call it a day, if it had been a game jam. It isn’t though and I still have two weeks. This is the chance to make something more than another jam-game and I have to take it.
Conclusion time! I did a bunch this week and I feel good about the current progress I’ve made. That being said there’s still a lot to do and I’m probably underestimating the amount. Until next time I’m gonna be making more enemy-types, bosses, level design and possibly some story-stuff? Well, that should be everything. All 1430 words of it. God, no one is ever gonna read this. See you all (0) next week!
-Hjalte Tagmose (@hjaltetagmose)
Unity Developer, First of My Name, the Unburnt, King of the Andals and the First Men, Khal of the Great Grass Sea, Breaker of Chains, and Father of Dragons.