GFM

LD31

It’s snowing!

Yay, particles!

ld31_progress_004

Kinda hard to see and it’s so small and static. When it’s falling, it’s somewhat easier. Still, I’ve gotta recolor the spriteset…

Day 2, start!

After going to sleep 3 A.M., walking up 5:30 A.M to go to a close city and take the JLPT, I’m finally back!  Gotta polish that game, now…

Almost there…

Adding some finishing touches to my game.

ld31_progress_008

Then, on to compiler for Windows and, perhaps, Android. =D

“Cold Remembrance” submitted!

ld31_progress_009

I finally submitted my entry for both Windows and Linux. I’ll see about making an Android build tomorrow.

Also, I’ll write a post-mortem tomorrow. I’m not in condition to do so right now… XD

Cold Remembrance – Android port

ic_launcher

I just finished porting my entry for Android. It was supposed to work on any 2.3.x and above device, but it seems to work on only 4.x.x and above.

Now, I can finally start rating all those games! /o/

Cold Remembrance – Timelapse + Postmortem

Choosing songs for the timelapse took way longer than it should… but, finally, here it is.

The postmortem got quite long… so here is a TL;DR version:

The good:

  • Finished my game, even though I restarted twice and was away for around 12 hours.
  • Was able to find a kind of fitting use of the theme
  • Snowman as the main character
  • Wooo, graphics!
  • Wooo, mood!
  • The song fits the mood of the game
  • I was finally able to finish it before the deadline
  • Saw lots of updates on the website (therefore, was never too tired)

The bad:

  • No restart button
  • Game over isn’t really clear
  • Story is badly told
  • It didn’t work on my Android phone
  • Lost 12 hours of Sunday + 7:30 hours of sleep
  • Spent a lot of time on the website (lazying around and not doing the game)
  • Almost none actual gameplay

Now, for those brave enough, have the long version. :)

I wrote mainly about how development was. I’ll later do a post explaining the game itself. But this can wait a little more…

The Compo started here at midnight of Saturday. I usually sleep for a few hours prior to it, so I can stay up later than usual. That really helps to get the prototype pretty much done on the first ‘day’. My usual division of time is in three slots: until around 3~5 AM of Saturday (depending on how rested I am, and how well work is going), until around 2 AM of Sunday (by which point the game would be complete, and I only need to fix some bugs, create more levels and polish the game) and, finally, until submission time.

I'll mostly likely finish that before this LD's post-compo...

The warmup game: a ship with a broken rainbow engine

This time, though, I didn’t follow that at all. I started a little warm up game one day before the compo. I liked it so much, that I still worked sometime on it before the Compo. So, I didn’t sleep at all, after waking up 6:30 AM. This made go to Sleep earlier than usual, at 2 AM. By this time, I still had nothing but a stupid idea. I usually try to come up with a idea still during this first slot, but I had a lot of trouble to do that, this time… It took me a long while to start liking this “theme”. (though, I must say, I still doesn’t see it as a theme)

But don't ask me what!

This was to be something… someday…

After trying to work that idea out in the morning, I gave up and started another one. I tried to code it into something until 11:45 AM. By that time, I got tired of it not working and started to draw a snowman.

Be careful not to look into its eyes... he will force you to make a game about snowmans!

Then I had to draw all of its animation, from jumping to melting. Soon afterwards, I finally had the final idea, the one that I was able to make into a “complete” game.

I took a more visual approach, since it was a simple story driven game. So I drew the background and imported into a game. By 2:47 PM (still Saturday), I was done with the initial version. This was important, because if I didn’t get enough to redraw everything, I would still have something to show.

1 hour after, I had everything being rendered in game and got started to make that loop. It was working in as few as half an hour. I took an approach of moving everything by a modular offset (as in, “from 0 to screen_width”) and tried to render everything twice: once on its position + offset and again on position + offset – screen_width. By doing only that, everything was being rendered, while on a single screen. =D

Then I started composing the song. I already had had an idea during one of my breaks, but that was probably the first time I tried playing it on the keyboard. Thanks to that, I took only some 30~40 minutes to write it on VMML.

After lots of lazing around, I finally wrote the story. It was 7:30, but I still didn’t want to add it into the game… That’s boring! I decided to do something much cooler: particles!

Yay[2]. So many particles... XD

Yay! It’s snowing!

I made it the lazy way: have a array with the particles, keep track of which is alive and which isn’t, recycle the dead one and, when you run out of space, realloc the array. In 1 hour I already had snow falling around the snowman. A also added leaves to the autumn season and, later modified some of its  working.

Then, almost 10 PM, I finally decided to start working on the actual game! No more lazing around, no more drawing, composing, writing a simple particle system… NO! Time to… have dinner…

Around 11 PM I finally got started. One really important thing I did while coding was to add a frame skip feature. I usually spend too much time playing my game, for testing purposes. This time, I could make it go 6 times faster. I usually blazed through the game, having lots of times to test stuff.

I got the player moving, added the texts, made it appear after you loop through the screen… After all that coding, I made a final sprite, the one of the kid that appears by the end of the game. The walking animation was completely s****y, but I had to make do with that.

That first walking animation... ew... >__<

That first walking animation… ew… >__<

I coded it into the game and submitted a initial version to the site. If I didn’t have any more time on Sunday, I would at least have a working game… Except that I forgot to add the assets folder and the game wouldn’t work at all. Stupid me…

So, I finally went to sleep 3 AM and knew that I was screwed. Sunday I was going to take the JLPT, in a neighbor city, so I knew I was going to have way less time than desired. On top of that, I had to wake 5:30 in the morning, so I spent a good part of the day in a zombie state.

When I finally got home and was able to work in the game, it was already almost 5 PM. At least, I only needed to polish the game… Unfortunately, that’s what deserve most time. I redid all the backgrounds, added clouds (more particles!!), added an ‘upper text’, in which I wanted to display tips… put ended using for almost nothing, added sfx and fixed a few bugs. Fun fact: the sfx used for the “rising”/”unmelting” animation, is the “crushing” sfx reversed. =D

ld31_progress_009

At sometime, I made three really stupid decisions, and I blame sleep deprivation for that. One was to make you actually able to lose the game. I wondered  about it for a long while, even after implementing it. Was there any actual point in you being able to melt? Would the game gain anything from it? Even by answering no to both questions, I went ahead and did. C’mon, who would be able to lose? I explicitly wrote “Press left to go back”, you gotta only press that single key right?

Yeah… Never, ever, consider that people will only play your game the way you want. If there’s anything that people shouldn’t do, don’t allow then to do it! On top of that there’s the second stupid thing: I used the phrase “But the seasons refused to change”, a Chrono Trigger reference/parody/homage/etc, as “Game over”, but didn’t add a “Game over” on the upper part of the screen… This probably confused people about what was happening.

Click to watch that ending

Click to watch that ending

And then there’s the third and final stupid thing. I though about making the ‘R’ button restart the game, “but why would I do that? you can easily close and re-open the game…”. Well… yeah, I have no excuse, that was completely stupid. It got worse on the Android port, because it’s actually quite a pain to close an application there (compared to Windows/Ubuntu).

Another thing I should mention here is the gameplay. There’s a time the snowman says “those many winter were harsh, at times” and it starts to snow  stronger on winter. I thought about making the game more dynamic, make the snowstorm push you back and forcing you to move according to some timing to go through that part… But since I couldn’t see how to make it work (nor how to make it fun), I ended making the only needed input from the player be to press a button. If I were to make a post-compo version, this would be the main thing that needs to be changed (as well as how the story is told, and adding a restart button).

Then before packaging the game, I had one final thing to do: redraw that goddamn walk animation. I don’t know how, but I was able to make a good enough one in 7 minutes. So, 10:30 I was done with my game. All I had to do was package and submit. Something I was really proud is that I even made the game icon during the compo! I usually draw it afterwards.

For the first time, I did a game icon during the compo!

For the first time, I did a game icon during the compo!

I had some troubles trying to compile for Linux 32 bits (debian/ubuntu, actually), because it had been quite a while since I had last done that. After doing that and writing a README, I went to package for Windows 32 bits. (blame my MinGW 32 bits… Someday I’ll look up where can I find a 64 version and how to use it)

I was finally done. I’m not quite sure about which time I uploaded it because my Windows has been having some clock issues, after I enabled looking up the time online on Ubuntu, but it was around midnight.

The next day, already rested, I made a direct port of the game to Android. I only had to code how input worked, because everything else was handled b SDL2. I used a script I had done before hand (that’s “packaged” with the framework), I was quite easily able to compile it. I still haven’t looked up why, but it didn’t work on my Android 2.3.6 device. But both on the emulator and on a real Android 4.X, it worked normally…

Then, I was done for real. It was quite fun and I’m really proud of what I did. There may be some serious issues, as all of my previous entries, but I was finally able to catch up to some of my previous quality. The game is shorter, yes, but I’m happy with the result. I wanted to focus on the mood for this game, and I think I was able to do that…

One major failure, though, was the story… I intentionally wanted it to be told in a weird way, but it perhaps isn’t clear at all… I’ll have to take more care about that next time.

Well, that’s it, thanks for reading! 😀

LD32

I’m in!

TL;DR version:

I’m in! I’ll go solo, as always. Also, once again, I’ll be using my own framework to make a game in C. Depending on the game I make, I may even port it to Android.

List of tools (copied from my previous “I’m in” post XD):

  • Language: C
  • Library: GFraMe* (now on version 0.4.1)
  • Music: LMMS
  • SFX: sfxr
  • Editor: Vim
  • Timelapse: Chronolapse (it works on Ubuntu!! *-*)
  • Image editor: GIMP
  • Beverage:Coffee, as always =D
  • OS: Ubuntu 14.04
  • Streaming(?): Open Broadcaster Software
  • Base game resolution: 320×240 (I won’t try to go lower than this, again… XD)

Recently, OBS Studio was released, with a Linux version. Thus, now I have no excuses for no streaming… but we will see if I get into the mood to do that…

Now, on to the real I’m in post:

* I might reuse some of my latest game code, as I won’t have enough time to re-factor my framework and add the features I implemented onto that game. It can be found here!

Right after LD#31, I kept working on my previous entry: Cold Remembrance. I started by redrawing the backgrounds, as I had a few issued when trying to scale the game on my Android 2.3 device (kept for test reasons… and because I don’t care about it).

gfm_ld31pc_mockup003

After spending a long time drawing (and none coding nor re-thinking the story), it was time for another GGJ. As I didn’t had a lot of time, I made a really simple and short game. The idea was to control two character at once and try to climb a tower (kinda).

I liked that idea so much that I decided to turn it into a complete game. And since there were two months before the deadline to a festival, I decided to try and finish it before hand.

Luckily, the deadline was extended and I was able to finish it in time. While developing that game, I implemented a lot of cool stuff  that I want to expand into my main framework, like text menus (as in, 16-bit games’ main menu), automatic wall generation for tilemaps, auto-tiling, a form of event handling and creating “functions from a tilemap editor” (tiled) – this one actually needs some re-working.

And now, it’s finally Ludum dare once again! Since I just started re-factoring my framework (I want to make the next version be a “releasable” one, I’ll have to make do with the current “stable” version.

Let’s have a great jam!

Now, for a small self-promotion: You can check out my latest game on itch.io! It’s free and open source (I released it with the zlib license).

Github setup complete

As I’ve done on previous LDs, I’ve already set up a repository on github with my framework and some basic initialization code.

There’s just the main function, a game loop (with events detection) and some code to handle resources.

You can find it here!

Current thoughts

So… I’m really happy with the theme, this time. It can be used either literally (in actual weapons, perhaps even silly) or in a more profound way (like with emotions).

As soon as the jam started I wanted to make a funny game in which you use the last defeated enemy as a weapon. After some thought, I decided it would require too much assets to work, so I scraped that idea (also, it was getting too much like Half Minute Hero, in my mind).

Then I had an idea about a spy that must infiltrate enemy territory without weapons. He would have to get unsuspecting enemies and throw them at others… Looking back at this idea, if I made it a game about quick time events, each with its own animation, it could be a good game… but it would also require lots of work.

Another idea was about a hero that had his unbreakable will as his redeeming feature and would always come back after being defeated by an enemy, until it finally was powerful enough to defeat the enemy. OK-ish, but… no…

The latest Idea I had was about a couple that used their bonds as a weapon. Because of that, they would have to stay close at all times. Although I really liked this idea, it’s too similar to my latest game (JJAT), so I don’t really feel like making that same game again. I mean… it would be fun, but I want to try something different right now.

So, that’s were I am, right now… I could try to go along with any of those ideas, but I think I’ll give myself a little more time to make something I’m really happy with.

Hey, it’s something

I gave up trying to think of a great game using the theme and settled on doing anything. Well, one of my first thoughts (that I didn’t turn into a game idea, initially) was of a cat that fires rainbow lasers from its mouth. So, I’m trying to turn that into a game! :)

You will carry a kitten on your head and have to find some “power stones”, to allow the kitten to fire more colors (it will start not being able to shot at all and, after each stone, will regain one color at a time). Other then firing it at enemies, you’ll also be able to use that to propel yourself through the air, kinda like a jet pack.

So far, I have only this animation. But, hey, it’s something…

001-gfm-ld32-walk

There was progress! (But not too related to gameplay)

Thing have been progressing… quite slow. But it has progressed!

Since my lib is missing even basic tilemap importation, I had to do it from scratch. I could have look for some lib to help me… but what would be the fun of that? Instead, I wrote my own plugin for Tiled (somewhat based on a previous plugin I’d written).

It’s finally working, and I can export both the tilemap and the collideable areas (though that was made in a rather ugly way…). Since there isn’t much fun in a code screenshot (there’s some… but not for all people XD), here’s how my map look in Tiled:

002-gfm-ld32-ss

Yeah… I was lazy and didn’t implement any way to detect walls automatically. I’ve done that before, but didn’t want to reuse that code (it’s quite messy =X).

Until next update, when I hope to have at least a player moving on the screen!

Almost have the basic stuff done

After panicking for a while about how to do collision (whether I should use simple loops, use a quadtree a coded on my last game), I was finally able to add the character into the game.

004-gfm-ld32-ss

I also already added the “stones of power” (gotta think about a better name). After grabbing these stones, the kitten on your head will gain the power firing lasers! The legend says that if one were to obtain all 7, it would be able to fire the legendary rainbow laser, the only weapon able to save the land… or something along these lines. XD

My main objective today is to have most of the game coded, and use tomorrow to actually create the map and redo the graphics. That means I still gotta implement the laser (should be quite easy, even considering that I want to use it to add some force the player), some enemies, the action of grabbing the stones, and the “lock” before the boss (that will only open after gathering the seven stones).

This is going to be a long day…

Yay, bullets!

005-gfm-ld32-ss

I’ve wasted a lot of time to do… only this… (I mean, the bullet recycle and the push on the player, which obviously can’t be noted here)

Maybe I’m just tired or tried to do too much with my lib… still it’s been fun. I want to keep going for a little while, but I should probably sleep…

Tomorrow I’ll start the day by turning that trace of bullets into a rainbow (I’m rendering every bullet on the same place, because I didn’t want to calculate an atan to get the angle and then a sin and cos for each bullet… too much worry for so few…).

I’ll try my best no to cut the boss, but let’s see… At least, I can easily expand the world and make some challenges (which reminds me, I still haven’t tested if the camera works properly when the world is bigger than it’s view… yay, more fun for tomorrow XD).

See ya, all. Time to get some sleep.

I just woke up, but there’s already an update

Hey, LDers!

This is what I have now, when actually using trigonometric functions:

006-gfm-ld32-ss

It’s finally a rainbow laser!!!

Now… on to drink some coffee and implement spikes and respawn, probably…

New graphics

I’ve polished the player’s and the stone’s graphics. The tilemap still need lots of working, but that will only come later. There’s also some new animation (notice the kitten mouth!)… someday I’ll learn how to do .gifs on Ubuntu and then I’ll be able to make better posts, once again… XD

007-gfm-ld32-ss

008-gfm-ld32-ss

New tileset

009-gfm-ld32-ss

This screenshot has, actually, too many details, but it was more to test the main mechanic and the tileset. (though that tree is quite weird…)

Now, I should have enough things done to actually make the game (i.e., the map). I’ll first check that the camera works properly (and then make a dynamic dead zone, for it), then I’ll make a basic map and then… who knows? Enemies, maybe? because what would be the fun of having a laser but no targets for it?

Almost done with the map…

Just to be sure… this is good level design, right?

011-gfm-ld32-ss

At least, there’s one checkpoint right before and one right after…

To any future player (that still hasn’t given up, after seeing that), I apologize in advance…

Comments

retrograzer
19. Apr 2015 · 19:32 UTC
Challenge is half the fun! I wonder how many times you’re allowed to jump in this game…

Almost done…

WARNING: Spoilers ahead! (not that it really matters… XD)

012-gfm-ld32-ss

This will have to do as the ending…. *-*

Fun fact: 7 particles (one for each color) is recycled every frame, running at 60 fps. :)