Colombia GameDev Summit – 2022

Medellín, Colombia. November 29, 2022

Organized by Rocket Ride Games, the first “Colombia GameDev Summit” took place at the Click Clack Hotel, offering food, drinks, and a very decent lineup of speakers for a great afternoon of game development experience sharing in the famed city of Eternal Spring.

Photo courtesy of Tan Grande y Jugando

Swedish indie game publisher Raw Fury had people fly to Medellin to meet with the local developers and share a little bit about their selection process.  Mea Nilimaa, Games Scout, opened the talks with recommendations on how to have a successful pitch, and some of the pitfalls developers commonly fall on when contracting with publishers: what happens if you fail a milestone delivery? what are your rights over the IP and subsequent sequels? and the other projects your studio is working on?

After the opening talk, there was a section featuring founders from Colombia game dev companies.

Luis Correa, a local from Medellin and founder of C2 Game Studio, shared the journey of “Project Monolith”, their ambitious action-adventure game that started development many years ago, was a recipient of an Epic Megagrant, and finally got a publishing deal this year. Luis shared the ups and downs of indie game development, and some tips to overcome the inevitable loss of motivation and push forward making the best use of the resources you have at hand and the skills of your team.

Isaac Cortissoz, CEO of Killasoft, from Barranquilla, gave a talk about their workflow which is based on a solid pre-production phase where all the fun decisions are taken and tools are developed in order to have a smoother (and boring!) production stage where you are just executing a well-laid out plan. A very intriguing talk that created a lot of conversation on the scenarios in which these ideas can be applied. Killasoft is currently working with NetFlix on a videogame for the hit series “Money Heist” (La Casa de Papel) as well as their game INNER.

Then we had old-guard indie developer Carlos Rocha from Dreams Uncorporated, makers of the hit award-winning jRPG Cris Tales published by Modus Games in 2021. He was very happy and excited to go back to having talks with a live audience and shared the journey of Dreams, how they evolved as a studio through many games exploiting and refining curious and unique game mechanics, and their process to discover and develop “seed” mechanics for their games, sometimes finding marvelous inspiration when looking the “normal” things with different eyes. Carlos revealed he hoped to continue developing games until his deathbed.

Gamedev legend Eivar Rojas, founder of the Efecto Studios (the second largest game development company in Colombia) and Red Minas Coffee (the most sought-after coffee brand by game devs worldwide, someday), shared their experience signing with publishers, the different stages of a publishing contract and what to look after when you are in each one of them, as well as their tips to grab the attention of a publisher and to know when to pitch based on the stage of the project, the target platform and monetization model.

The event was organized in a chill informal space of the modern hotel, which allowed the assistants to have conversations in between the talks while drinking delicious soda and cocktails. Talking with fellow developers we were really happy to see so many new faces, some of which may be active actors in the continued growth of the local industry.

A second part of the event featured (either by design or coincidence) a number of women in leadership positions in the Colombian game dev industry.

Photo courtesy of Tan Grande y Jugando

Sandra Castro from the “Tan Grande y Jugando” game development community, shared her updated GDC’22 talk ‘Breaking the Gap”, with insights about the role of women in the video game industry, the many efforts currently underway to improve it from the perspective of the Latin American game dev industry, and how we all can contribute to improving the situation from our respective positions as founders and workers of the industry.

Photo courtesy of Tan Grande y Jugando

Marcela Rincón shared her experience as Talent Management Lead for Teravision Games, the biggest game development company in Colombia, makers of the acclaimed VR game “Captain Toonhead vs. The Punks From Outer Space” and the gamescom’22 hyped “Killer Klowns from Outer Space: The Game“. She talked about the many roles that are required to develop a videogame besides art and gameplay programming (the two disciplines traditionally more sought after to enter the company), inviting people to consider specializing in these other roles and strengthening their networking to get into the industry.

Photo courtesy of Tan Grande y Jugando

Finally, María Carolina Visbal and Paula Buitrago, from Colombian game development-specialist firm “IE Law Bedoya Visbal” closed the event talking about the importance of having the support of a specialized lawyer assisting your team from the onset of any M&A or publishing deal, so that you can see all the possible outcomes and drive the negotiations around them, and prevent missing small details in the law that can become big risks.

As always this was a great opportunity too to meet with friends from the industry from all around the country! Many thanks to RocketRide for organizing the event, and I hope this is just the first of many!

JSRL, now with Graphics! + the story so far [0.0.4]

You can now create graphical (tile-based) roguelikes using JSRL. Check it out at https://github.com/slashman/jsrl which is also now set as a repo template so you can create yours more straightforwardly!

A tutorial is coming soon. The demo at http://slashie.net/jsrl was also updated to the GFX version.

The character-based display is (and will forever be) still supported. OF COURSE.

A Timeline

I also took some time to dive into the history of the project and back-version it (for no helpful reason other than history), so here goes a timeline of JSRL

  • March 2013 – Rodney is released for the 7DRL Challenge. The demo of the unicodetiles lib by tapio000 was super cool, so I created a traditional roguelike game using it.
  • March 2017 – During the development of my 7DRL, PokemonRL, I decided to create a JSBoilerRL “a template project other people will be able to use to create their roguelikes in JS. It’s powered by unicodetiles.js producing similar output as my 2013 7drl, Rodney.”
  • November 2017 – The initial version of JSRL (0.0.1) is released as a standalone project (since it had only lived as part of the PokemonRL repository) and is immediately used for Rogue Program.
  • August 2018 – An attempt to create a trailer for Roguelike Celebration 2018 using JSRL is made, but was deemed not to be cinematic enough.
  • March 2020 – JSRL is used as a foundation for Emerald Woods. No changes are backported into it.
  • October 202 – JSRL is used for the Roguenet client. No changes are backported into it.
  • March 2021 – JSRL is used for Rainy Day. JSRL v0.0.2 is released, adding support to load static maps. (backported from the development of Rainy Day)
  • March 2022 – JSRL is used for SpelunkyRL. No changes are backported into it.
  • November 19, 2022 – Version 0.0.3 featuring Electron packaging (dev pushed forward by wazoo) and viewport scaling (backported from Emerald Woods) is released
  • November 26, 2022 – Version 0.0.4 featuring tile graphics using Pixi.JS is released, in preparation for Emerald Woods’ graphical version.

Emerald woods – downloadable! (0.1.4)

The streak of weekly releases continues for now, hope you enjoy it!

Play online (or download!) at https://slash.itch.io/emerald-woods

Downloadable build

You can now download Emerald Woods so you can play offline easily any time you want. We are using Electron for this hence the big download size, but that shouldn’t be a problem in 2022 (luckily!). The recent update to JSRL was really helpful for this.

This also comes coupled with an “up to date” check done at startup, it will let you know if you are using an outdated version so you can quickly zip there and get the latest changes!

Note that, at least for the moment, I’m also keeping the online version up and working; also for the moment I’m only producing builds for Windows, but if you are on Mac or Linux you can still play online.

Exploration

I made some efforts to put some small constraints on exploration so it’s more interesting; you’ll now be heavily affected if you don’t sleep next to a campfire, losing a bit of your max health every day. Campfires are also a bit more expensive to create now and require Flintstone which is very rare (you start with 1 but can recover it by axing a campfire).

The idea behind this is to make campfires work as shelters, you need to build them at a given place to come back every night, dismantle and make another one deeper in the woods… if you want to explore further.

The starting cabin also has a “campfire” now, of course (should rename that to “fireplace”), so you can sleep cozily there.

Audio

The intensity of the walk sound effects has been lowered, and the sounds for inventory have been changed from a loud beep to something muter.

Got some new sweet sound effects from QuietGecko which were promptly integrated; these included sounds for crafting paint, building/destroying campfires, and painting stuff.

We also added a location-based sound loop for the campfires which we’ll be improving on the next versions so it fades based on distance.

Visuals

There are no big visual changes for this version, however, several icons were changed including the berries, berry bushes, and mushrooms.

Stability

  • A critical bug causing the game to crash when hanging around the map borders was fixed.
  • Several instances of missing checks to make sure the player could carry were added (when pulling fruit, capturing animals, crafting items, or sacrificing animals), before they would cause the grabbed item to be lost.
  • Prevent contextual action waterfalling when some action cannot be performed in the chain, and restore input accordingly. This was causing the players to execute the wrong contextual action when their inventory was full.

circular-functions 0.0.5

circular-functions, my JavaScript library to serialize objects with cyclic dependencies has been officially updated to v0.0.5 in npm! Get it at https://www.npmjs.com/package/circular-functions (or just npm install circular-functions of course)

This includes an important tweak I made over 2 years ago to support “intermediate” serialization data, i.e. stuff you need to put into objects in anticipation of their deserialization but don’t want to keep in memory afterward.

I still gotta write a good, up-to-date tutorial for circular, but it’s been indispensable for all my games.

Ananias, Emerald Woods and OpenArthurianX6 use it. You may find it useful to aid you in serializing and deserializing your game data!

Emerald Woods – Paint the world

After almost 6 days, here is a new juicy version, hope you enjoy it!

Play online at https://slash.itch.io/emerald-woods

New activity! – Painting (the world)

  • You will now find colorful berries scattered around the world
  • You can now craft paint using colorful berries.
  • Use paint items to paint the world around you or your items.
  • Note: You can currently “poly-paint” (i.e. stacks of items get painted the same color)
  • Note: Painted items are merged as a single color stack in the inventory
  • Note: Painting (as in making paintings) is planned as a separate facet and will be awesome.

Visuals

  • Change wall tiles to use block characters

User Experience

  • Add an explanation for movement modes
  • Pick things under the player if nothing in front
  • Add help for turning in Exploration Mode

Small fixes

  • Make campfire destroyable

Emerald Woods 0.1.2

After almost 3 years, here is a new juicy version, hope you enjoy it!

Play online for free at https://slash.itch.io/emerald-woods

The following are the major changes:

  • Full-screen mode!
  • Fishing v1: Build a raft and paddle inside a lake to get some fish.
  • Campfires now provide light during the night.
  • Crafting UX improvements: Imagine what you will make and then build a lot of them if you want.
  • Improved immediate on-screen help: Complete relayout and addition of the critical Transform command to obtain seed from fruits, as well as the toggle between Exploration and Work modes.
  • Increase hunger recovery for all items.
  • Tweaks in animal spawning parameters.
  • Fix critical bugs with an infinite inventory.
  • Fix bugs with an empty inventory.

Share your adventures in the community and upload your videos! if there’s enough interest the new version might take less than 3 years 🙂

TenderGotchi – js13k22

Js13kGames is a JavaScript coding competition for JavaScript Game Developers. The fun part of the compo is the file size limit set to 13 kilobytes. The competition started on 13th August and ended on 13th September 2022. The theme for 2022 was DEATH.

I managed to participate in the competition for the sixth time in a row, this year I went mostly on my own, as my fellow game-jammers friends were busier than me.

However mapedorr participated in spirit as his graphics ended up being used, and Ryan Malm contributed with awesome music and SFXs.

We ended up creating a cute dying virtual pet arcade game. You can play online here. Source code is here. There’s a gameplay video here.

Remembrance of the first day, August 13

The theme for this year’s js13k is DEATH. I talked briefly with my pal QuietGecko, but we didn’t have an idea of what to do. Throughout the day I was thinking about possible ideas, trying to avoid the endless loop of “Must think of a cool idea that is not too pretentious” -> “somebody surely thought of this already”. In the end, I thought I had something that clicked with the theme and also tied back to my original ideas.

Remember how the original Tamagotchi could DIE if you didn’t take good care of them? My idea was to take the format of the classic virtual pets, but transform it into a fast-paced arcade game where you must prevent its death; imagine time is running at 30x, and you have to respond to the needs of the pet quickly or risk him getting sick and dying.

The main interaction I planned to include was to pick what to feed the pet with, based on four available and shifting options where some of these may increase its happiness but reduce health, and some others may stuff the pet a lot so you should only use them when the pet’s hunger is empty or it will lose health. The food, happiness, and health bars would decrease steadily, and faster as the pet aged.

I also thought I would add some minigames you had to play with your pet when it reached certain life thresholds.

Following up with last year’s Distant Friends, the idea was to keep the visual style: cute characters using vector graphics. However, I would add a bit more in the shape of some nice-looking animations (with a super low, jumpy frame rate).

2021’s Distant Friends

Day 2 – August 22

Many days passed since that first day, I was super busy getting stuff done to travel to Cologne to Gamescom. So no work was done all along.

But then I decided to revive the yearly tradition of working in my js13k while flying, so there we go! this time it was a longer flight so that meant more dev time.

In this first coding session, I managed to create a complete game with a simple gameplay cycle. I reused my entry from last year, chopping everything I didn’t need, and created a simple game where you had to keep your pet alive by feeding it when it was hungry, with the caveat that they were doomed to die since it was impossible to hit the precise millisecond of time to prevent its health to degrade slightly due to hunger.

Also, the pet would poop, and if you don’t clean quick enough? DEATH. Death was to be so common that I added a ranking keeping track of your best effort to avoid it, but it’s inevitable.

However, you would also get to see LIFE, as the pets evolved from an egg to a full-grown creatures. It’s the balance of life and death.

When I went hands-on to remove stuff from my 2021 entry, I figured out that, in the end, I only reused some rendering code because the game was extremely different.

The plan was to focus on polishing from day 3, adding animations and cute art.

Days 3-4 – Around September 1

Gamescom was super busy and of course, I had to make the best of my time there, so I only managed to go back to developing the game during my flights back home. Due to timezones stuff and general trip craziness let’s count this as two “days” of dev.

At this point, I decided to regroup my ideas and draft them again in paper now that I had done a first dive into the code. I discarded the initial ideas of having multiple types of food and playing minigames with the pet, and instead focused on the frantic rhythm mechanic. I planned to add some additional distractions in the shape of items you had to pick, which would also give some variety to the gameplay.

I also considered changing the representation of the pet from vectorial to LCD-like, but ditched that in the end since it would have been a LOT of work and in general I think it was not needed, as the idea behind the Tamagotchi was that the virtual pet was inside the screen; the LCD matrix was just a charming byproduct of the technical limitations. (Actually, I was just lazy to remake that part and I wanted to reuse the art I already had from Mateo Robayo).

The paper drafts were also useful to get an idea of how I wanted the game to look like; since I wanted to make this for Gaby (well, at least a variant of it with much less DEATH), I searched the Internet for Pink Fong toys and found this one.

I toyed around with GIMP a little bit and came up with a mockup of how I wanted the game to look like. I wanted it to _feel_ like a plastic toy, with some feeling for physical buttons you would virtually press on the toy. Sadly, since I did this all on my own it ended up completely flat, so that one part was missed.

I went ahead into hardcore coding mode with these two things in mind, and managed to advance a lot into what looked very close to a finished entry now.

Day 5 – September 8

Ryan Malm, a fellow js13k comrade, popped up in slack offering to contribute to some entries with music, how could I refuse such an offer? he’s already created awesome stuff for 2 of my entries in the past! (ArcherFire Duet of Aces and Backpack Monsters).

However, there was a problem: Ryan uses soundbox, while the engine I had working used zzfxm. So I had to migrate all the sound support which was a bit fiddly.

I managed to do this, incorporate Ryan’s initial tracks, and program the “soft” buttons that would be used for the mobile version (at least that was the plan…)

Day 6 – September 9

This was kind of the last big push day; some of the things I did included:

  • Updated the “conversations” that would serve as an onboarding for the players
  • Added animations for the pet (low framerate, bopping up and down, blinking with its eyes)
  • Added unicode “hats” worn by the pet as it grows, to make it more visually appealing and make the players feel curious as to what the next evolution step would look like.
  • Also added the “animation” of the food flying toward the pet (very important for the player experience) since initially it just displayed the latest food given to the pet but it was very abstract.

I also put up and announced a public version for people to help me test. That was useful to discover a bug on Safari with the audio which was solved by not reusing audio objects (unneeded, harmful optimization), thanks to Ryan for pointing this out too! I also got some accessibility feedback leading to increasing the size of the “LEDs”, improving the mobile UI, and balancing the game to make the difficulty increase as you progress.

Since Ryan had some spare bandwidth, I asked him to produce an extended version of the main track, which he did ❤

Finally, I implemented web monetization features in the shape of a “hard” mode where you had a completely different pet (a gecko, also reusing graphics from last year).

The game was completed, and I felt happy about it.

Day 7 – September 10

Oh, one last thing before we call it a day…

Gaby caught me playtesting the game and went super sad when the pets died, what a shame! this is not what I wanted for a birthday gift for her!

So I went ahead and complemented the web monetization bonuses with a “chill” mode where the pet didn’t die. You just play for fun seeing it grow (at a slower pace to at least add some padding to get the rewards). That worked both to increase the value of the webmon bonus, and to make the client happy!

The Voting – What did the players think?

This year js13k had a brand new voting platform with a more traditional format (just pick a game from the list, play and rate it, compared to previous year’s 1 vs 1 “deathmatch” mode)

Here’s a summary of the feedback we received:

The GoodThe Bad
– The Music
– The Art
– The web monetization implementation
– Lack of keyboard commands
– The game is too hard
– The “pause” breaks the game flow.

The music and art were cool, of course 🙂 I think you’ll always need this for a successful entry. Competition is more fierce every year. It also helped that my game was SUPER SIMPLE; that allowed having good visuals without a lot of work, you got to be realistic about what you can achieve based on how much time you want to devote.

For the music make sure to partner with someone good like Ryan Malm or QuietGecko. These bytes will be extra worth it!

I was also happy to get some good comments about web monetization, since I really worked towards checking all the boxes, and it seems I succeeded in that. Keep these tips in mind!

[…] Let’s talk about the Coil bonus – the implementation in my opinion is just perfect. You’ve taken care about both – Subscribers and Non-Subscribers. You’re showing the bonuses in a visible way, you’re informing what they are, how they’re impacting the game, what to do to get them – perfect. I also like the idea of the bonuses – I can decide either I want to play easy or hard mode. Although the game wasn’t easy for me to understand right away (maybe you can think about some kind of a tutorial mode?), the Coil bonus is somethin I would call as a perfect implementation. Good job.

Ewa Mazur, expert.

Now let’s talk about the BAD.

And the biggest issue was the lack of keyboard commands, and again I think my biggest mistake: Increasing the difficulty of the game via inaccessibility. I think that’s in general a bad idea unless you are targeting a very specific group. Support for keyboard commands is actually included in the game, I just disabled it because I thought the game would be more challenging in desktop using the mouse and *I* could perfectly play it.

This issue, of course, is non-existing in mobile (the platform for which the touchable buttons were initially conceived). Keeping a different way to interact based on the available input would have been a much better choice, and finding a different way to balance difficulty in case it was needed (or just leaving it like that, with the desktop version being _easier_ than mobile, but still enjoyable!)

October 5 – The Awards Ceremony

We didn’t win, of course.

There are a lot of talented people putting a lot of passion into the js13k every year, and also putting down a lot of raw WORK.

Since the jam is 30 days long, there’s a very broad spectrum of entries with a different quantity of work invested. In my case it was 7 days; this could perfectly have been a 7DRL or similar. With many other things going on it’s impossible to devote a full month to this, but that doesn’t mean you shouldn’t participate.

There is a lot of fun to be had in the challenge, and as long as YOU are happy with the results, and you learned something or made some new dev friends or managed to extend your portfolio with a finished playable game, I believe that should be your main metric of success.

I also warn about this because the scoring system is not perfect, and you may end up disappointed that the game you put so much work on wasn’t “fairly” assessed. In the end, the main point of it is giving you feedback to improve.

This year we were placed #68 overall, #35 and mobile, and #19 in web monetization. I hope the TShirt isn’t stuck in customs this time! 🙂