About ladybenko (twitter: @ladybenko)

Entries

ladybenko's Trophies

Featured in GeekyJuegos.com
Awarded by GeekyJuegos
on May 18, 2016

ladybenko's Archive

Terrartisan (end of day 1)

Posted by (twitter: @ladybenko)
Saturday, April 22nd, 2017 4:48 pm

Finished for the day! The game will be a puzzle day based on terraforming little planets. I’m well behind of schedule, but I’m heading to sleep nevertheless.

desertification

Let’s see what I can come up with tomorrow…

Post-mortem of “The Language of the Gods”

Posted by (twitter: @ladybenko)
Tuesday, August 30th, 2016 10:41 am

Hi all!

I wrote a post-mortem for my game The Language of the Gods, and I’m publishing it here as well. I hope you like it, and please play my game and tell me what you think! :)

> Play The Language of the Gods <

Log

Saturday

I woke up at 7AM to see the jam’s theme, “Ancient tech”, and went outside for a long walk to feel refreshed and let my mind wander a bit. Then I headed to a café to have breakfast and do some brainstorming. I really love doing mind maps for jams, it really helps me in finding out ramifications of the theme.

Photo of mind map

And then I had an idea I really, really loved. It was a story-driven game with the plot involving an explorer in an deserted alien planet trying to figure out how to get back home and discover the secrets of the now long lost alien civilization. Topics would include Good & Evil, the nature of reality, personhood, etc.

And to deliver all of this, I envisioned a kind of atmospheric game, with lots of exploring, some puzzles and opportunities to chill out while you go unfolding the story.

Still at the café, I doodled some concept art:

Concept art

Problem with this idea? Way huge for the scope of a game jam. But I wanted to make something with this idea, so I considered two choices:

  • Make a Twine game and focus on the story.
  • Make a vignette that captures the atmosphere I wanted.

I was reluctant to opt for Twine because I had never used it before. So I chose to make a vignette as a proof of concept and see whether people would like that kind of game or not.

As you know from previous post-mortems, I like to spend the first day of Ludum Dare coding, and leave art for Sunday. However, when I opened Pyxel Edit to draw some placeholder art, I couldn’t stop myself and I ended up drawing a pixel art version of the sketch I made at the café.

Pyxel Edit in action

For the curious, I used the Dawnbringer’s 32 colour palette, that comes as a preset for Pyxel Edit –having a reduced colour palette helps me a lot in drawing pixel art. And then I found out this app could export a PNG with all the tiles (a tilesheet), as well as a tile map in JSON.

So, TL;DR: no placeholder art this time.

There was a problem, though: Pyxel Edit tile map’s exported files were huge. Even after minifying, they were still heavy. So I added a task to my Gulpfile to manipulate this JSON and only include the information that I needed. The result? Going from more than 500KB to 8KB, something more reasonable for a map!

After lunch I resumed programming and had a bit of trouble trying to import the data. My first strategy was to mimic Tiled’s file format, since Phaser could directly import that. However, the map was not being loaded properly, so I gave up and imported the data into a Phaser.Tilemap myself. Once I had the map rendering, I included the main character and some passing clouds as decoration.

Since story was important, I decided that the next thing I should do were to display text. I drew a tiny font, using PICO-8 font measurements (3×5 pixels per character). And then implemented rendering of text of up to three lines.

Now that I think of it, I did quite a lot of stuff on Saturday, but at that time I went to bed with the feeling that it was not much, since there were many more things I would have wanted to do.

Progress before bed time

Sunday

I woke up on Sunday and did the same as the day before: going out for a walk to get fresh air and clear my mind.

I was worried about gameplay. “Will my game be fun if it’s just an story?”, “If so, should have just made a Twine game?”, “Maybe I should make big levels and allow for exploration”, “Maybe I could add some puzzles to it”.

I started to code events –so I could implement a story– and refine the text display.

A more advanced display

After that, I needed to include some puzzles. I knew that in the grand scheme of the game the game’s beginning mistery would have to do with music, so the simplest puzzle I could come with was Simon.

Once the mini-game was created, I implemented the artifacts that would launch the puzzle when being interacted with.

Artifact animation

And then this made the first playable version of the game! I uploaded it and added a message once the puzzle was solved asking for encouragement and feedback! I really needed some cheering up –and it worked, by the way!

First playable version

It was already the evening, and I still had a lot to do. It reminded me a lot of once of my previous Ludums, where I overscoped and I submitted a really rough entry. But somehow I managed to keep my cool and not panic much. It was obvious that I wouldn’t have time to do a lot (or big) levels, so I decided to cut that part without too much drama from my part.

I went to draw some simple animations for the main character and got hooked into Pyxel Edit again, and ended up doing more frames that I wanted to!

Idle animation

Walking animation

Animations in game

It was getting late and I still hadn’t a story in place, so I coded bits of the story in that single level. I made a mistake and I should have hardcoded the whole thing, but I wrote some kind of semi-generic system instead.

Lastly, I drew another level, this one featuring another type of object that was not an artifact: a crashed spaceship, that will add a bit of info to the story. This level also acts a bit like a tutorial, showing the player tooltips about how to move and how to interact with objects. This has been the first time I included an in-game tutorial in a Ludum Dare and I think it worked wonders: nobody asked me how to play the game.

Tutorial level

After that it was about 11PM and I still needed to compose some background music! The game already had some sound effects, so gameplay-wise it was OK, but music adds a lot to the atmosphere and mood and that was one of the aspects I wanted to try out and get feedback about!

I used Audiotool for music. I’m still not proficient with it, but I had learned enough so I could comfortable remix some samples and even play a melody with a custom-made sound from a synth.

After integrating the music into the game, I just needed to create a title screen and run a few walk-troughs to make sure everything was OK. I ended up submitting my entry at 1AM, despite I was aiming for midnight, as usual. However, it felt amazing to finish and have something playable!

Title screen

What went wrong

  • I chose to do the maps (not the actual drawing of art, but the building of the levels) with Pyxel Edit, instead of Tiled. This caused a delay because I then needed to minify them and write custom import code for Phaser, instead of relying of Tiled, which is the preferred format for Phaser and just works out of the box.
  • Overscope. I knew from the beginning that my game was too big and that I would have to settle for a tiny fraction of it, but I was having some bad feelings on Saturday night about me not having made enough progress (this is The Wall, and I have talked about it before).
  • I was not strict in terms of meal times –I was so in the zone that I would forget to eat–, and it made my stomach quite upset.
  • I ended the jam after midnight, and then I was so alert that I had a rough night afterwards. Other jams that I finished before midnight I was able to sleep as usual.

What went well

  • I did not give up! And I think this is my best entry for a jam ever. Although I will always have a soft spot for Metal vs Hipsters, I think that this entry is more solid and polished.
  • Pyxel Edit was easy to use and a bargain for its price and features. I will keep this app as my go-to pixel art software. Bye, bye, Asesprite and Pixen!
  • I was able to manage overscope. I think the resulting game is extremely short, but it definitely can be considered a proof of concept. I think that the game captures the atmosphere that I had in my mind and the mood I wanted to convey.
  • I got a lot of good feedback and encouragement on Twitter! This helped me to overcome The Wall on Saturday night and not give up.

Tools

Code:

  • JavaScript as a language.
  • Phaser as a game framework/library.
  • Atom with vim key bindings as text editor.
  • My gamejam generator to create the initial project template and automation tasks.
  • Gulp as a build/tasks system.
  • Github and Git for version control and online backup.

Audio and graphics:

  • Pyxel Edit for pixel art and level building.
  • Bxfr to generate sound effects.
  • Audiotool to arrange the background music.

Misc:

  • A sketchbook for brainstorming and concept art.
  • Twitter to post WIP screenshots / GIF’s and get feedback.

Surviving LD (and of course, I’m in!)

Posted by (twitter: @ladybenko)
Tuesday, August 23rd, 2016 9:08 am

Hi everyone!

I’m really excited about LD this weekend. The other day I was writing some tweets with tips for succeeding in a game jam –I have participated in many– and a friend suggested that I should compile them in a post and develop them a bit further.

And so I did! Here’s the article: Surviving Ludum Dare. I hope it can be of help.

PS: Attaching a comic I draw after a missed LD because I was on a business trip :_(

webangelist_005

Sky Panic – Log

Posted by (twitter: @ladybenko)
Tuesday, April 19th, 2016 10:10 am

Hi, here’s the log I compiled of the development of my entry: Sky Panic. It’s a cute shump, where you can shift your ship from fighter to bomber mode.

> You can play & rate the game here <

Screenshot

Log

Saturday

I woke up early (7:30 AM) to see the theme, since the jam starts at 3 AM in Europe. Unfortunately I quickly discovered that I was feeling like crap: headache, nasal congestion, stomach pain… It felt like my body was fighting some kind of flu/cold bug. I like to start my jams by doing some kind of exercise (usually a light run), but I settled for a walk outdoors instead.

I brought a notepad and pen with me and started to create a mind map of the ideas I could come up related to the theme. I came up for some ideas I liked, but they required quite a big amount of assets or game design, so I wouldn’t have time to implement them during the weekend.

My mind was really clouded because of the headache, which didn’t help. In the end, it was around lunch time, so I decided to cook a chicken stew, and decide on an idea while having lunch. And the winner was… A cute’em-up! It’s a variation of the classic 2D scrolling shooters (not FPS), only with a cute theme / art.

I had prepared beforehand the Github repository and created the initial scaffolding with the help of my game jam template generator.

Development that evening was slow but steady. I took plenty of breaks to rest: I played a few Hearthstone games, read some articles, watched some TV-show episodes… I didn’t want to overdo it and fall really sick.

By almost 5PM I had already a ship that shot bullets. It seems simple, but this first step serves to set up some systems I needed in place: how to handle movement, getting player’s input, implement a sprite pool, etc.

Shooting

Note that although I was just using placeholder graphics, I already decided on a palette / mood. All the sprites of the game would be created with PICO-8 16-colour palette, which I personally love.

The next step was to create enemy waves that would follow a pre-determined path. Although there is a motion paths tutorial for Phaser, I didn’t quite like the fact that the example plotted every single possible pixel. The paths I had in mine weren’t that complicated, so in the end I just ended up creating a series “waypoints” the enemies will reach one by one.

An old-school trick to make a sprite reach a point is to ease out that movement at the end so the sprite ends up really, really close and you can finally “snap” (or round up) its position to the target.

This is an snippet from the source code. Here I’m also clamping the maximum speed so the easing only takes effect when the distance to the target is close.

if (distance > FUZZY_EPSILON) {  
    let angle = this.game.math.angleBetween(
        this.x, this.y, target.x, target.y);
    let coeff = Math.min(distance * 0.05, 1);
    this.body.velocity.setTo(
        Math.cos(angle) * MOVE_SPEED * coeff,
        Math.sin(angle) * MOVE_SPEED * coeff
    );
}

By dinner time I had already some flying enemies spawned in waves, following a motion path. I also implemented a simple flashing animation for when the enemies get shot (they can sustain multiple hit).

Wave

And right before going to bed (around 11:30 PM) I implemented the shape-shifting mechanic. You can switch to bomber mode to shoot bombs instead of bullets! The idea would be to use this weapon to kill enemies in the ground.

Shape-shifting

Sunday

I overslept, but I don’t regret it because my body really needed it. Once again, I went outdoors to have a walk and get some sunshine. Right before lunch I managed to implement some ground enemies –which I called crawlers– that would shoot at you and you needed to shape-shift to bomber mode to finish them.

Crawlers

This was beginning to look more like a game! I implemented the score, infinite enemy spawning and a game over condition. I then added some basic sound effects I quickly created with an online synth, and uploaded this first playable version to my server so other people could play it.

Score and game over

I also created a simple background music loop, which is short, but has a bass line I like.

Once basic gameplay and audio was in place, I could finally start doing some art! These are some samples:

Fighters

Bomber

I’m also quite proud of the explosion animation –it was the first time I was drawing one! I decided to go for this approach because I wasn’t confident to be able to implement particles on time (and I was right!).

Boom!

As you can see, I added some clouds. These serve to create the illusion of a scrolling background.

I uploaded this version with final graphics so people could test for some crashing bugs. I was lucky there were none! To finish my entry, I added a splash screen with controls information and uploaded the game to some mirrors (Github Pages and my page at itch.io).

Mission accomplished!

> Play Sky Panic! <

Post-mortem of Tales of the Underworld – Lessons learned

Posted by (twitter: @ladybenko)
Tuesday, August 25th, 2015 1:05 pm

Hi, these are the lessons learned for Tales of the Underworld: Rebellion of the Souls, a retro platformer for the compo. You can play and rate the entry here, and also read a step-by-step log on how the development process went.

Overall, I’m pretty happy with my entry. As explained in the log, I almost gave up on Saturday night, but still managed to pull out a finished game. That said, there is a lot of stuff I need to improve for next time!

Coins

What went wrong

  • I didn’t do a brainstorming with possible themes in advance. I could have done so and save a little bit of time in Saturday’s morning. It took me many hours to decide what I wanted to do.
  • I couldn’t have a very resting sleep. On Friday’s night there was way too much noise in the street, and on Saturday’s night I got some giant mosquito bites that were really itchy.
  • A level editor. Please someone kick me if I think on doing that again in a jam.
  • I overscoped and had to cut off a lot features. If I knew these features wouldn’t be in, I would probably have chosen a different game to implement.

What went right

  • Lots of feedback and support on Twitter. I think putting screencaps and a URL that people could play instantly helped a lot to get this.
  • A friend managed to stop me from quitting on Saturday night.
  • No nasty bugs <3
  • I found a simple, cute art style that really suits the game and allowed me to produce animations (unlike in my last Ludum).
  • I manage to cut off features and I still ended up with a playable game –although not as cool as I wanted it to be!

Tools and tech

  • Phaser as a JavaScript game framework.
  • Atom text editor with vim key bindings.
  • My gamejam generator for scaffolding the project.
  • Gulp for automation.
  • Bxfr and Garage Band for audio.
  • Pixelmator and a Wacom table for drawing.
  • Git and Github for version control.
  • Lots of rock & roll and heavy metal!

Hades
> Play & rate makes Hades happy <

LOG – Tales of the Underworld: Rebellion of the Souls

Posted by (twitter: @ladybenko)
Monday, August 24th, 2015 2:38 pm

Here’s the log of how the development went for my entry, which you can play & rate here. I joined the compo, so it was only me and 48h to get a game!

Saturday

Saturday was… terrible.

I woke up early to see the theme (which was published at a US-friendly hour, but here in Europe was at 4am) and think about it. I had a rough night because of a noisy fight in my street –police included–, but I managed to get out of bed at 7am. The theme was “You are the monster”. I had a shower, read some posts at the Ludum Dare website showcasing what other people were doing already, and then headed outside to buy some food and have breakfast.

I settled for a platformer game in which you would control Hades, the God of Death (I guess that is monstrous enough), trying to reconquer the lost Underworld.

And then I made a big, big mistake: I started to create a level editor because I thought that having this in-game would allow me to create levels faster. BIG. MISTAKE.

I could –should!– have just used Tiled, a map editor that can export to JSON. But I don’t like Tiled (it’s complicated) and thought that I could do something more simple. It turns out that you really don’t have time for this during a 48h game jam.

Finally at 9:30pm I had the main character with basic movement.

Character movement

I was way behind the schedule. Usually at game jams I try to spend one full day coding, and another full day doing art, level design and fixing bugs. And it was night already, and I didn’t even have enemies!

I managed to put some victory (reach a point in the screen) and losing conditions (touch the red tile) and decided to call it a day. I also included some sound effects I generated with Bxfr.

Victory condition

I was in bed and thought about quitting, since it seemed obvious I wouldn’t be able to pull out the game on time. I texted a friend of mine, and she told me something on the lines of “Stop the editor. Start from scratch if you want. You don’t need a weekend to make a game, you can do it in just one day”. I wasn’t fully convinced, but decided to sleep on it.

Sunday

Sunday was amazing!

I woke up at around 8am and I thought I would keep on working on the game. I didn’t think I could finish it on time, but I still wanted to implement a platformer in JavaScript and it looked like a good opportunity to have at least a prototype.

I had a long walk outside, had breakfast and went back home to keep on coding.

While I was implementing features I was tweeting about it, with animated GIF’s showing progress (much better than static screenshots) and a URL to play the game while it was still work in progress. I think this was key for Sunday’s epic wins.

By 11am I had a working scrolling scenario:

Scroll

And two hours later, there were enemies populating the world!

Enemies

By this time the level was fully playable and I started to receive feedback on Twitter about the character’s body being too big, or some bugs.

I still wanted to implement more features, like being able to kill enemies with a weapon à la Alex Kidd, but I really needed to start to work on the art.

Unlike last time, I was sensible enough to choose an ultra-simple art style. I picked up a minimal colour palette and went for retro pixel art. Meet Hades, the main character:

Hades

After that, I did some animation for the enemies too and integrated them into the game:

Main character and enemies animations

Then the lava…

Lava

And finally the tiles!

Tiles

By this time I had friends competing between them to see who would finish the level by going through the most difficult path! They suggested to implement atimer so they could see who would finish it faster. I ended up doing it, of course.

By 5pm I was mostly done with the art. I drew the background and also the item you needed to catch to complete the level (a pomegranate). I also quickly put a song together by mixing and tweaking some samples in Garage Band.

Background

I found out that I still had some time to implement a few more features andcreating multiple levels. I put in the chrono my friends asked me to. I also created the title screen.

Chrono

And the new feature I decided to add –since it was more simple than others– was to have pickable objects (like the rings in Sonic). It was the first time I was drawing a rotating coin, but I think they are very cute.

Coins

I didn’t have time for more, so I decided to start to create levels. By 11pm I had five levels!

Levels

Since I didn’t took Monday off I couldn’t stay up late to keep on polishing things. So I took some screenshots and prepared my submission for the competition. It was midnight, I was exhaused but I did it.

I’m in

Posted by (twitter: @ladybenko)
Friday, August 21st, 2015 11:21 am

I’m in!

I’ll be making a HTML5 game. The tools I intend to use are:

  • gamejam generator for yeoman to scaffold the project
  • Atom text editor with vim key-bindings
  • Git + Github for version control
  • Bxfr for sound effects and GarageBand for music
  • Pixelmator and a Wacom Intuos for graphics

Happy ludum-daring! :)

Metal vs Hipsters: Lessons learned

Posted by (twitter: @ladybenko)
Monday, April 20th, 2015 2:32 pm

Metal vs Hipsters is my entry for the compo. I went solo and had a blast! You can play and rate the game here :)

Screen Shot 2015-04-20 at 02.13.19

 

I created a full post-mortem at my blog, but here’s the “lessons learned” extract. Once I have time I will upload all the images to copy the log, which I think is quite interesting!

What went well

  • No junk food or energy drinks. Also, clean and tidy environment (I was cleaning up on the go, so no dishes piling up in the sink, etc.).
  • Went for a more simple idea that last time (still not simple enough).
  • Achieved a consistent graphic style in the game. People seem to like it!
  • Took Monday off. This allowed me some extra 4 hours, and the game got so much better in these 4 hours…
  • Capture some GIF’s of the game and tweeted the whole process. This allowed my friends to give me lots of encouragement! And also it made much easier to compile the log here.
  • I was tired, but I managed to be stress-free the whole time. I credit this to the food / environment / workouts.

What went wrong

  • I lost almost an hour setting up the code environment! I should have done this in advance.
  • The idea was not simple enough. Well, the gameplay itself is simple, but it isn’t much juicy. It really needed more stuff, and I didn’t have the time for it. I should have thought on just one core mechanic that didn’t need anything else to be fun.
  • Lack of proper audio skills! It really showed up in this competition. I reallly need to learn how to create music.
  • Complicated art. This lead to non-animated sprites. Always bad choice :(

Tools and tech

This is a very unexpensive setup. If you’ve never done game dev before, please consider give it a try!

  • Regular HTML 5 game. I used the Phaser game framework and I’m pretty happy with it. Great performance, great documentation. It even runs in mobile browsers.
  • JS libs and tools: Gulp for automation (live reload, local server, deployment, etc.). Browserify for modules.
  • BXFR for sound effects and Garageband for the main song.
  • A small Wacom tablet and Pixelmator for the art.
  • LICEcap to capture animated GIF’s <3
  • Atom with vi key-bindings as text editor.

And tons of heavy metal! \m/

And this is the end…

Posted by (twitter: @ladybenko)
Sunday, August 30th, 2009 2:47 pm

Finished my entry for the LD#15. It’s a pity I didn’t have enough time to include all the features (enemies, power-up’s, lots of blood, stalactites…) I thought at the design stage, but at least it is playable. I think I might continue the development, though.

I’ve had lots of fun! This was my first LD and I’m really satisfied. See you in the next one! 😀

Title screen

Title screen


The Evil Dark Cavern Which Leads Straight To Hell

The Evil Dark Cavern Which Leads Straight To Hell

Gimme some blood

Posted by (twitter: @ladybenko)
Sunday, August 30th, 2009 1:18 pm

I wish I were on a different time zone. About 8 hours to the end of the compo, but I need to go to bed in 1 hour so I can wake up early and go to work :(

Anyway, progress until now: the character now can collide against stalagmites and bleeds to reflect that. Bleeding is achieved with particles and the collisions are detected with simple rect bounding boxes.

Character bleeding

Character bleeding

I don’t think I’ll be able to include enemies, power-up’s or falling stalactites. However, I’ll try to include victory and game over conditions…

Character

Posted by (twitter: @ladybenko)
Sunday, August 30th, 2009 7:14 am

I’m soooo censored behind schedule. Progress so far: cavern now has stalagmites and a character with a sonic board (of course this is just an excuse to not draw running animations).

Game character

Game character

Scroll!

Posted by (twitter: @ladybenko)
Saturday, August 29th, 2009 9:06 am

After having lunch (I didn’t take photos, but it was fish, cheese and a salad) I re-did the cavern image, since I had to drop the first version. This time I draw the cavern in two layers, texturized them with the previous cavern background and then drawing lines to achieve a ‘hand-drawn’ effect. You can see the full picture here.

About coding stuff, I did the game states transitions with fading, and also a parallax scrolling background. I like how it’s looking! :)

Parallax scrolling background

Parallax scrolling background

First Ludum Dare

Posted by (twitter: @ladybenko)
Saturday, August 29th, 2009 3:15 am

Hi guys, this is my first Ludum Dare compo :)

When I woke up this morning I went to the LD site to know the theme for this compo: caverns. Kind of turn off, because I had a nice idea for a zombies game. I had a shower and thought about what kind of game I’d do: a running game. Not very original (I found out that other people are making this kind of game, too!), but I just want to have some fun this weekend, so no added pressure for winning.

This was my breakfast (was super-hungry this morning): three mini-sandwiches of ham and cheese, with olive oil. Plus some coke. I needed caffeine and I’m not very fond of coffee, so…

Saturday breakfast

I downloaded an IRC client and joined #ludumdare for first time. There were 105 people in there O_o I didn’t know LD was so popular. I asked if I could borrow a public-domain or free picture, and I was told that yes, as long as I alter the picture somehow. I went to Wikipedia and found a nice CC-By photo of a cave. I spent almost an hour working on it, and got this (click to view full picture):

But when I finished, I took a closer look to the compo rules and… it turns out that I can’t borrow any pictures! :( I was quite disappointed because I threw away precious time, but hey, better to find this kind of stuff sooner than later! I drop the picture and drew some kind of floor to use with the game.

Now I’m downloading some Machinae Supremacy songs and start to code the framework (game states, sprites, and so on) of the game. I’ll be using Ruby and Gosu, so I’m expecting to have lots of fun :) See you!

[cache: storing page]