SDC

LD 40

Original "I'm In!" post

It's been a few years since I've participated in LD, but I'm pretty hyped to get back into it! Hopefully, I'll be able to actually finish a project this weekend.

Tools

  • Love2D for a framework

  • GIMP for drawing

  • Zerobrane for code writing

  • BFXR for sounds (people still use that, right?)

Hmm...

I have only one thing to say: Gnome_Fortress.png

Prepare yourselves for a revolutionary gaming experience.

Gnome Fortress update 1

It's taken an embarrassingly long time to figure out how to do things in GIMP, but now I've got little in-game Gnome fellas! gnoms.png

With the long time it took to smooth out the concept, sleep, and figure out how to do simple things in gimp, I haven't gotten around to much gameplay yet, but I'm getting there. What do the different colours do, I wonder?

Gnome Fortress...

...is (and it's development was) an absolute trashfire. Hubris combined with a small amount of time do not make a great combination. Had some hardware problems at the very end, too, which probably put the final nail into the coffin for this project.

It was a great 48 hours though, first time in a long while that I've participated in Ludum Dare, had an absolute blast. A fuller post-mortem will be written later.

LD 42

An Original "I'm In!" Post, Wherein the Author comes up with a Sarcastic Title

Well, the last time I entered this compo (LD40), it was a complete trashfire. Problems managing objects well, combined with hardware failure at the very end sealed the deal. But I feel like this time is going to be different. I've been learning a lot lately about the finer details of LuaJIT, and I want to try to utilize fully its FFI/JIT compiling to the maximum. As per the rules, I am declaring some base code to help set me up so I don't end up having problems like last time. The following modules include: - An object creation/management system, similar to an ECS - A library to simplify checking for user input - Some trivial debugging and utility functions - Some trivial FFI-related functions

The comments are sparse, and there is little to no documentation, but you can find the scripts here. Here are my full stats: - Language: LuaJIT 11.0 - Framework: Love2D - GFX: GIMP - Sound: BFXR and possibly OpenMPT for music, if I get that far - IDE: ZBStudio

Best of luck to everyone!

Post-Mortem: Experimenting with LuaJIT is fun

This LD was much less of a trashfire than last the LD: I actually finished a project! (Even if it is majorly butchered compared to the original designs for the game).

The Good

  • I had two major goals for this LD: I wanted to learn how to best use LuaJIT with Love2D (by experimenting with code architecture) and I wanted to experiment with LuaJIT's FFI by utilizing C types and data structures near-exclusively. I accomplished both of those things, so well that it has actually convinced me to change how I approach programming with Love2D. I might write a post talking about how to best utilize LuaJIT fully with Love2D, if there is any interest, but it's a bit out of the scope of this post.

  • Among the effects of using the FFI was, paradoxically, faster code writing. Having to consider what size of data to use put me in a headspace that really ended up speeding up the design of the code. It's kind of weird, but I got into an amazing flow for the first quarter of the compo.

  • I liked my art. It isn't particularly good, but it utilizes the NES palette, and I had a good time making it. A lot of the art assets actually went unused, in the end, but that's how these things go.

  • I did most things counter to how I might usually approach programming stuff. This made things interesting, both in good ways and bad ways.

The Bad

  • I'll be blunt, this theme wasn't my first choice, nor my second, third, .... It took me a while to come up with a game idea.

  • The game ended up being way less than what I had planned. The original plan for the game was to have it be set up arcade-style, where you'd have different levels, and you'd mine for stuff with a limited inventory. What you mined would change your score, and you'd need to meet a specific score to proceed to the next level. In-between each level, you could use the stuff you mine to make better equipment, but it would deplete your total score (which means you'd need to get more stuff in the next level to make up for the stuff you spent). If time permitted, you might have had enemies that could have actually hurt you by lowering your score, or something similar. That core design felt solid, and I think what the game became pales in comparison to its original design: you collect jewels, try to get the highest score. Even now, after not being able to hack it, I still feel like the game I wanted to make wasn't unreasonable in terms of expectation.

  • I really wanted to get around to sound/music design in the game, but I never ended up having the time to.

  • Using the FFI introduced some bugs I'm not used to dealing with, including segmentation faults and other related memory errors. I even had my game dump memory contents at me at some points, which was genuinely frightening! These errors were, thankfully, mostly easily solved.

The Ugly

  • The thing that went the worst was probably in the middle, I decided to experiment a bit with how I'd handle the level. Normally, I might just have solid blocks (or, in this case, the stuff you can mine) all be individual 'objects', and then use some form of bounding box collisions mixed with spatial hashing to make it all run smoothly. This go around, I had the idea to instead represent the map using a C struct of two-dimensional arrays with one 8-bit value and one boolean value: the type of the tile, and the light of the tile. And then, the array number could act as the x and y position of every tile. I was surprised as how well this ended up working, and decided that I'd just do grid based tile collision.

  • This worked really well at first, but things got a little wonky since the character's position was a 16-bit integer, and the tiles were 8x8. This shouldn't have been difficult, but I started having bugs, mostly the character would get stuck along walls, which seemed impossible to me but there must have been some sort of typo in the code. After a good while trying to debug it with no problem that stuck out to me in the source, I decided to instead just re-write it. I then ended up with one of those errors that programmers have nightmares about: I would segfault at seemingly random points. In this case, if you were to go directly to the left as soon as the game started, it would segfault, but otherwise it was fine. I could not, for the life of me, figure out why this ended up happening. I'm still not 100% sure what the problem was, but I was able to fix it by changing some of the code around that allocated memory (I've been using the FFI to manually allocate the memory using malloc). I was incredibly burnt out after spending so much time trying to debug the program, and was horrified upon learning that I had spent almost 6 hours in one sitting debugging this in my game!

  • This was the principle error this go around, focusing too much on fixing a bug, and burning out. With LD ending earlier than usual, I decided that if I went to sleep that night, there would be no way I could finish any game, which was true but also made the rest of the compo really unpleasant as I had to fight sleep deprivation plus burnout.

  • At the very end, and I'm talking like I had to fix bugs in the submission hour, and I discovered this about 10 minutes before submission hour ended, I discovered a bug in my controller/keyboard input engine which made controlling the game via keyboard impossible, a bug I never caught because I developed using a controller. I ended up having to re-program movement very quickly (thankfully, the game only requires 5 buttons). I submitted the game with about 3 minutes to spare.

Overall, an extremely fun experience. I enjoyed myself immensely, and I'm extremely thankful for the opportunity this event and its community provides, both as an excuse to just make something, as well as making me approach game making in new ways that forces me to grow.

Notes for the Future

  • Create more of an engine to use; I used an ECS-like and an input engine, which both worked well for the majority of the time, but I should have engines for collision detection as well as drawing stuff (post-release, realized that the screen was stuck at a tiny resolution and had to figure out a way to resize everything and have it all still align properly). Spending a lot of time on these things was unnecessary and ultimately just took away from adding more mechanics to the game.

  • Don't hyperfocus on buggy code; if it's too buggy, just rewrite it or try to do something different.

  • Don't do six hours of fruitless debugging (in retrospect, this one seems kinda obvious...)

  • Come up with a better road map for the game's development, I think this would have made a big difference in terms of final game content.

  • Write more posts during the compo. I won't give myself too much trouble for this, since most of my time was spent on the project, but I think it's good to get feedback from people as you work on your project.

Thank you for reading.

Ludum Dare 46

I'm in!

Been a real HOT MINUTE since I've last participated in Ludum Dare, here's hoping I can make something worthwhile this time! Here is what I will be using:

Language: Faux (a little language of my own creation, compiles into LuaJIT's bytecode)

Framework: Love2D 11.3

Sound: BFXR for sound, and probably openMPT if I get around to making music (I never do)

IDE: None, just Vim

Hoping I can use this event as an opportunity to test out Faux, see how well it can handle an active project (I made a little test project with it back in November, but it was a pretty barebones). additionally, I will also be using a library of my own creation, which deals with: 1. graphics management 2. controller/keyboard input 3. game states 4. loading levels 5. simple collision detection

The compiler isn't open source (or meant to be used by anyone other than me, really), but I will try to provide a means of compiling the source when it comes time to release the game. The structure is very similar to Lua, so it should be pretty clear what's happening if you're familiar with Lua.

Good luck to everyone!

Well, I can't say this theme was my first choice

Or my second, or third, or...nevertheless I've had a fun idea anyway, which is what matters. It doesn't seem like it's too original, looking at other posts, but I think it'll be fun, here's hoping I don't bite off more than I can chew! Good luck to everyone else!

Finished preliminary design

Don't have anything I want to show, but I finished basic designs for the game. I'll probably work on some basic logic stuff before getting to bed, and then work on more visible stuff tomorrow. Seeing the progress posts here is inspiring and addicting! (and intimidating, since it feels like I've barely started compared to some of you. You know who you are)

Generic Progress Post #4827

Still working on getting basic features implemented, I ended up deciding not to use some of the libraries I had written before the compo as I hadn't tested them thoroughly, so I figured I'd just write simpler ones as I went along. Which has slowed down progress some, but I have that classic Ludum Dare False Sense-of-Security, and feel like things are going well considering. Soon, I'm gonna work on getting some actual graphics drawn, and maybe have something resembling a game in the next few hours!

Drop out!

Well, a bug with my compiler sounded the death knell for my entry. Stayed up all through the night working on the game, definitely not in the head space needed to dive back into the compiler code and figure out what the issue is. Even if I fix it, there simply won't be enough a time to implement the rest of the game logic, and other necessary things (title screens, etc).

This was a great Ludum Dare though! I was definitely at my best, in terms of creating assets, making systems, and all that jazz. I actually really like this game concept I came up with, and will probably try to finish it sometime over the next week or two. I'll do a post mortem write up at some point over the next few days,

Good luck and God speed to everyone else!