16Skittles

LD24

Here Goes Nothing…

It’s my first LD! Hopefully for real this time. Last LD (23) I intended to participate, but never started. So here is a first try.

I’ll be using C++ with GLUT, GLEW, and SOIL. I’ll also be making some graphics in GIMP.  I just hope it goes better than last time for me.

Well change of plans – will be competing in Java with LWJGL and Slick-Util. I have no idea how it’ll turn out.

Comments

20. Aug 2012 · 21:35 UTC
Hooray Java!

Well, baseball takes away most of my Saturday, so I’ll enter the Jam to get an extra day. I’ll still have essentially two days to work on it though.

Neanderthalis

Okay… Not something I was expecting, but okay. My concept is Neanderthalis, an RPG taking place approximately 30,000 BCE. More details later?

Steps: Anxiety, stress, frantic coding, relief, pride.

I came into the competition not expecting much. I was excited, but not too confident. I have never done any coding in such a limited timeframe. The amazing thing is that I pulled basically all my code together on Sunday. Friday night I had a concept and a menu, but no gameplay. I couldn’t work on Saturday, and spent it doing homework so I could grind to the finish today. In one day I got a functional game. It may not be a world-class game, but I am proud of it, especially for a single day’s work.

LD26

I’m In…

I’ll probably go with Java again as I did with my last LD (24) because it’s cross platform. I know what problems I had in my interface last time, also graphics with no real consistent style. Hopefully I’ll fix that next time.

 

Java, LWJGL, and Slick-util.

Wow. One hour before start and my dev environment is nonexistent…

Well I clearly did my math very, very wrong. I seem to have added an extra two hours onto the start time of LD26. I type this from an old(ish) computer that I just today revived with a new HDD and a fresh install of Windows 8. I still don’t have the JDK installed (accidentally installed 32-bit, which is incompatible with Eclipse 64-bit) so I’m waiting to set that up still. Hopefully I can get everything set up and recompile last year’s entry before the competition begins.

Okay… Unforseen issues…

Got everything working but LWJGL threw an error. I had to force software opengl and that is getting EXTREMELY low framerates. So I’ll go with C++ this time, with GLEW, GLFW, and SOIL. Thankfully I have that environment all set to go on a USB stick, otherwise I’d be in a bunch of trouble. Unfortunately though, that will limit me to Windows only.

Seven hours left?

Sounds like a great time to completely rewrite my engine!

2nd Compo: The Aftermath

I just completed my second Ludum Dare Compo, and wow, it is a great relief to be done with it. There were certainly some times when I doubted the integrity of my usually-solid Lenovo keyboard, but luckily it kept on clicking. There were things I’d do again, and things I’d change.

Let’s start off with the good. Using C++ as my language added a level of familiarity that I simply lost from Java after all this time of not using it. On the contrary, though, using C++ means that I can’t access OS X at all and Linux would require additional debugging that I’m simply not prepared to do.

For graphics, I think I was able to minimize it as well as possible. I used very few textures: some letters, a weapon, and a few humans. For code, it was anything but. As I started up this morning, I realized I simply did not have the experience or techniques needed to make the system work like I needed to. I switched to a grid system (which I should have done from the beginning) and was able to make a “good enough” approximation. Believe me, there were many times when I stared at the screen  wondering if I would even have a remotely functional game tonight.

In order to get function, some other things important to games were left out. Specifically, plot development and, well, levels. I squeezed out two levels, painstakingly coded by hand because I didn’t want to spend too much time on an editor (I did write one, but it wasn’t functional before and may be even less functional now.) Levels were actually designed inside Minecraft using wool blocks.

Overall, it was an improvement over my LD24 entry (Anything would be better than that) but there is still a ton of room for improvement. So I’ll just say that it was my first try for LD8 (as opposed to LD48) and be satisfied with it. The fact that I was able to pull myself from total failure to just a bad success in such a quick amount of time most certainly is not a failure.

LD27

Third Time’s the Charm?

Well, I’m in like last time. Hopefully this time I’ll actually make something I’m happy with. C++, OpenGL, GLFW and SOIL. Each of my previous entries have gotten progressively better, hopefully this trend continues.

Third Time Really is the Charm… Postmortem and History

Well, after a furious 48 hours of coding I walked away from LD27, and as I analyze my finished product it is finally something I can say I’m happy with. Is it the next smash indie hit? Probably not. (If it is let me know, I’ll prepare the Kickstarter) But it was the first LD entry that I’ve truly been satisfied with. I can also say that it’s my least favorite of the themes that I worked with. For those maybe not familiar with my previous entries, let me go on a brief history.

My first LD was LD24: Evolution. My entry was written in Java. At the time I was learning C++ but I went back to Java due to the fact that I had no good way of drawing text in OpenGL. Look at my more recent projects I still don’t, but I’ve been writing C++ exclusively for long enough that writing Java is like writing Spanish. Yes I “know” it, but I just don’t use it often enough to do it as quickly and efficiently. So I used Java in LD24. I had every intention of doing the Jam instead of the compo. But this is a double-edged sword. Theoretically for a first timer, gaining an extra day would be a good thing. An extra day means that even though you may not write as fast, you can still do some extra work to finish up your game. However this was the first time I’ve even remotely done a speed-programming event like this one. I was burnt out by Sunday night, not optimistic, and figured that I had no desire to work on the game any longer that I might as well upload it now as a Compo entry. So I did, and my first LD game was an extremely short game with inconsistent graphics (though consistently ugly) and bad gameplay. I still think that my concept was half-decent, but I would not play that game.

 

For some reason or another I was unable to participate in LD25. I did however come back for LD26: Minimalism. Now, minimalism is not exactly my “thing.” I appreciate minimalistic design, but the games I am accustomed to are anything but minimal. Trying to juggle between patients as a Medic in TF2, or trying to keep track of suspicions in TTT, or looking for enemies in the distance before they AWP you in CS:GO is not very minimal. Even something simpler like Minecraft is far from minimal. So while I appreciate minimalism in things like interface design, I find it difficult to attach it to a gaming perspective. The first thing I realized was that I was in the entire wrong paradigm. What do all of the games I play most frequently have in common? You always play as a person or character. That is inherently difficult to have minimalistically, even with the art. When I look at minimalism in games now, I think more towards “Flow Free” or “Polymer,” both mobile games. Their graphics are flat with a simple color palate. They don’t involve any characters, not really action. They are at their core a bit of strategy and thinking. By the time I realized that I had artificially limited myself, I was too far into the compo to compete, so I continued on.

This was my first compo with C++. I still hadn’t completely figured out text rendering, but I ended up hacking together a text rendering system that applied a texture of a letter onto an OpenGL quad. Nothing groundbreaking, nothing pretty (neither in code nor on the screen) but it was somewhat effective. Apart from my realization that the concept was flawed, it also featured a dysfunctional collision detection system and bad Line of Sight calculation. I realize looking back that even my bad system could have been improved with a single added clause in the if statement, but what I need to do is work on actual gamedev techniques such as ambient occlusion. I still haven’t worked on that, since most of my development in 2013 has actually been focused on web application development with the exception of LD26 and LD27.

Then came LD27: Ten Seconds. Ten seconds? That’s a mechanic, not a theme. That’s like how Twitter limits you to 140 characters or Vine limits you to seven seconds. The bane of effective communication. How could I possibly find some way to implement ten seconds into my game?

This was a combination of good and bad from my previous examples. I did break free of the character paradigm, by making the player simply place blocks (or tiles. I prefer tiles as they are two dimensional, but blocks just seems easier to fit into a sentence that flows well.) to reach an objective. There are no people, animals, or intelligent beings in the game. My text hack I tried to recreate, but just ended up with a mess. Blued out text and all. Collision detection worked like a charm, surprisingly. There are some occasional issues if the ball gets going too fast, but those are as limited as possible. I still don’t have a satisfying length to the game, and there are other things that should be in the game but aren’t. But I’m happy with it. Out of all of my entries, this one is the most appealing both in gameplay and to the eyes. There are two textures (both needed because OpenGL doesn’t draw circles) actively used in the game (not counting the splash screen) and everything is flat colors. It could have easily fit in the minimalism theme as well. I think maybe it could have done with a little more style, but overall it is not an ugly game. Looking at Neanderthalis (my LD24 entry) and Rollout, you would hardly believe that the same developer wrote them in a span of one year.

That is the difference one year can make, and I didn’t even do that much game development over this period! A BIG part of the difference is that for my web application project, I am a one man crew covering development and design. I’m working on a more minimal update that I really do like the looks of, while losing the complexity of what I originally wrote (in the beginning of the year). So stylistically I’ve moved from ugly gradients to a more flat, geometric approach. If you look at Neanderthalis you’ll see a GIMP created cloud background, dirt colored with GIMP noise, and poorly drawn bears/humans/tools/everything. The mechanic worked but it needed to be fleshed out, reskinned completely, and extended to be long enough to be a standalone game.

What I’ve been trying to get at with this entry is that this has been the culmination of my two years programming. I’ve figured out how to learn from my mistakes. My experiences in these past few Ludum Dares have improved my skills through the ability to analyze past failures. And of all the satisfaction, the thing I’m proudest about is the short scribbled note I made on my paper used to track progress titled “learned.”

Comments

swipefaststudios
26. Aug 2013 · 00:36 UTC
From your experience which language do you think is fitted better to code 2D games maybe 3D Java or C++? Because I am trying to decide which one to learn to make games. I have learned the basics of Java but have not found many online tutorials for libraries like lwgjl which why I am moving towards c++ or c#! But I think you need libraries for those. Which one should I learn and any advice on what ides or editors I should use to code in that are free and compilers. Also do c++ or c# games only run on windows? Great post btw its neat to hear how you learned from your mistakes and improved your techniques! You inspire me! Thanks for your future help!

SFS

LD28

Sad to miss it.

Unfortunately I can’t compete this time around. Stuff for hockey all three days will take too much time out of the weekend, not to mention that I should be studying for exams. It’s a real shame too, because the themes are looking GREAT this time. Pick something bad for this one and leave the good ones for #29?

LD33

My Return (I’m in for LD33!)

Wow, I didn’t realize it had been so long since I entered one of these! Looking at my archives tells me it’s been two years since my last participation in LD27! Life isn’t always permissive towards shutting away for three days, and twice I’ve had to choose between Ludum Dare and Prom. This spring it wasn’t just Prom, but the ACT as well. I love making games with you guys, but not enough to skip that. If you guys schedule the spring Dare on my prom weekend again, I’m going to be convinced it’s a conspiracy against me.

Just because I haven’t jammed with you guys doesn’t mean I’ve been idle, however. I’ve been learning a lot (both in programming and elsewhere) and have done a lot of work on personal side-projects. In fact, one of them is incredibly relevant to the compo here!

I’m planning to enter the compo with my game in C++, with a Windows and Linux support (I hope, I’ve never tried to distribute a Linux program before). I’ll be building off my “SkilLib” engine, which I’ve been working on (slowly) over the course of a year or so. It’s an entity-component based system and it’s not like anything I’ve ever made before, but a while back I made a proof-of-concept clone of Breakout (on GitHub here) and it seems to make more sense than the traditional inheritance model. Of course my implementation may be totally hacked together, but that’s kind of half the fun. I just made my repo for SkilLib public, and I plan on adding to it some more to make it more feature-complete before the jam begins. As for some deeper tech info, it references the Simple OpenGL Image Loader (SOIL) as well as GLFW and GLEW.

While I’ve gotten incredibly unlucky so far in LD dates since 27 all those jams ago, this one comes the weekend before school starts, so I won’t even have anything else to worry about. Maybe it’s a good sign. I look forward to jamming with you all once again!