GameDev service providers panel at Colombia 4.0

One of the things I was looking forward the most for this year’s Colombia 4.0 was the panel with founders and CEOs of Colombian game development service providers.

The panel featured Enrique Fuentes of Teravision Games, Carlos Rocha of Below the Game, Eivar Rojas of Efecto Studios and Ivan Álvarez of Timba Games.

20181026_101717.jpg

Here are some takeaways of the panel, moderated by Chris Wren (ExDev Producer at EA):

  • Providing development services is a great way for a new or growing company to get funding and learn a lot in the process, this doesn’t have to be a pain even if your dream is to create your own games… there are fun projects to be made for clients.
  • You have to make a game first. There’s absolutely no way someone is going to hire you otherwise. You also need the ability to build a relationship with the client, communicate using their language, and learn and assimilate their business culture.
  • Creativity is at the core of video game development, but in order to build a successful business around it, you need to establish processes that can be reliably replicated through different projects.
  • You are going to face a lot of challenges, every time you face a situation try to figure out why it happened to prevent it from happening again (again, use the newly acquired knowledge as an asset to enhance your processes).
  • To get your first contract you need luck in order to find a good opportunity, but you also need to be ready with a game to show and push forward against adverse factors without giving up.
  • Go to events and talks, introduce your work to industry figures and speakers, that will help you get connected with companies if they like you.
  • We started working in an existing engine and build upon it; the creators of the engine were impressed by our work and hired us. This first client has evolved into our current development partner. Building long time relationships often help.
  • Initial cash flow issues and technical challenges were common when we started. Some things that helped were having people specialize in specific project roles creating a pipeline to be more efficient.
  • One thing is planning to make a pipeline and another one is implementing it with local talent. We learned it takes time to build a working team. You need to provide the team with challenges and tools.
  • We doubled team size too quickly in order to have the capacity to handle incoming projects, just to lose some of them afterward while keeping the additional fixed costs we acquired. We fell into irresponsible growth, we recovered but was painful. To prevent this it helps to grow in small “cells”.
  • We are building industry so that newly formed developers can have a place to work. Look for companies at IGDA Colombia website, send your portfolios, companies are always looking for good talent and people that understand core concepts of development.
  • Not all developers are motivated by the same kind of projects. For some developers, it might be more motivating and fun to work in “work for hire” projects, which may be more straightforward than own IPs for indie games.
  • Stay true to what your company wants to be good at making, know when to say no to a project. We have less diversity of clients every time, but we feel being focused has great advantages.
  • Find the genre of games you like, work on it every day and show your work to the world.
  • If you want to work developing video games, take advantage of the current moment of the industry, there ARE places to work in Colombia. It is challenging to get a job but be up to the challenge, even if your plan is to have your own company in the future, you can learn a lot.
  • Don’t approach game development as someone eating in a restaurant, but rather as the passionate chef in the kitchen, working constantly and focused into making better food experiences every time.

20181026_111338.jpg

After the panel, the participants were approached by students and developers eager to show their work.

Ananias RoguelikeCel 18 Tournament!

The Roguelike Celebration 2018 is coming! We are celebrating it with a new Ananias Roguelike tournament with Cool Prizes! are you bad enough to win the tournament?

Prizes!

1st place 2nd place 3rd place 4th place 5th place
Money 50$ 20$ 10$
Ananias Box with instruction booklet X
Original Art Card X X X
Paladin Red T-Shirt X X X X
Ananias Stickers Set (8) X X X X X

 

How to participate

  • Share your Gravestone page, including a screenshot of your journey, via twitter using the #ananias18 and #roguelike hashtags. (See here for a Gravestone page)
  • You are also encouraged to share it on reddit but it’s not required
  • You can submit your character any time before October 7, 4PM PST
  • Participate playing in any valid official 2.4.4 version of the game, including Android, iOS, Steam and Web. No Fellowship Edition required.
  • You can also participate playing in person in the Roguelike Arcade at the Celebration (but it’s not required)
  • Winners will be picked based on the standard scoring criteria (depth level, then kills)
  • You can use any class / pet combo

Notes:

  • Money Prizes to be awarded via Paypal
  • Ananias Box and Manual – No diskette
  • T-Shirts available in limited sizes – To be awarded as available.
  • Sticker set will contain assorted characters as available.
  • Physical prizes will be delivered in person at the Roguelike Celebration on Sunday October 7. If you are not attending then they will be sent to you for an additional Shipping cost to be paid via paypal.

FAQ

  • How can I get the gravestone page for my character?

Just create an account in the game, and then when your character dies or ascends use the “Gravestone” button

gravestone

ArcherFire: Duet of Aces – js13k 2018 – Part 1

JS13k 2018 has gone by! this is the first of a series of posts detailing my journey, as well as the structure of the game I built. You can play it online here!

Links to the full series: part2part3postmortem

Before Coding

I wasn’t really sure what to do, I actually was wondering if I was going to be able to participate at all, but the weeks before coding I toyed in my head with several different ideas… one of them would be a mobile entry based on my Energy Radar project (which is inspired by Pokemon Go), running completely offline but allowing players to interact and capture monsters as a team. I decided against it because of it being maybe too big in scale.

20180913_210812

Another one would have been an offline life simulator, someone living on the forest, fishing, something more of an experience than a game since there would be little stress, this would have been more heavy on the graphical side so I abandoned it (more so as the deadline was getting closer)

20180913_210757

Finally, had an idea of a non-linear “Space shooter”, keeping some of the Energy Radar ideas on offline interactivity, players could fly from planet to planet; once in a planet, they would input a code from another player on the same planet, which would allow them to advance on the plot.

20180913_210742

Knowing that I may very well wound up doing something completely different, but I had to start somewhere, I went with this idea.

Day 1

At first, I tried to use source from Lost in Asterion (my js13k from 2017), but lost a lot of time. I went instead with a fresh copy of js13k boilerplate. I modified the example and was able to have a static starfield in little time.

Since this was going to be a non linear shooter, and I thought having a “lerping” camera effect would be cool, I invested a lot of time trying to make the “camera” work (again, based on Lost in Asterion). It worked, almost, since I wasn’t really tweening it but rather handling it as an object on-screen with acceleration and position, so it was hard to make it “stick” to the player once it reached him.

I also added simple keyboard input to move the “ship” around, and with the camera following it, it was a rudimentary space scene.

Screen Shot 2018-09-03 at 11.05.36 AM.png

Day 2

After giving it some thought in my head, and reading my postmortem from 2017, I decided to go on a different route. I would instead focus on making a simple arcade game, and use the 13K to add as much eye and ear candy as possible.

I ditched all the work that I had done in the camera since it was now going to be a linear game (and it wasn’t really working very well)

With a more clear vision of what the game was to be about, I implemented a lot of things,

  • Collisions between player and enemies.
  • Bullets killing enemies, increasing the player score.
  • Removing mobs when out of the screen (stars, enemies, bullets).
  • “Serial rendering” of mobs allowing potential complex representations.
  • Render score with LCD like display.

Since I needed something to test my “rendering” system, I decided to design the player ship, I based myself on the ship from the original ArcherFire made in QBasic in 2002.

Screen Shot 2018-09-13 at 9.30.34 PM
Original QBasic Archerfire, 2002

Doing vectorial art, however, is something I don’t have any experience with. I can do _some_ pixel art, but this is a different beast. Plus I had to manually input the sequence of commands to draw each shape. I did the best I could with the little time I had.

20180913_210847

In the end, this design is represented as follows in the code:

‘#eeeeee’,’p’,-2,2,-4,4,-6,0,-4,-1,-2,-4,0,-4,0,2,’f’,’o’,’#0000ff’,’p’,-3,3,-4,4,-6,4,-8,0,-6,-3,-4,-4,-5,-1,’f’,’o’,’#dddddd’,’v’,0,-6,2.2,2.2,’f’,’o’,’#888888′,’vh’,0,1,2.5,2,Math.PI,2*Math.PI,’f’,’o’,’#ff3333′,’p’,0,1,-2.5,1,-2.5,2,-1.5,3,0,3,’f’,’o’,’#000000′,’v’,0,-6,2,1.5,’f’,’o’,’#ff0000′,’vh’,0,-6,2,1.5,0.5,Math.PI-0.5,’f’,

(Note that this is meant to be only half of the ship, the other half is drawn mirrored)

Since I was already drawing a scaled version of it, I figured I’d try to include a practical 3d looking effect when turning the ship, it did look pretty good.

Tried to build the game by the end of the day to see how I was doing with the size but found out there was a problem with uglify which didn’t let me thru.

js13k2

Day 3

Since I was no longer going for the “offline social” component, I wondered how to incorporate the theme. One obvious option was to provide hotseat multiplayer, and I ended up adding that.

Made enemies being able to shoot at the nearest player, and added the infrastructure to be able to create enemies given a set of parameters. Also added enemies cruising from left to right of the screen, and platforms with 4 mounted turrets.

Added explosion effects, since I didn’t have any tweening library and the rendering was being done manually, had to implement the explosion animation by drawing an expanding circle which would them be “hollowed” when dissipating. Drawing a “hollow” circle in canvas context2d was not as easy as I thought! I ended up using a weird trick to compose the path to fill: Draw the outer circle clockwise and the inner one counter-clockwise. I still don’t understand how that worked.

For SFX, I included again the good old trusty jsfxr. It keeps being useful even after years of not being updated. I added sounds for the explosions and the firing of bullets.

I saw that I still had plenty of space left so I began wondering how to include music. I tried minimusic, set it up and made it work inside the game with a test melody, but was unable to come up with anything half decent (guess why, I’m not a musician!). I left it there, asking a friend to see if he could maybe device something out of it.

Also designed one of the enemy ships (again based on ArcherFire 2002). I tried to implement some way to “rotate” its rendering but after spending some time on it gave up.

Finally, I added one first version of the “wave generator”, that is the thing that puts up new enemies on the stage as the player goes thru. After putting that I found myself with a rudimentary but complete game that someone might even enjoy!

day3.5.gif

Journey onward to Day 4 and 5, and then a detailed rundown of the game’s structure and some conclusions and thoughts!

Trailer for the Roguelike Celebration 2018

The Roguelike Celebration is happening again this year, October 6 and 7. I will be flying to SanFran to assist and also give a talk about the History of Roguelikes.

Had an idea running on my head for a while to make a “trailer” for the event (no one asked me for it). At first, I thought of creating a playable classic roguelike using my JSRL roguelike template. I actually did create the foundations for it (as in walk in a predefined map), but it lacked the cinematic potential for a short trailer. In any case, I integrated the “torch” effect from the unicodetiles.js example into JSRL, which may be useful. You can check out the integration here.

Screen Shot 2018-08-10 at 7.30.17 AM

Then I had another idea and I just couldn’t be at peace until I implemented it. I think it occurred to me a day while driving and listening to the Mega Man III OST. I thought I had found the perfect tune for it. So, even in a busy week with lots of work, I just had to do it.

The trailer features the awesome speakers’ lineup in a “robot-masters” NES Megaman stage selected style.

I implemented it using JavaScript and Phaser, you can check the source code here and the demo running live here

Of course, there’s little structure to the project since it was meant to be a quick job (and is also pretty simple). Most of the relevant logic can be found in a single Object, the Game state. I set up a stage with a black background and the gray strip, as well a Sprite object for the character and 4 text fields. I used a Megaman 10 font (I had found another one for Megaman 2 but for some reason, it could not be loaded as a web font), I performed a simple centering function based on each line’s character count to keep the characters as sprites in the grid (thus getting a bit close to being a NES “background sprite”?).

There was also a simple “particle” animation in the background, instead of stars they were small @ signs because, you know, roguelike. I used the same color palette used on the Roguelike Celebration logo for them.

Of course, the most fun part was doing the pixel art for the speakers. I used a bunch of Mega Man 2 robot masters as a base and then I proceeded on tweaking them for each speaker. The ones I know in person where easier, for the others I had to do a bit of stalki Internet research, I hope I managed to capture their likeness.

Finally, I reused the “Retro TV with scanlines” from Cat Cafe.

 

Interaction++ 2018.4 and some indie dev marketing tips

Screen Shot 2018-04-28 at 8.18.24 PM

Interaction” is a video game development meetup. They organize conferences in Medellín (my hometown) where they invite local developers to share their experience with both fellow and wannabe developers.

20180428_100759

They are now an official Unity User Group, and they are planning to create bigger and better events. Interaction++ 2018.4 was the first of these events, where they had three talks instead of a single one as usual.

20180428_101541

The first talk, “Introduction to Indie Marketing”, was given by Jorge Castaño of Amazing Soul games. It was an ambitious talk and it went well over its time limit, but it was pretty interesting.

Its first topic, foundations of marketing, gave an overview of some elements involved in the marketing of the game along with some useful  tips:

  • Create a compelling synopsis/summary to convert visits into installs.
  • Have at hand your Unique Selling Points: What makes your game different. This may help change a first negative / neutral perception and make the player give a second chance to your game.
  • The biggest markets like Steam, Play Store and AppStore are extremely competitive and it’s extremely hard to be noticed, smaller stores can even provide help with marketing.
  • China is a very attractive market for mobile but the AppStore and Play Store are dead there. Tencent is the biggest store, but rules are different.
  • A clear target market is a must to create an effective marketing campaign.
  • Set a target to be in the top 200 of the store (it’s impossible to get to top 10 without +100.000USD daily marketing or a lot of luck)
  • A great target for a small company is 5000 USD / day for 1 month. It should cover the investment in the game.

They also dug into some of the tasks of a publisher:

  • Localization (not only language but also cultural) can drive a lot of installs. For example, Games in China must be properly localized, and including Dragons as enemies into the game may be perceived as offensive. For Japan, 80% of the players will only play the game if it’s in Japanese.
  • Customer Care: Retention, especially important for freemium games in mobile. Some publishers provide a  support team.
  • Acquisition: It’s only part of the publisher task. Invest money to get more players.
  • Marketing: Material such as trailers, icons, screenshots, they often have a specialized team.
  • QA / Testing
  • Monetization: Make the game make money.

They also had some recommendations for Indie Publishers:

  • Tiny Build
  • Indie Fund
  • Adult Swim Games
  • Devolver

Publishers will normally take 30% to 60% of revenue, and it’s currently hard for them to give money upfront.

Some advantages of using a Publisher:

  • Better distribution channels
  • They have useful contacts with the industry
  • Higher visibility
  • Cross promotion, they will leverage players in existing games.
  • They assume part of the risk of investment
  • Years of experience.

If you don’t have a publisher, you must cover all the above by yourself to a certain degree.

This includes creating a marketing campaign to generate interest of the game even before it is launched.

Some things that help here:

  • Create a plan for your campaign with weekly goals and channels to be used every week.
  • Use analytics to update your plan. What is working and what is not.
  • Make a list of the websites, streamers or youtubers you want to cover your game. Start with the smaller ones, that will eventually bring interest to the mid-sized and the bigger ones if you are lucky.
  • Create a presentation template to get in contact with writers

Sucess doesn’t depend on money alone, being aware of all the different tools at hand helps greatly.

20180428_113944

In the second talk the guys from Dreamhouse Studios shared their experiences building three VR products:

  • A training program for the Colombian Army FLIR program. (Infrared scanning)
  • A multiplayer tower defense Halloween game.
  • A training program for the local tram system

They mentioned their second game has provided them with some cash flow by renting it to be used in malls and events in the city. They shared some details of their development process.

20180428_123413

Finally, the third talk was about the upcoming optimizations to appear on Unity to leverage on its Entity Component System to increase its performance greatly. This, in order to allow Unity games to run in lower-end devices, as well as extending its capabilities to manage a LOT of objects moving and interacting on screen.

All in all, I recommend their conferences especially to students or people looking forward to starting into the video game development industry.

Haunted Mansion – 2018 7DRL – Day 7, Finished!

Another year, another 7DRL. 14 of them now. Play it now here!

You are a Real State agent who visits an old abandoned mansion to assess its market value and put it on sale, but when you are inside, checking some of its ancient artifacts, you pass out and wake up in a room…. what surprises await for you in the mansion? Every time you play there will be a new adventure!

Credits

  • Design, Code and Integration by Santiago Zapata
  • Game Art by Giovanny Ramirez
  • Cutscenes by Bombillo Amarillo
  • Ambient Music and Sound Effects by Ashton Morris

I was only able to fit less than 2 hours on the final day (!). During the day I precompiled the list of things to be done in my head, to make the most of out the limited time I knew I would have. Here’s what I did during that final push:

  • Integrate the walking animation for the main character (!)
  • Add ambient music
  • Add doors opening SFX
  • Add intro sequence
  • Add endgame image and logic control.
  • Add losing condition (time limit, 20 minutes)
  • Fix issue with conflicting camera fades
  • Add instructions

As you can see, all of it was polishing, no new game content but I think it was worth it to provide a better end product.

hauntedMansionScr

I’m happy with the results this time. Following are the things I wish I could have included:

  • Slightly more elaborate puzzles: I wasn’t aiming for very complex puzzles, but hoped for more than just keys + doors.
  • Descriptions for objects in the mansion, including tying them to the (generated) history of the inhabitants.
  • More furniture and room types: Especially the beds, bathtubs, toilets and dining tables. I got some of them from Giovanny late on Sunday but it was too late to include.
  • A real mansion layout generator: A higher level generator which could decide the room types and positioning based on a general mansion pattern. (Sadly, right now rooms types are just randomly chosen).
  • Footsteps SFX: Time was running out and I couldn’t figure out a 5 minutes solution for this so had to leave it out.
  • Rooms of variable size with scrolling: Will probably require some tweaking to the engine since som many things are tied to the fixed size (had to do it because of the jam constraints)
  • Animations of the character walking up and down and a better walking animation.

On the other hand, this is a list of things I was very happy to achieve:

  • Setting the mood of the game, with the in-game art and the color palettes, as well as the awesome ambient track and SFXs and the intro scenes.
  • The engine for mansion exploration including item management (sadly couldn’t exploit it more)
  • The mansion layout generator, and tying it the engine which included transforming the 2D map into a logic structure.
  • The room generator which managed to create somewhat believable mansion rooms (and was pretty polished)

So far, only a couple bugs have been reported (and none of them seems to be a extreme blocker) which is good:

  • Sometimes you can escape the boundaries of reality and walk thru the background of the room
  • In some contexts, the game runs too slow. (Still trying to find out the causes)

I consider this is a complete game (go ahead and try to escape the mansion!), however I believe there’s potential to continue working on it. Here are some ideas I’m thinking on working on besides the ones already mentioned above (I’ll likely write a longer post about it in the future):

  • Multiple stories mansion: Stairways, balconies, towers.
  • Multiple ways to die.
  • Separate look and use commands.
  • NPCs lying around giving you info and driving the plot.
  • Scary moments!
  • Hidden rooms.
  • More!

Time invested: 30:31

mansionTime

Haunted Mansion – 2018 7DRL – Day 6

Getting close to a playable game, at least now you can roam the mansion and your advance will be restricted by locked doors for which you have to find a key. With some more efort we will have a basic game.

Coded the transformation of dungeon rooms into mansion rooms, effectively integrating the random layout generator into the engine.

Modified the Dungeon builder to generate sections separated by locked doors, and placing keys for the player to find, ensuring it’s solvable.

Splitting the mansion into sections, while not “realistic”, makes for a more interesting scenario given the time limitations. (Else there may be places worthless to explore, and determining the winning condition would be harder)

Screen Shot 2018-03-10 at 2.45.11 PM

While on a boring adults’ assembly, started thinking on the theming of the rooms, based on the list of objects at hand. Ended up with some room type definitions

Screen Shot 2018-03-10 at 10.50.20 PM

Used this to select the floor and wall types for rooms (as well as persisting the color selection).

Started integrating the content into the rooms, starting with some floor and wall decoration.

Screen Shot 2018-03-10 at 10.42.21 PM

To Do

  • Continue integrating different room types
  • Add character art and walking animation
  • Win and Lose conditions

Screen Shot 2018-03-10 at 10.56.11 PM