Witch Contractor Has Enough Ratings Yet Still We Pine For Your Attention (I)
LD51 is drawing to a close and our game, Witch Contractor, has the requisite ratings to score, yet still we pine for your attention. And you know why, don't you? After all, we are all here who have done the same thing and even those who think (wrongly!) that they have birthed an abomination can understand that this is a hunger that cannot be sated. However, if my attempts to pander for clicks is too blatant, I fear that my post will be shunned.
So you want substance in this blog post and I want you to play and rate our game. A transaction then. I offer you an accord: play our game; make our fell child's numbers go up higher, and in exchange I shall show you a glimpse of the spaghettal abyss from which it was spawned.
We didn't make it clear but the fiery pink halo is her actual hitbox.
We decided from the start that we would focusing on presentation rather than being different this time around. (Somehow, our 4th game half a year ago, scored 31st in Innovation, which I don't think we will top for some time.) Hence, Witch Contractor is a dumb shooter. Your character faces the mouse pointer, you hold down the button and shoot at things that go zot once you reduce their hp to 0 and you have to do that to all of them fast enough to not game over. The one thing that maybe sets this thing apart somewhat is scale.
Firstly, mobs. It has 11 enemy types and the progression to support it made possible by decent architecture. My partner in crime @alpacalypse has explored this a bit already: https://ldjam.com/events/ludum-dare/51/witch-contractor/solid-architecture-builds-big - I was that horizontal developer. I don't really have a chance to code outside of LD (nor make sprites or music) but the five jams I've been on are where I've learned those things. It's hard for me to solve problems from a blank slate but once I've got a model, I can reproduce it. During most of development, we had three mobs. By about the middle of the second day, Alpacalypse was calling for about four mobs. I was pixeling a clock with squiggly lines underneath it.

I then pixeled up seven more mob sprites, including the infamous Orange.
*Oh how many of you tried to collect it, only to hear the playerdamage sound and find your life hearts draining away. Delicious.*
At that point, I couldn't implement a mob easily - I didn't know how - and our lead programmer was busy with the main game so the issue of how many mobs (and progression) we would have fell to the wayside for the time being. In the end, Day 2 produced a number of things that didn't get implemented like a directional bullet and various ideas coming from me (I wanted beams!) but since I'm not really a programmer, it's hard for me to make things real while the real coder is busy. Not impossible like it would have been two or three years ago, but difficult. I imagine ours isn't the only team faced with this sort of project management issue, especially when I see larger teams that have a lot of sound and art folks but like one programmer who must be absolutely busting the whole way.
So let's fast forward. It's middle of Day 3 and we have 10 hours left.

At this point, the Dome shoots but doesn't move and doesn't have the movement code. The Tentacle doesn't move. The Blob does move and has the damage on collision and doesn't have the code to shoot even if we wanted it to. They're also different types of things - either Area2D or KinematicBody2D (Godot folks will know what those are). So basically that was a mess and our programmer hasn't had time to fix it yet. I do have time though, so I was going to have to fix it. I tore out all the code from each of the mobs and turned it all into a class.
For all of you proper programmers, a Class is probably just second nature. I'm not a proper programmer. I've been exposed to code for five LDs and a few other occasions and can search documents and copy and paste. What does that make me? I don't know but it took me about half an hour to go from having an inkling that such things were theoretically possible to putting it down in a working form in Godot. I then spun up my seven additional sprites into new mobs. They are still based on two abilities of course - whether or not they follow the Witch, and whether or not they shoot - but they look different and have different numbers. In the end, we went to having a problem that had to be set aside for over a day to the point where, about three hours from release, I decided that we needed an eleventh mob to satisfy the progression through forty levels of play so I just casually doodled up another sprite and then just spun up an eleventh mob in minutes. This was the Flower, which was the last to be added to the game and filled the gap between the early game Dome and the high damage late game Prism.

So for all of those teams out there with multiple talented artists, many of whom don't think they're programmers but have been exposed to code repeatedly, but relatively few programmers, this might be your ticket to scale. Take the time to make this stuff easy and try to leverage the people in your team who might have spare time but can't contribute with just notepad. You just might end the jam with more coders than you started with.
I think for the next post, I'm going to talk about the level generation but now it time for you to seal our pact. Come! Fulfill your end of our bargain and play Witch Contractor: https://ldjam.com/events/ludum-dare/51/witch-contractor


