2017 7DRL, PokemonRL…. FAILURE?

Alright… this year I just couldn’t make it. You can play the current version here if you want to take a look tho.

(Edit: Later on I decided the game was worth considering as a Finished entry, even if didn’t meet my whole expectations)

I made so many mistakes during the challenge that it seems I deliberately ignored every single piece of my own advise:

  • I created an almost complete roguelike engine from scratch instead of creating something lighter.
  • I didn’t have a clear goal and I spent too much time wondering what to do and switching plans.
  • I aimed blindly for an overwhelmingly big scope and didn’t think on an initial increment.
  • I didn’t make time to playtest the game nor gathered playtesters for the task.
  • I worked alone instead of building a team.
  • I didn’t have a plan!

And finally, the biggest mistake I made was not devoting enough time to add quality content to the game (a critical step of which Jeff Lait, another veteran 7DRL warrior, has warned about time and time again). This was basically what caused me to consider this a failure… I worked a lot on it, and it’s actually interesting, playable and it has a winning condition and some nice mechanics. There’s a pretty awesome empty cocoon which will require a lot of work to fill in order to provide a fun experience.

Sum all the mistakes above, and add up the “real life excuses” (Lost a day recovering from my trip to California and almost 2 full days in the release of Ananias 2.2, and it wasn’t an easy week at the office…).

I may have been able to pull a mediocre “successful” release if I had neglected my family even more, but I feel better I could spend some time with them and bring them some comfort in times of conflict. 

Enough crying… on the plus side, I managed to:

  • Create an interesting procedural generator for pokemon-like worlds.
  • Adapt elements from the widely known Pokemon universe into a roguelike format.
  • Create a simple command set, a friendly UI for new players.
  • Create a Javascript roguelike template (“JSBoilerRL”) anyone can use to create their own roguelike (I’ll have to write a tutorial for that)

And probably for the first time I feel good about the source code of the game! it’s mostly clean, readable and extensible. It’s now open source… I’ll come back to it soon if enough people cares about it, to make a proper first stable release.

One of the think I liked the most is how I made tall grass work in the “route” maps… you have to dive into it in order to find pokemon 🙂

In any case, here’s a gameplay video of PokemonRL, enjoy!


Here’s what I managed to do in day 7

  • Add Power Points to skills
  • Add Pokemon center to recover all HP and PP
  • Add Lab building to pick starter pokemon
  • Allow giving up on gym battles
  • Pokemon level up, learn new skills, evolve
  • Select random town names
  • Allow winning by getting 8 badges
  • Add inventory limit

 

2017 7DRL – PokemonRL – Day 6

Day 6! time’s almost over and I wonder what’ll be the best way to wrap up 😐

Today I managed to implement high level map generation (so it now generates both a random overall structure as well as the actual detailed maps). They are both simple, of course, since there’s no time to go in-deep. This includes assigning the gym data, pokemarts inventory as well as wild pokemon on the routes.

Sample metadata (Click to enlarge)

Spent a lot of time debugging an issue with the validations to prevent roads from overlapping not working.

Pokemons also respawn now on the routes, and I started implementing the actual skills and the damage calculation. (Based on the information from Bulbapedia)

I also implemented an alternate display mode which looks a bit like a gameboy color. At least to me 🙂

I’m less than 24 hours away from the end so… what’s the plan?

I don’t know.

It frankly looks grim, but I knew it wasn’t going to be easy (that’s why I hesitated). There’s enough material here for a seven years roguelike. The challenge will be wrapping up decently.

Pending stuff (not all of it will make it):

  • Lab building to pick starter pokemon
  • Pokemon Center buildings to heal pokemon
  • Pokemon “fainting” and losing gym battles
  • Pokemon level up, learn new skills, evolve
  • Place items randomly on map
  • Sell items to earn money
  • Adding a good chunk of data for pokemon and their skillsets.
  • Special attacks
  • Trainer battles to earn money
  • Restock stores

2017 7DRL, PokemonRL Day 5

Managed to advance a lot today! there’s still a long road but things are looking much better now:

  • Added simple “route” type map generation (A straight road with some patches of tall grass).
  • Ported my Cellular Automata classes to JavaScript and applied to route map in order to make the patches of grass look irregular
  • Semiopaque tiles so you can look a little into tall grass but must walk into it to find wild pokemon.

  • Pokemons slots, selecting, releasing and pulling back.
  • Make pokemon fight
  • Catch pokemon using pokeballs
  • Use potions on pokemons
  • Pokemarts where you can potions and stuff

  • Pokegyms: Single room with leader, door closes when entering. Badge appear when all pokemon defeated.

Next up

  • Metadata generator (for map)
  • Spawn wild poke
  • Use poke skills (Ranged attacks, special attacks)
  • Poke level up, learn new skills, evolve
  • Trainer battles to earn money
  • Place items randomly on map
  • Sell items to earn money
  • Restock stores
  • Lab building to pick starter pokemon
  • DATA!

2017 7DRL Day 4, PokemonRL again

Decided to go back to PokemonRL because IT WILL BE AWESOME. Tomorrow I’ll change my mind again.

Scribbled a rough plan in my notebook on the morning:

  • Deploy poke
  • Make poke fight wild poke
  • Catch poke
  • Use potions on poke
  • Buy potions
  • Generate map based on pokemon red
  • Spawn wild poke
  • Town maps: Simple building placement
  • Gym maps: Single room with leader, door closes when entering. Badge appear when all pokemon defeated.

Did a lot of boring work the whole day. But then managed to complete rudimentary inventory management, using and dropping items for JSBoilerRL.

Started tinkering around level generation. As usual will take a layered approach based on examples to generate a cool pokemap. Following is the generators cascade:

  1. World Metadata Generator: Towns to place, name and theme / weather
  2. World Grid Generator: Town and road positioning and linking.
  3. Map Generator: Town-Route maps
    1. Every town will have a gym where you battle the leader to get the badge.
    2. Wild pokemon will be placed on the routes.
    3. All locations will be accessible (no route blocking)

There will be no caves / dungeon / towers.

kantoMap
World grid generator will generate something similar to this (found on the internet, author unknown)

Managed to advance on map generation based on fixed metadata

metadata

This is the current status, next up is completing a first iteration of basic map generation (including routes), in order to jump into combat.

day4

The Kramora Times # 6, Ananias at the GDC, version 2.2

This is the sixth edition of The Kramora Times, you favorite and most reliable source for all Ananias-related information. You can now subscribe to receive this newsletter in your email too!

Lots of things have happened so let’s begin!

Version 2.2

A new version is available, it comes with important fixes and gameplay changes, as well as mostly complete keyboard support.

Following is the changelog:

Gameplay

  • Make pets always obey commands.
  • Make enemies check if player is waiting at the other side of the room before walking into it.
  • Remove penalty for damage for ranged weapons and wands when low on ammo / charges.
  • Reduce power up for boost elemental magic.
  • Change MP cost of elemental spells

User Experience

  • Remove force sound disable from mobile, make it an option on the launcher
  • Preserve preselected layout on mobile if game saved
  • Prevent casting spells when character has no magic power.
  • Make Portrait be the default mobile mode for browser (Instead of Chibi)

Major fixes

  • Prevent extremely long generation times for levels with twisted corridors
  • Prevent inconsistent HP value when casting spells with no magic power

Keyboard UX

  • Ranged attacks using spacebar
  • Using, throwing and dropping items from inventory
  • Mixing reagents on the inventory panel
  • Scroll entity panel and book panel with arrows
  • Use enter key to advance conversation or close dialogs
  • Use ESC key to close entity panel, book panel and inventory
  • Changing tactics and pet command with keyboard

Ananias at the GDC Expo 2017 in San Francisco

Last week I was at San Francisco at the GDC Expo, where I was able to join 11 other Colombian companies in the ProColombia booth and show Ananias to developers from all around the world.

20170302_104225

I got some important feedback for the game and made some good contacts for potential future work. We also had a small roguelike developers meetup where I could share the current status of Ananias to other fellow developers and friends including Glenn Wichman, one of the original developers of Rogue, Tarn Adams of Bay12Games/Dwarf Fortress and Jim Shepard of Dungeonmans.

meetup

I also got to meet these people I have never seen in person:

  • Kornel Kisielewicz: Developer of DoomRL and Jupiter Hell, and a great inspiration for all my roguelike projects.
  • Ashton Morris: the composer of the soundtrack for Ananias
  • Björn Ritzl: a long time collaborator for roguelike projects.
  • Kike Fuentes: Teravision Games mastermind, lots of gamedev industry experience.

Lord British plays Ananias

I also had the chance to attend the Ultima Dragons 25th Anniversary Bash, four awesome days full of cool Ultima geekness including having Lord British play the game. He said it was fun!

20170225_200233

First month on Steam and iOS

We keep doing well in Steam and iOS but we need more reviews! Please post a review there if you like the game, it’s really important in order for more people to notice the game.

Upcoming Features

  • Full Keyboard support: We are almost there, following are the pending things which will be tackled in priority order
    • Using multiple selection dialogs
    • Checking player and pet stats
    • Navigating thru menus

Some stuff still pending from last update:

  • Steam Achievements
  • Detailed GFX for weapons and armor.
  • Adding more plot and may be even random stories.

There’s been a lot of useful feedback! I keep integrating everything into the list of things to do so keep them comment coming!

First Boxed Edition

A limited run of boxed editions was done and some lucky individuals got to get their hands on them during my trip to California! there were two variants with one of them containing actual diskettes. Due to logistic issues I couldn’t get enough diskettes nor save the light Ananias edition on them.

20170225_191757

Some of the persons who received this edition:

  • Glenn Wichman: For creating rogue and thus roguelikes. Not much to say, Ananias is a roguelike so there’s a lot to be thankful for 🙂
  • Richard Garriott: For creating Ultima which is an inspiration to Ananias and most of my games.
  • Denis Loubet: Illustrator for most of Ultima covers and manuals, an obvious inspiration for out-game art for Ananias.
  • Ashton Morris: For creating Ananias OST.

An enhanced second run of this boxed edition will eventually be produced.

New storefronts

GoG.com rejected the game again citing the same reasons as two years ago. I got some useful feedback from them but it seems the game definitively is not a good fit for their store.

On the other hand the game is now available on the Humble Store, where you can get the game and support charity at the same time.

2017 7DRL: Concordia Reborn – ongoing

Day 1 – Tinkering with ideas

Didn’t manage to code anything. Was still recovering from my GDC trip, used the little energy I had to work in fixes for Ananias instead.

However, managed to tinker a bit around the idea of a generator for a classic cRPG scenario, generate a world using fractals, place some towns, generate some simple quests on each town and had the player complete them to get an artifact on each and win the game. Initial plans were to have this be a kind of sequel to Ananias, leaning more towards a classic cRPG similar to Ultima 4, but reutilizing the engine.

Day 2 – Change of plans, start work on JSBoilerRL

Came back to the office to find a lot of stuff going on so it’s not going to be an easy 7DRL week but when has it been? I’m also working on an update for Ananias at the same time by the way.

Ditched the original idea and instead thought on reviving a very old idea: a fully traditional classic roguelike with a Pokémon theme.

Checked some gameplay videos for the Mystery Dungeon tiles to make sure there’s no overlap. The game will be different, based on the first generation games and with little plot. you’ll be a trainer and you’ll catch pokemon and give them orders to combat in a tactical grid map.

Started work in 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. Managed to implement walk in the map with collisions, FOV, memory and enemies moving around.

Was stuck trying to debug an issue with transitions between levels with stairway tiles moving around weirdly.

Next up is fixing the bug and start working in the actual pokemon mechanics.

day2

Day 3 – More change of plans, JSBoilerRL continued

Spent some time designing the game:

  • You are a pokemon trainer, your goal is to become a pokemon master by defeating the gym leaders on all 8 gyms and then challenging the elite four and the current pokemon master in the Indigo Plateau.
  • In order to do so, you’ll have to travel the land looking for powerful pokemon, capture and train them to become stronger.
  • You can have up to 6 pokemon in your team at the same time, you can command them to use their abilities against particular targets.
  • You can store your pokemon data in the computer in order to free slots for new pokemon.
  • You can use items in pokemon, either wild ones, these in your team or your opponent’s. Items can be bought from pokemarts or found in the map.
  • The following items types are available: pokeballs (used to capture pokemon), healing items (recover HP or PP), status recovery items

I realized the scope would be too big for a 7DRL, mainly because of the required data and balancing to make it good. So I changed plans again to the original idea, only using a traditional roguelike UI instead of reutilizing the Ananias engine.

  • Randomly generated map with towns and dungeons
  • Place a quest on each town which can be one of the following types
    • Kill x monsters on a given dungeon
    • Find item
    • Rescue NPC
  • Complete all quests to win the game
  • Simple roguelike gameplay, traditional fantasy setting

Listened to almost all the Roguelike Radio podcast made by Jeff and Darren… some pretty good points there not only related to 7DRL but roguelikes and game design in general. Decided to try and make a classic roguelike and then include an unique twist which may be the game being combat-less, with your character being an traveling scholar fixing the world with the pen instead of the sword. Still don’t know how that can be implemented.

Struggled hard to fix the issue with the level transitions on JSBoilerRL… turned out it was caused by myself defining the object attributes as part of the function prototype instead of them being defined for every object instance (d’oh!).

Decided to lay down a plan for the completion of JSBoilerRL so I can start working on the game itself, basically wanted to make sure I’m covered with the basic which leaves the following pending:

  • Items: including inventory handling, getting, dropping, wearing, using
  • Message box

Managed to advance on item handling and inventory. Still pending dropping, wearing and using items.

By now I’m getting close to Rodney, which makes me wonder… why didn’t I use Rodney as a base in first place? other than having a cleaner codebase there’s no advantage on what I’m doing and instead I’m wasting more dev time… a very non-practical choice :/

Going to the bed hoping tomorrow I can start working in the actual game.

day3-1

End of the century

End of the century… misery! can it be?
Chaos… who’s the boss? Suffering, great loss..
Man, woman, child, no longer exist…
Only the good ones will be missed.
 
Life, love, cherish it all.
Who will be left to conquer all?
The end is coming, don’t start running,
there’s nowhere to run… don’t grab a gun!
 
All over the land hear this roar.
No one knows what’s to store.
Look for the star, he’s on his way
No one knows when or what day.
 
Love yourself and all around,
in a blink of an eye you won’t hear a sound.
Your heart is pounding at rapid speed.
Man will always feel the need for greed.
 
Let’s go for it! For now you can’t miss!
Although this was the beginning,
Beware because the end is here
 
The sky is falling, eyes are balling.
You had your chance to make your stance.
Love is a must, life don’t lust.
No time to fuss, people start to cuss.
 
Cry out.. who’s going to care?
Have no doubt, have no fear.
Believe in me… I’ll show you the way!
 
Some people think the year 2K
is so scary, let wait and see.
The world will shut down, bots will quit,
People’ll go crazy, people can’t fit.
 
Fire breaks out, there’s one way to stop,
Play hip hop non-stop-stop!
Remember these words and what I said,
you just might wake up brain dead!
 
Some just say the world is changing,
many people will agree…
Many changes we are seeing,
I just say it’s the end of the century.