Ludum Dare 26
Ludum Dare 25
Ludum Dare 24
Ludum Dare 23
Ludum Dare 22
Ludum Dare 21
Ludum Dare 20
Archive for the ‘LD #23’ Category
Here’s the post-mortem for my entry. You can find it here
At first I wanted to do something with openGL. I toyed a bit with openTK a few days before LD started, and had a 2D game in mind. When the theme was announced, however, I knew I had to make it 3D, and since I know XNA more than openTK, I went back to XNA. My goal was to create a planet, using a vertex shader. I’ve messed with vertex shaders almost a year ago, but I remembered how they worked. After stripping the standard shader, and drawing some terrain, I managed to make a vertex shader that rounded the world. It’s not actually round, as it just lowers the vertices the farther away they are from the camera, but it worked good enough. I had to flatten the terrain, though.
So after a few hours I had a round planet, with cubes, and a dude that acted like a billboard
After that, I made a first person controller, made it collide with the terrain, and then I spent roughly 8 hours on collsion. I failed, as it kept jittering against the walls. After a few of those 8 hours, I gave up, and searched for a physics engine. I found jiglibx, and spend a few hours hacking it into my already existing code. That failed as well, but at least you could ski. As it was getting late, I called it a night, and decided to scrap things the next day, and just make something without accurate physics and jumping etc.
After waking up, I gave it another shot, but stopped after about half an hour. I then implemented what I thought was a bad hackjob that would never work, but that simple change ended up being exactly what I wanted. 10 minutes and a few lines of code later, and I had proper collision, without jittering, and it was efficient as well.
So then I went to decide what sort of game I wanted to make. I had about 16 hours left, and decided to create a first person shooter. Something simple. I added the first enemy, the bull, based on Serious Sam’s Sirian Werebulls. Their AI was pretty simple, but it looked nice and they acted in a similar way as in the srs sam games. After toying with them for a bit, I created a few weapons, added explosions and rocket jumping, and stuff like health. By now I had about 7 hours left, and I decided to create the map. The map was way too large, and I scaled it in half. This broke my shader, so I had to fix that. This broke the view, so I had to tweak that by stretching everything. This broke collision, so I had to refit the bounding boxes etc. Finally everything worked, and while it looked worse than before, the world had a nice size.
Only a few hours left, and I had to add the menu, among other things. I added some last minute sounds, which turned out to be bad in hindsight. I hacked together a menu using parts of my previous LD games and the framework I was working on before. I had to redo most of the input checks, but it meant customizable controls, which is a good thing. I added another options menu, allowing mouse inversion, FOV scaling and sound settings. With some testing, I set it on a very low FOV by default, because of the way the world was messed up. But hey, don’t like it? change it!
I was done about half an hour before the deadline. While it didn’t really have a goal yet, because I didn’t have time to add more stuff, I still think I made a decent game out of it. It has potential, at least.
What went right
- This was my first attempt at actual 3D for Ludum Dare, and I have very limited experience with it. But it went very well, and it has a nice effect. Also, using billboards instead of models was a very good decision, because it looks decent enough and it was very easy to create and implement.
- I love the feel of the movement, and it’s pretty smooth. Also, rocket jumps <3
- Creating the world from bitmap files, where each file is a layer, allowed me to save a lot of time. Need to change something? Just draw the changes!
- While the world seems to be round, it’s actually just a 64×64 tile grid, making it very easy to modify.
What went wrong
- I wasted way too much time on the collision. I should just remember the way I’ve done it now, and use that in the future. It’s not perfect, but it’s fast and easy to implement
- I didn’t have enough time to add more content, so in the end the game is a bit lacking. By turning it into a survival game, it is somewhat mitigated, but adding a goal in the world or a story would be nice. Also, needs more enemies
- The shader does not like altering the world size. It was very hardcoded, and in the end wrong, but it did work after wasting some time trying to fix things.
I’ve decided to continue working on this game. I really like the concept, and adding new content should be relatively painless. So far I’ve already redone the shader so it allows worlds of any size. It’s possible to make a 16×512 world, for instance, so you can walk around in circles around it. And with a little change in the shader, you can make it look like this:
Tunnel vision FTW!
Anyway, I haven’t decided what to do with it exactly, but I hope to make a nice, simple run-and-gun game, similar to Serious Sam. My code base has its issues, but it’s clean enough to work with or refactor. I still want to improve the shader though, because now it doesn’t really like tall things. Other than that, most of it should be content and polish.
Also, can’t wait for the next LD!
Done! Finished! Completed! Just in time! http://www.ludumdare.com/compo/ludum-dare-23/?action=preview&uid=3939
Protect your planet from the neverending horde of bulls! Made with XNA, so it needs the XNA redistributable. Enjoy!
It is now 3 AM, and I have to get to work in 6 hours, so goodnight! I hope everything works. I’ll write a postmortem and upload the source code in a few days.
I’ve added the first enemy, which is this very scary looking bull. They will rush towards you, and once they hit or pass you, they slow down, relocate you, and charge again. I’ve also added health, and weapons. So far there’s just a pistol and a rocket launcher. The rocket launcher does splash damage, and it’s possible to do rocket jumps, albeit tricky.
Plans for the next few hours are to add more weapons and enemies. Then I’ll spend some time crafting the game world, with weapon and enemy spawn points etc, and hopefully I can squeeze out a few more hours to add sound effects, some polish, and more fancy stuff like blood and corpses and all that fun stuff.
But so far it’s finally looking like a game!
I’ve finally got collision sorted. I gave up, wrote a quick hack in 5 minutes, and it turned out that simple hack was everything I wanted. Lesson learned
Movement is now done, as is jumping. I’ve semi-optimized the rendering, but optimizing it more would take up too much time. Collision is also pretty efficient, I think. Other than a bug at the place where the world wraps, it works fine. So now I’m going to have to make a game out of it. I’ve decided to create a first person shooter. Up next are weapons, pickups, and enemies. I have about 14 hours for that, so it’ll be tight. If I have time, I’ll add a menu and custom controls as well.
You can give the demo a spin here http://dl.dropbox.com/u/2110010/LD23/test.zip
So for the past 6 hours I’ve been working on physics. My own implementation failed hard, so I searched and found jiglibx. And while it does sort of work, it’s horrible. My implementation is horrible, that is. I’m sure with proper usage, jiglibx is a nice physics engine. But this is ludum dare, and my code is dirty, I have no time to learn, and hacking it in like this surely isn’t the way it was meant to be used. So I’ve tried (and failed) to make the player move normally. Right now I have the following:
- Humans that always slide someplace, and that can’t stand still
- Collision with blocks, but with enough force you can get stuck or even through
- Jumping mechanic that’s very, very picky and prone to getting stuck and/or blasting you off into space
Hooray! I guess…
I managed to climb a tree, though, so that’s sort of nice
So now I’m just tempted to scrap physics altogether, disable jumping, and just check if there are blocks in the direction of the player when he walks. It should be simple, but it means no jumping and climbing etc.
Oh, and I also have to figure out what sort of game I want to create. I’ll try and wrap up the physics stuff for now, and then it’s time for bed. Tomorrow I’m going to start on a game. If I don’t come up with a nice concept, I’ll just make an FPS. And if I do come up with a nice concept, I’ll create that instead. I should have about 10 hours for that, and then 6 hours of graphics/music/sound generation, 1 hour of polish, and then it’s already over. Time flies when you’re frustrated at physics! Next time I’ll just get an engine ready from the start.
Alright, I’ve got some progress to report. First of all, you can now control a character that can walk around. And you can see your own feet if you look down. Yay! Collision with the planet is working, but collision with the blocks is very buggy and broken and doesn’t work at all. I’ve also made a level parser. Basically it parses 6 bitmap files, and each file is a layer for blocks. So I can paint my maps, and the colors represent different block types.
So yes, it looks a lot like minecraft. It’s not gonna be a minecraft game, though. I’m unsure what to make of it, but I’ll decide on that tonight. I could create a survival shooter with nowhere to hide because it’s a planet. Or I could make an RPG-ish game where the good guys and the bad guys are on opposite sides. Or I could do something completely different. I don’t know yet.
Plans for the next few hours are to fix collision, eat food, fix more collision, and think of a game while fixing the collision detection.
Currently it’s a flat round planet with cubes for buildings etc, and the entities will be 2D billboards. I’m now going to focus on phyiscs and collision, and once that’s done, I can turn it into a game ! I still don’t know what game I want to make with it, though, but I’m glad I have this working.
So for Tiny World, I am going to create an actual tiny world. I have a few random game ideas ready, but nothing concrete. What I have chosen, however, is where the game takes place.
I’m going to create a tiny planet tech demo. I’m unsure if it shall be 2D or 3D, or a mix of both. But in any case, doing this will allow me to make any game set on or around a planet. If I go for 2D, then it’s just a platformer or top-down game but with a different perspective (being round and all). And if I go for 3D, I can make a first person game as well. 3D would probably be like populous 3, where it’s fake round, with sprites as characters.
But first, sleep! After waking up I’ll work on the tech demo. I wanted to make a tech demo using openTK, but for this to work I’ll have to know what I’m doing, so I’m probably going to stick with XNA after all. Or maybe I get a random new awesome idea and I’ll work on that. Who knows! Anyway, good night!
My first LD was a year ago. This will be my fourth, and I’m in!
This time I’ll be using C# with SDL.NET, rather than XNA. I wanted to try something new this time, but I don’t have the time to learn something new before this weekend, so I’ll just stick close to my comfort zone with C#, and at the same time I can learn a new way to draw stuff on the screen!
And if it turns out to be easy, I might even try porting it to mono so I can get a linux version out as well.
Tools will be Visual Studio, Paint.NET, bfxr and iNudge. Frameworks will obviously be SDL.NET, and I might cook up a quick framework this week for some added basic functionality like screens, input and resource management, etc. I’ll obviously release that to the public if I do that.