I like cheese
Ludum Dare 27
Ludum Dare 26
Ludum Dare 23
Ludum Dare 22
Ludum Dare 21
The BleuLlama Trophy
Awarded by BleuLlama on May 1, 2013
For LD23, I decided to go full-retro, and make a z80-based game that runs on Pac-Man arcade hardware. I’m not going to lie to you, I didn’t even come close to completing it, and I’m totally fine with that. You can see the “finished” product here. From there you can get the romset (mspacmab – bootleg spaceman, for reasons I won’t get into), the source, and the link to the google code repository that has my Z80 kernel which I used for it. Fact of the matter is, I wanted to do a Z80/Arcade rom game for LD, I did it, and I’m happy that I did. I think I may do this for future LDs as well, learning from each (failure) along the way.
I knew I wouldn’t be able to finish something in time for either the regular compo or the jam, but I wanted to see how much I could get done in time, without going out of my way to devote all 48 hours on it.
I was coming home from a work trip, so if you watch the time-lapse off of the link above, you will see that I’m actually working on it in an airport (in Atlanta, Georgia) as well as on an airplane, along with on the couch at home and at an office desk. I squeezed in as much time as possible.
The main thing that prevented me from getting (a little) further is that I was planning to spend evenings on the work trip i was on, in re-aquainting myself with the tools (assembler, z80 kernel, etc) that I haven’t really looked at in about 5 years. I also wanted to add support in my “Llemonide” z80 IDE/emulator, for building and better debugging. Instead, for various reasons, I was unable to have any downtime at all on the work trip to devote to this project. I was essentially going in to LD completely green on the subject. I spent a lot of time creating the project, remembering how my z80 kernel works, basics like that which should have been old-hat.
So what did I learn? Spend A LOT of time getting familiar with your tools. Do practice jams. Try to minimize the amount of boilerplate stuff you’ll be recreating to save time. You need to spend your time making your game, not fumbling with your tools.
Better luck and progress next time!
As a sidenote, all of the source for mine is available at the page for Tiny World ’82, along with links to the tools/kernel, and the romset. I have included instructions to running it within the Google Chrome browser, in case you don’t have MAME handy. Check it out and review it if you like. I’m just hoping for an non-zero score on this one.
In the past, I’ve made a few arcade ROM hacks, new Z80/Pac-Man hardware ROM code, as well as writing some tools that quite a few people have used over the past 15 years or so (AGE and Turaco). Being that this next LD is notable as being the 10th, I figured I’d celebrate by attempting to do an LD entry that is “retro” to the fullest extent that I can think of.
I’m going to do a 16kbyte “Ms Pac-Man Bootleg” (mspacmab) romset entry. I will provide an emulator so that you can play it in a web browser (or at least via Java) or you can drop the romset into your MAME emulator port of choice to try it out. (Note: This means I’m targetting that cpu (Z80) Memory Map (Pac-Man Arcade Hardware), Color PROM (MsPac-Man), etc. You will be able to burn the roms, and drop them onto real hardware to play this!)
I’ll be using my z80 kernel (some routines to simplify screen drawing, handling a coindrop menu, that kind of thing) which is available on google code here: http://code.google.com/p/bleu-romtools/ . (Also there are the graphics tools mentioned before (Turaco), as well as a slightly modified Z80 assembler, adding some things that simplify use in a constrained ROM memory map)
It should be pretty fun and very challenging! I invite any of you as insane as I am to pick your retro platform of choice (Commodore 64? PET? Amstrad? Sinclair? Atari 8-bit? Amiga?) and go for it for this one along with me!
I haven’t really been in a Z80 headspace in a couple years now, I’ll be starting this on the end of a work business trip ,coding in a hotel and airplane, then working on it while helping care for a toddler, and that the tools aren’t as advanced as for other platforms…
I’m sure my entry and effort will go down in a blaze of failure, due to so many things being against me on this, but I’m going to give it a try anyway.
It’s been a while since the coding portion of the compo, but I think that this will give me a better perspective on the overall picture from the weekend, rather than focusing on the details of it.
My game is“Alone In Space”
Last time (LD21) I did an iOS game. In the process, I spent a lot of time on just the boilerplate to get it working, and then the final product was only playable by people who had the iOS SDK. or a week later by only people with iOS devices.
The timelapse for this one covers the overall flow of creation, as well as the order that I made things.
Alone In Space — Timelapse
What went right
This time around, I decided to focus on game physics/feel before entirely fleshing things out. I think this worked out well for me, because it meant that I would end up testing the physics every time I tried out a new feature I had added; giving me time to hone it a bit more, making it more fun and playable.
After doing a mini compo with some friends; creating a clone of “Asteroids”, I realized a few important things, which I believe I got right this time around. First of all, I got ship physics that “feel” good. The ship has a nice bounce and pep to it that makes it more fun to play. Secondly,
The design of the ship was originally going to be more like this: But due to limitations, it ended up the way you see it. It was only then that I realized that with a very little bit of tweaking, it would look like a kitty. So I went with that. Blue Cat Ship!
This was my first time using an image file as a “map”. Once I got the first one in, it was trivial (sort-of — see below) to add more levels, just by drawing them up in a paint program. It made it very easy to add location-based features to the levels. A+++ WILL DO AGAIN!
I originally wasn’t going to display the map on the board, but after having it up for debugging, and my wife mentioning that it would make it more fun, I left it on there, just tweaking the display a little, to be more “finished” and less “debuggy” ;
I really like the way my “lightning” effect looks. The quick solution on how to accomplish it was spot-on, but my effort was clumsy. (see below)
What went wrong
I wish I had more time for level creation, or at least didn’t have to futz with multiple paint tools to figure out one which would work. I just assumed that Pixelmator would work fine for me, but it was too cumbersome to use for this project. I fell back on Grafx2, which I’d never used before, after Deluxe Paint failed me. Now, i’ve set up Deluxe Paint 3 for MS-DOS in a Boxer/DOs Box, so that’s ready to go for next time.
3 levels i think gives you a good idea about how it works, but isn’t really a “complete” game… whatever that means
As always, I could have used more time for balance. I knew that I wanted to have 3 gauges; red, green, and blue… I’m sure I could have worked out some other concept other than “food” and the way it affects the other two is… weird. I admit, that wasn’t thought out very well.
The Processing IDE is good, but once you get a lot of tags, it gets in your way more than it helps. I think I should have put similar classes all in one .pde file each, rather than one .pde file per class. The software engineer in me wants to have them separate, but the HCI designer in me wants them joined. heh.
Lightning. I spent a stupid amount of time to get the lightning working. I think this was mostly stubbornness on my part. I knew a way to make it work, but I just kept on having misstep after misstep… and after a while, I had devoted so much time to it, I HAD TO finish something just so that the time wasn’t wasted. I ended up coming up with an implementation that I think looks pretty cool.
In all, I think I did pretty well this time, considering time restrictions (helping care for a 2 year old, other family stuff). I’m happy with the accomplishment, and happy with the game as it is.
I’ve been looking at the LD compos for a couple years now, always wanting to do one, but due to various life events (generally, caring for my toddler) I was unable to join in. This year was different. We were on vacation, and would be driving home on Saturday. This gave me 5-6 solid hours in the car to work on it, so I figured, why not!
Once the theme “Escape” was given, I was instantly unable to figure out anything. I knew I didn’t want to do a standard, expected type of game… something predictable. And I knew that I would be writing it for iOS, meaning that basically 98% of the reviewing audience would likely not be able to rate it, instantly guaranteeing that I will not come anywhere near placing… which is fine. The reason to do this is to do it… to get my brain working… to get something accomplished… and I did.
I started thinking out of the box a little. Journey had an album called “Escape”, containing the hit “Don’t Stop Believing”. Seems like a good point to start with. But honestly, I didn’t really settle on this until Sunday morning.
I spent Friday night thinking about something to do, a game mechanic or somesuch. I also got the git repository started up, and came up with a codename for it in my current codenaming theme, cheeses. ”Raclette”.
Personally, I find that I can’t get started on a project until I have a name for it, and can start the source repository… so I started using code names with a cheese theme. It works for me. It let me get the project going, and got the process of naming it out of my head so that I can just start working on it.
Saturday afternoon, in the car, first I made an icon for the game, a fancy “R” for Raclette. I know this seems like the wrong order to do things, naming it then giving it an icon, but it was necessary for the way my brain works.
Next, I started up the Xcode project. OpenGLES template project, removed GLES2, added BL2D (my 2D sprite and tilemap library, released last fall), did other general GLES2 cleanups. Then I brought in the hooks for the BL2D engine, cleaned up the sprite and tilemap PNG spritesheets to bring them back to “font only” condition, to satisfy the rules of the compo.
Note: all of this is visible in the following timelapse video, 0:00 thru 0:23 or so.
One of the other things I added in the car ride was the game state engine. After working on “The 7th Guest: Infection” I came to realize that for the way I work on games, having the state engine in place earlier rather than later is very much welcomed. I had worked on a state engine for a game last week, so I essentially worked out a new version of that from scratch.
At this point, about 6 hours of work in, we got home. I spent much of the evening helping out around the house and unpacking. I got a few extra minutes in to integrate the tile/sprite engine a little more. I
Sunday, I was able to spend a lot of time in the afternoon to work on it. I managed to somehow clean the entire house, and play with my kid beforehand as well, so that was nice. While doing all of this, I thought about a game mechanic that involved clicking or drawing on the screen, and it color cycling. I wasn’t sure where it would take me, but I felt it was an ok place to start. It was also about this time that I almost gave up completely, feeling unable to finish in the time available to me.
Then it hit me. The lyrics to the song were the basis for the game. E5c4P3. Don’t Stop Believin. Streetlights, People. Escape the streetlights. You’re Steve Perry.. too specific. You’re Perry. Got it. People attracted to streetlights like moths. When you hit some streetlights they go out. There we go. Run around, hit streetlights, people attracted to them will scurry away.
I then spent a lot of time getting simple cheesy people graphics and a horrible streetlight graphic worked out. Horrible graphics are better than no graphics. By the time dinner rolled around, i had the basic mechanic of the game working, but no real goals or score or anything. My wife suggested that the guy gets zapped from the lights. Danger! Great! Then I added health bar in a half hour. Added a few more states to the game state machine for “died”, hook the state paths around, and i have a basic, mostly feature-complete game!
The initial engine effort i made was essentially abandoned, but I did use a remnant from it to do the color cycling background for the intro screens, so all was not lost.
So what’s left for it? I want to get it into the App store asap, so that people have more of a chance of trying it out. After judgment period, I’ll be adding in things I ran out of time to do: sound, progressively harder levels, more clever people, graphics for the “street” rather than just black, a time limit, and perhaps high score saving.
I know it’s not the best game ever, but I made it. I made it in about 16 of the alotted 48 hours to do it. I know I could do better, I know I have done better, but I started it, I did it, and I got it done. And I think it’s a fairly amusing stretch from the song.
And here’s the gameplay…
Link to the compo page for “Streetlights”. To build it, you’ll need Xcode 4 with the iOS SDK (included with Xcode 4).