psychic_ash

Ludum Dare 45

Time Managment

So far, I have a written plan, a story, an index of images needed (thank god for color variations), a running list of sounds inside my head (get to that last), and a very clear image in my head of the final product. Godot is up and running and the player base settings are set. Placeholder images have been made. Soon on to level building and pregame logic.

First dinner with family and move night before bath time and bed. Well bed for everyone else, for me... designated programming time.

Finished

So this is my first LD and only my second game jam to actually finish. The first... I don't think we really finished as the game didn't work. This one works and it's submitted and while it doesn't have all the bells and whistles I would have liked to stick in it, it does have a few that I'm proud of. I've only been using Godot for about a month and I still have so much to learn. This weekend was a really fun time. I look forward to playing everyone else's game over the next few weeks.

Looking back over LD 45

Originally I had planned, since the main layout of objects in the stores is randomly generated as is location of the tank, and the structure of the store is fixed, that I would make a large mall. The store in the game I submitted would be the easy skill level, a smaller level with a tutorial walk through, a medium skill level that would encompass a wing of the mall and then expert which would be the whole mall. Given the area the tank affects grows the longer it goes unfound, that would be super challenging. I also wanted to add bodies randomly (but not too common) throughout the store as well as random decorations, mirrors near dressing rooms, sales signs, splatters of blood on a wall, air vent (which I actually planned on using as a hiding place). In fact all of the art for those was created and is part of the sprite sheet I used. There was just one small problem.

I am a father of two very active children and am married to a wonderful and understanding woman.

Unfortunately, I had forgotten to tell my wife about the jam. Anyone ever forget to explain that you have this timed event that requires all your focus and energy? I don't know why I thought, with everything that she had planned for that weekend, that I could do any quality level of work.

Friday, the theme was announced on Twitter and I got to see it about an hour late due to wrestling with dinner and collecting the family redbox movie. While everyone was formulating their ideas in front of their thinking spots, I was being treated to Lego Movie part 2 for family movie night. I always enjoy my family's company but even without the game jam inthe back of my mind I did not enjoy this experience. :P First movie was way better.

Once the movie was over, I spent a few hours of quality time with my wife discussing her new found interest in wood working. While I certainly enjoy my wife's company and enjoy her enthusiasm in a creative endeavor, the clock kept ticking. Finally it was about 1 in the morning and she wanted to sleep. I had other plans. After everyone was asleep I was up till 3 or so working on this. Then the next day up at 8 in the morning, made the kids breakfast and then tried squeezing out a little time before my wife(thank god she likes sleeping in) woke up. Once she woke up, the day hopped on the treadmill and ran my butt into the ground. We met up with my brother in law and went down town for the annual Halloween parade. Six hours later and we came home so I could make dinner and we could chit chat over food and enjoy family company. While I very much enjoyed all of this time with my family, the clock kept ticking. When they finally left, it was officially Sunday.

The rest of the night I worked until I couldn't keep my eyes open. I managed to get the procedural system down completely for all the elements that I wanted. I went to sleep and woke up around 9 the next morning. I spent most of the day working on art and trying to convince myself not to try to add new features. Sunday evening came and the idea of submitting for Compo slipped from my fingers. So I was determined to submit this for a jam entry.

Monday, wife at work, kids home for fall break, I worked and worked and managed to get the game finished in at least a rudimentary and playable form. Total time working on it, 24 to 30 hours, estimated.

While I would never make excuses for shoddy coding, poorly executed art, or just missing a 1 or 0 some place, I'd like to point out the miracle that this game got made at all and on time.

Lessons learned kiddos, make sure to communicate with your spouse/SO well before hand. LOL

The important thing though is I've learned so much and it's been a pleasure getting to play all the games I have. I will continue trying to playing all the games that I can. I hope everyone had as much fun as I did.

Ludum Dare 46

LD-46 - The aftermath

I learned a lot from this experience. Well, I think what I learned more is recognizing how far I've come. While the game I made wasn't perfect by any means, I found that somewhere along the way I've been developing this skill to recognize and adjust for, scope.

Last week, my work was incredibly busy. Thursday afternoon, I finished my work and had dinner. I sat down to my newly acquired Game Maker Studio. For years, I've been programming in python and pygame. I love pygame and the control I get from it. However, I had updated my python to 3.8 and pygame to 2.0. Unfortunately, I haven't been able to find a good exe library for those versions. A friend of mine told me, after the jam, that he had found one. That's great. But the day before the jam, I was looking for alternatives. I'd used godot before, which I love. For me, godot is probably the best 2d tool out there. Unfortunately, my laptop, with it's on board video and lack of video ram, tends to lock up using godot if the project gets bigger than say... the main menu.

While I could wish for a better computer, I decided to keep looking for something that would fit my limitations in this area. I revisited game maker studio 2. I had used gms once before. I fell into the trap of thinking somehow that it's not a good tool or that somehow you can't be a "real" game designer if you use it. Over time though, I started to realize that I have a number games made in gms and that there are many successful games out there that have been made in gms.

I own and enjoy "12 is better than 6", and "Heat Signature", and "Spelunky. I've marveled over games like "Blazing Chrome", "Hotline Miami", "Downwell", and "Katana Zero". Don't get me wrong. I am not trying to defend game maker studio or my decision to use it. I did, however, have to defend it to myself.

The bottom line came to this central idea. If I could make a kick ass game out of some string and a paperclip I would. It's not the tool that you use. It's how well you use it. Have the time, most people can't tell what engine something was made in and they have to look it up. So I started fiddling with it and within 24 hours, I had made "Office Escape". I submitted it to a game jam that same night and won. While it's got it's problems, it was really good for 24 hours worth of work. Something dawned on me.

Prototyping, because that's basically what we are doing here, is difficult. Getting something up and running from scratch and embracing that core concept is a difficult task. With python, even with boilerplates and working with multiple people, it takes a lot of time. I'm not saying you can't do it, you certainly can. It just takes longer. For me, why use that time for accomplishing more in less time? Maybe that's just me. Maybe I just click with this set of tools, I've fallen into a rhythm but here I am.

So I waited and Friday came around and the theme was announced. Let me say this. I love themes because they give a really nice box to work within. People keep saying think outside the box. Nah. Make my box small and let me come up with interesting ideas to meet the boxes criteria. Constraint breeds creativity. I love them. However, I hate themes. This one was announced and I just shook my head. There are some themes that pop up and I have a million ideas. I had nothing.

I got on my white board and started writing down all the things that are kept alive. People, organs, batteries, plants... the list ran on.

I had a brilliant idea. A game came to me from this list so I erased and started flushing it out. Part of my creative process is flushing the game out on paper, or in this case whiteboard, and I try to find the primary game play loop. I did. I wrote down all the bits and bobs that would be in a polished version of the game, a commercial release if you will. That's where I start. Then I cut and cut until I don't recognize it as a game and put the last piece back. Normally, I have the primary game play loop. While I could have done this game, it would have been shit. So I will work on that later and give it the time and attention it deserves, should it prove still amazing in the future.

I flushed out 2 more ideas the same way and both were scrapped. The main reason I scrapped these 3 ideas is that what I would end up with at the deadline would be crap because the list of things to do for the primary game play loop was too long and beyond the scope of two days worth of work. I realized that, by experience, by knowing my own abilities and limitations, I am able to better gauge the scope of work I can accomplish over a weekend and be honest about it.

Finally, I took a break and came back. I thought about Tower Defense games. I love TD games. The basic premise of most is protecting something or keeping it alive. I liked the idea and it fit the theme and I felt I could do it in a weekend. My issue was more that most TD games work by invaders marching along a path to the other side of the screen or to a fixed goal to hurt it or steal from it. I wanted to make it more dynamic and place more emotional investment in it.

What if, like the goblin tales of old, they were coming away to steal the children. Like the pied piper of Hamlin they would come and lead the children to an unknown fate.

I started out by first creating some place holder structures. I made simple squares with different colors for the towers. Plain green squares and brown squares for the grass and dirt road respectively.

I've always struggled with the idea that you do the game play first but you need visual feed back. So you need some kind of art before you can make the game play so you can then make the art. I have found simple shapes, simple colors, and the occasional letter or number on the icon work great for placeholder graphics when you need to tell one apart from another.

With that done, I made the spawn mechanic. Simple timer with an instance create at the end. The enemy's would be assigned to a path. I made the path they would follow. This was amazingly easy in game maker studio and didn't work at all for my purposes. I assigned them none the less.

You can very easily create an object, be it an obstacle, power up, enemy, anything and have it follow a path. Here's what I needed. I needed the enemy to follow the path. Then I needed it to see a house and see if there were children inside and then go collect a child and then return to the path and work it backwards.

Speaking from a programming standpoint, and I'm sure this is not the best answer for this, I had the enemy save the x and y when he identified the target, being a house with a baby. I told him move to the x and y of the target. Once there, if the number of children in the house is greater than zero, take one and subtract one from that number of children (the property of the village house). Now he gains attribute bkidnap. If he is not on the path and has the attribute bkidnap, his job is then to search for the path and record the nodes in an array until he gets to the closest path point. Once he has the closest path point he follows the path in reverse, heading back to the start. I had to add the path points to the front of the array as I scanned them for this to work.

I had to add in what happened to the child. I didn't want to make the child it's own object. This was a mistake I believe. It was just easier, in my head, to pass around an attribute. Villagehouse.baby = true as long as babies > 0. If enemy reaches villagehouse.x and y and villagehouse.babies > 0 then villagehouse.babies -= 1 and enemy.b_kidnap = true. Easy to pass around a variable like that. Eventually, for the baby to go back to it's home if the enemy soldier died, I had to record the house that the baby was taken from in a variable on the enemy and when it died I had to reverse the process.

I took a break, did some art. I tried to incorporate a few more features but they were clicking so I polished out the bugs that I could and uploaded it.