renatopp

LD29

My Second LD!

In this LD I’m planning to use:

  • Language: HTML/Javascript
  • Engine: CreateJS
  • Editor: SublimeText 3 <3
  • Graphics: Inkscape and Gimp
  • Audio: Audacity, bfxr, an old mic, voice and guitar

I will also use a library I’m developing for CreateJS, called Creatine. It is a baby yet but there is some useful features such as scene, transitions, and layout manager. I’m sharing Creatine here:

Tags: createjs, html, javascript, ld29

Ready to go!

Yesterday night I was thinking in what I will do for this ludum dare. Now I think I have a pretty good idea, probably I won’t finish until tomorrow, but anyways, I am ready to go!

I want to develop a platform with mechanical challenges, like super meat boy. It will involve depression (clinical depression), stress, pressure and fail.

Day 1 - 01

Tags: depression, ld29, platform, super meat boy

Time to Lunch

I’m little late in my schedule, I’ve just finished the tile system to createjs but there is not physics at all yet.

d1b2

Time to Plan B

I’ve just realize that is pretty hard to program a good platform game within 48 hours, specially when you have no idea how to do pixel art, more specially yet when you don’t follow the KISS rule.

So, it is time to plan B. I’m going to do the classical “contain the invasion”. It’s not an original idea but it is a game that I can handle in 24 hours. Check it out the first scratch:

d1b3a

As a consolation due the failure of plan A, a delicious master piece of the Brazilian culinary. Brigadeiro:

d1b3b2

Almost There! Beneath the Sea

I think this is my last preview before the final version.

d1b4c

Check it out the preview of Beneath the Sea here!

What is done:

  • Intro, Menu, Credits, Level, Preload and Ending Scenes;
  • All game mechanics, including spawning of weapons and creeps;
  • All sprites for monsters, ship, weapons, buttons, and background;
  • Musics;
  • All UI indicators;
  • Score system (integrated with kongregate);

To do (just minor adjusts and tweaks):

  • Add SFX
  • Change the colors of the game;
  • Upload to kongregate;
  • Tweaks to get a better gameplay;

Dreaming Of:

  • Add more types of creeps;
  • Make environment dynamic (moving clouds and oceans);
  • Add boost packages to make the ship faster.

Lunch Time!

d2b1

Tags: beneath the sea, Beneath the Surface, createjs, html5, ludum dare 29

Some Important Notes

Well, I’ve finished my game Beneath The Sea!

#gallery-1 { margin: auto; } #gallery-1 .gallery-item { float: left; margin-top: 10px; text-align: center; width: 50%; } #gallery-1 img { border: 2px solid #cfcfcf; } #gallery-1 .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */ ss2 ss5

(Entry Link | Kongregate Link)

In my blog, I described how was the process to created it, and  I copy some important notes summarized from my experience on this ludum dare:

  • Keep It Simple, Stupid! I didn’t followed the KISS principle when I was creating the conception of the game on Friday night. As a result, I’ve lost a lot of precious time.
  • Do what you know. My first plan involved too many technologies, mechanisms and techniques that I am not familiar with. You can’t learn everything in 48 hours.
  • Take a break, periodically. The lack of sleep and fatigue are your enemies. Without sleep, you can’t concentrate very well, so you need to take some breaks periodically to rest a bit.
  • Make TODO lists. Without concentration, you lose efficiency and time, so, make TODO lists to keep tracking what you are doing. Before starting the development of the game, create the TODO of the features. Before starting each feature, make a TODO of the tasks need to complete the feature. Before each task, make a TODO of simple changes and additions to the game.
  • Prioritize the features of your game. You probably won’t finish your game, so, prioritize the core features. If you finish the important parts and got some time, then you can do the fluffy things.

Good job, everyone! I’m proud of you all.

Tags: beneath the sea, notes

LD30

3rd LD, I’m in

This is my 3rd ludum dare and I am going to use the same tools as always:

Independent from the theme, I’m hoping to use behavior trees to control some NPC’s (I wrote a 3-part tutorial on behavior trees on my blog) and I am praying to all gods to elect “You Are Already Dead” as the final theme!

 

Tags: AI, behavior trees, createjs, creatine, ludum dare 30

My planning for [untitled game]

I’ve just finished the planning for my game (still untitled)!

chibi_plan

Well, even before the theme, I was planning to base the game on AI in order to use some behavior trees. Thus, I was hoping to include some autonomous agents to the game. So, when the theme was revealed, I had this idea:

Everybody wants a person to share a life, to found a family, to fall in love, to marry, etc; and when this happen, one person connects its own world to the other.

My game aims to connect worlds metaphorically: chibis walking in the park looking for their unknown loves while you protect them from obstacles (such as bad matching and meddler chibis).

It seems that this is an ambitious game and I hope I can finish it in this weekend.

Tags: chibi, connected worlds, Love

Totally late on my schedule!

So, I’ve learned that is not a good idea to implement from scratch a behavior tree library to the LD. I also have learned that debugging a behavior tree without a visual interface is very, very, very, very, very hard. Anyway, I finished the behavior tree implementation and the behaviors are almost finished (I still have to test and change some parameters). Now I have agents that run alone in the park, find some company and act in a conversation.

860797ff7a74cd6c254297e3ade0c157

Still a lot to do!

Tags: agents, behavior trees, chibis, connected worlds, Conversation, createjs

Progress Report

Finishing the game mechanics… No time to lose.

7ce23ea7a94e9f112a55c65bc9350f58

Finally! Love Craft!

Finally done! And now with a name: Love Craft!

I wanted to do something not related to space, since most of the entries will do that. So I thought in connect worlds metaphorically. “Everybody wants a person to share a life, to found a family, to fall in love, to marry, etc; and when this happen, one person connects its own world to the other”.

I’ve lost so much time on Behavior Trees that I couldn’t add the sounds, what is a shame. However, I kept my initial plan (first time) and I enjoyed the resulting game. It is not that fun, but I liked anyway.

ss1-menu

ss5-gameplay

(View Entry | Play Game)

Tags: behavior trees, connected world, craft, createjs, creatine, Love, love craft, ludum dare 30

My Experience Within Ludum Dare 30

I made a post in my blog telling my experience within this ludum dare.

http://guineashots.com/2014/09/03/my-experience-within-ludum-dare-30/

 

TL;DR version:

  • I made a game based on behavior trees, a technique for game AI which I implemented from scratch (spent >20h on it);
  • The game is about connecting people;

GOOD:

  • First Ludum Dare that I didn’t change the plan in the half of the compo!
  • Behavior Tree worked very well and there were no relevant bug at the final version of the game;
  • Despite the time I spent on it, the visual of the game is pretty good;
  • There are very few games on Ludum Dare that uses AI as this one, I’m very proud of it;

BAD:

  • Constant fear of failing to finish it;
  • Very hard to model behavior trees programatically;
  • VERY hard to debug behavior trees without visual helper;
  • Mechanics is incredible boring and repetitive;
  • I couldn’t finish several aspects of the game, but the worse was the sound and not fixing the crap mechanics;

banner800x300

(VIEW LUDUM DARE ENTRY | PLAY LOVE CRAFT)

Tags: behavior tree, game jam, love craft, ludum dare 30, post-mortem

LD31

Baa-Ram-Ewe! Finished!

banner

Finally I finished my entry for this Ludum Dare (LD31, the theme is The Entire Game on One Screen). This time, I am so exhausted that I couldn’t do any progress report during the weekend, but, on the other hand, I could finish the game, including the mechanics, graphics and sounds.

My idea was creating something with artificial intelligence (again) and for some reason, after the theme announcement, I remembered that I never touched at a flocking algorithm and this would be a good opportunity for it. The game idea is to take some sheeps from one point and bring them to another, without letting them to leave the map or to be killed. The player uses the mouse to herd the sheeps, which will behave accordingly to their neighbor mates and some tiles in the environment.

As tradition, I writing here a summary of the competition:

What was good:

  • Could finish the game!
  • Cute sheeps with nice behavior;
  • I could follow the schedule without any change;
  • I could do some music and sound effects;
  • I drawn my first tileset!

What wasn’t good:

  • Lot of problems with collisions ;/
  • Spend a lot of time with rotation math (shame on me);
  • The sound effects are pretty limited and the music is too simple;
  • The graphics are cool but some things I’m hating, such as the windmill;
  • I had to redraw the tileset 2 times!

Which technologies and techniques I used:

  • The sheeps are controlled by a flocking algorithm, (or boid algorithm) as described here and here;
  • The graphics were made in Inkscape;
  • The map were built in Tiled, using a 32×32 tileset;
  • I recorded the audio for the sound effects in Audacity;
  • The music were made in Guitar Pro and converted in audacity;
  • CreateJS and Creatine were used as programming base;

anim1

(VIEW LUDUM DARE ENTRY | PLAY BAA-RAM-EWE)

Tags: #31, AI, artificial intelligence, ld #31, ludum dare 31

LD32

LD 38

Development of Small Board

When I first read the theme "Small World" at the theme voting, I thought in making a circular world again (just like my last LD game). However, everybody is gonna do that! So, after a 2-hours brainstorming, the 2 first hours of the competition, I came back with the game idea.

I love the aesthetics of Besieged. All levels show a small village or a small campsite merged into a white-ish background, creating a very cool mix of white emptiness and green alive. With this mixture, you have the feeling that the whole world is just that small portion of green you are seeing. I love that, and I would like to try something alike.

IndieDB_Banner1.jpg

After deciding the aesthetics, I had the feeling that a board game would fit well in this style, where the tiles kind of merge to the background. With a board game in mind, I decided the base rules, which are based on Zombicide: multiple missions, swarm of enemies, climax during the gameplay, varying missions, etc.

All set. A board game inspired by Zombicide and Besieged.

And as usual, even before the theme voting phase, I decided that this game would have something technical that I haven't developed before. LD#30 was behavior trees, LD#31 was flocking algorithm, LD#32 was circular world and complex behavior trees, and, finally, for this LD#38 I wanted to give more time to animations - not the animation like in sprite sheets, but the animation effects like moving a piece, spawning an enemy, changing scenes, etc...

What went right?

  1. Although the game is not very good, I could finish it, and that was the biggest achievement this time. Sure, other Ludum Dares I worked as hard as this one, but this time the schedule was very, very tight - 3 hours to end the competition I was considering giving up because it missed so many things - but I could complete the base project scope that I have decided at the beginning.

  2. There were, impressively, very few bugs during the development, even the A star algorithm I could code in minutes without any problem. Most bugs I could fix in the last hour.

  3. I could do some cool animations and developed a nice animation scheduling (see below for more details). The animations are not perfect, but they were fun to implement, in special the enemy spawn and enemy movement are very cool!

What went bad?

  1. Very, very tight schedule so that I could barely finish the base of the game. Everything went as I expected, but who wants to barely finish something?

  2. Unbalanced and not fun, again. This is the problem I find in most of my games. I dedicate so much time on the mechanics (usually a bit complex) and the visual that I don't the time to make it good. I should probably focus that on the next game.

  3. The game provides a few visual feedbacks only, but the player don't have much idea of what is happening within the combat, or the player can't even track the pawn actions properly.

  4. No music or sound, but that has always been my Achilles heel.

  5. I implemented a great customization system in which I can add new pawns, enemies, tiles, maps, or event different goals very easily to the game, but I only had time to create one map. If a jam game have lots of customization and lack of content, the customization was just wast of time.

  6. Developing a board game is really hard. I expected it to be complex and take a lot of time to code the game rules, but it is really hard to change and tweak how the rules work and interact during the development. If I will ever implement a board game for a Ludum Dare again, I will keep the rules very very very very simple.

Technical details

Some details of implementation:

The board game logic is completely independent from the visual and the user interaction, which made things really easy later. When the user select an action, the game (visual) asks the board (logic) for more information and render things. When the user perform an action, the game sends it to the board, the board perform and compute everything internally and returns a list of events that occurred internally. For instance, if the user attacks an enemy, the board returns the events pawn attack, enemy defense, enemy damaged, enemy killed, etc...

This messaging system is really great for board games, in special because I wanted to animate all actions, one by one, sequentially. Each message have a different payload, which is used to update the visual object properly. You may see the messages while playing the game if the developer tools is open.

Animations are trick to do. The problem with animations is that you must wait it to finish in order to continuing the operation of the game, thus, making its operation asynchronous. However, as any asynchronous system, other things are happening while the animations are working, such as the user clicking and moving the mouse everywhere (which causes a bug on buttons, don't know how to solve that yet). To create this system, I added a job function attached to the scene, which can create multiple jobs and run that in parallel.

The job functions receives the duration of the job, the delay to start it, an update function which will perform the animation, and a complete function which is called when the job finished. Moreover, the programmer may stop every job at any time.

At last, I just want to recommend the Affinity Designer, it is a wonderful software for vector drawing, and it save a lot of time with the automatic exporting. I used it together with the Texture Packer and a small script to make the sprite sheet. It was really efficient: I save the document; the Affinity Designer export everything to a specific folder; then I just click export sprite sheet on Texture Packer (I only have to add new sprites if I create new ones); and run the script (I have a console ready to execute it), and done.

Images

screenshot-01.png screenshot-02.png teste.gif

Small Board is Ready to be Played

Just uploaded the game!

  • Entry page: https://ldjam.com/events/ludum-dare/38/$25605
  • Play it: http://renatopp.com/games/small-board
  • Post-mortem: https://ldjam.com/events/ludum-dare/38/small-board/development-of-small-board

screenshot-01.png