Skip to main content


Showing posts from 2017

Good and not so good news

First, I finished the draft of the novel. It is now on the hands (PCs, actually) of the zero readers. Then comes a process of polishing, leave to rest, and then polish again, which will produce the final version, which, in turn, will be handed to a second pair of eyes to hunt typing/grammatical errors. Violating this rule I imposed myself led to a book that was not as good as I expected in the previous novel.This means that I have some free time now to work on the next book.

The not so good news is that the editor is not so interested in publishing it. They had a goal, and it was not exactly to make a success of every title in the catalog. As I'm not one of the most widely known authors, I haven't received any promotion, and neither has some good titles of the catalog, written by promissing cuban young authors.

Back to semi-good news: the game demo is almost ready. I'm just trying to explore all the possibilities to host it in Google Play instead of somewhere else. I thi…

glTF 2 in Godot

The Godot engine guys have announced that they have implemented support for glTF 2.0, the new asset exchange format developed by Khronos Group. But they also take some time to give us a nice review of all options and previous attempts to provide a common exchange format in this article.

An interesting post that every game developer should read.

Playing old classics: HoMM 3

Last august a good old friend passed away. Was a tough season for me, for many reasons, and receiving news of his death was another reason to feel sad. I decided to honor him playing a bit of Heroes of Might and Magic, a really old TBS game he liked a lot.

I was a fan of it too, I even had a Linux version, created by Loki Games. HoMM is fun, but I have a serious complaint about it that makes me leave it for long seasons: its AI cheats.

All game AI cheat in some way, but HoMM AI shameless throws you dozens of enemy heroes with insane armies, when you struggle to build two armies. You destroy two heroes and suddenly you have two more from the same AI player, with large armies, knocking at your door.

The AI not only knows what castles are defenseless (Freeciv AI does that), but also gives computer controlled players unlimited supply of gold, I think. Annoying.

Project updated

A brief post to let you know that I have updated my old project: The Key of the World, an open source isometric 3D RPG. Depending on how busy (or not) are the next days/months, I will fix some big mistakes I made during development.

The source code can be found in Github, and can be used for learning purposes, forked, or whatever the license permits. Here is a short video of the game in action:

Dealing with controller support

I have been working lately to add controller support to my both projects. I made some basic tests long time ago, using my joystick, but a week ago a friend kindly provided me an Xbox 360 controller. Then, the true work started.

After a brief phase of "I have no idea about how to do it", and after that "probably there is something in youtube" (there was), I managed to put some basic support, first on character movement, you can see it in the Labyrinth gameplay video, which was recording while I played using the controller. As a side effect, Im thinking to change the gameplay mechanics of my 3rd person prototype to camera freelook, like Mass Effect/Witcher.

Then, I began to extend controller support to the UI. Things are not so easy here, because I had to rethink the design of many interface elements. Also, moving through buttons requires to reinterpret  axis events as button events.

I plan to finish all the tests this week, return the controller to its owner, and r…

And now, a video

Some screenshots

This is my little 2D project:

Even when the texts in the screenshots are in spanish, the project supports english too. This is the PC build running, but the main platform is Android. The engine, of course, is Unity.

I think I found a horseshoe or something

A week of good luck! Thats weird.

A couple of days ago I met a guy who knows other guys who want to make videogames. Yes, here, in a city where most people are consumers, not producers. This guy, an almost graduated architect, has some nice skills: modeller and illustrator (and makes some damn good drawings!). Definitely, we will have some meeting next week, after his graduation, to discuss how can they work in my project.

But there are more good news: met another guy who kindly offered to lend me an Xbox controller. I will use it to learn how to adapt my gameplay mechanics and UI to controllers. So, I will spend the weekend playing Mass Effect and Dragon Age: Inquisition. It will be the first time that I use a controller for more than half an hour, I always have been a keyboard/mouse player. Or keyboard/joystick.

Seems that I will have a busy weekend. And surely I'll have to discard all the current UI and remake it from scratch.

My next phone is going to be... a Fuchsia?

My current phone is crap. I lost my half decent Galaxy Ace a year ago, in the middle of a long line of unfortunate events. Was a bad year, and I lost many things. I had to buy a DDC E4s, a friend brought it from USA and I paid like $70 USD for it. I liked the design, and the terminal has proven to be solid, with a few quirks. The accessories are total crap,  the earbuds stopped working after using them twice, and the USB cable also stopped chargin after some months. Have you ever seen that? It is a fucking USB cable, they last forever, what can go wrong? And the camera... better not to talk about the image quality.

So, I guess that at some point, I'll have to upgrade to a better phone, when I find the cash. And considering that getting the funds will take some time, and  Google is already working in its next generation mobile OS, maybe my next device won't be Android, but Fuchsia?

The new Google Fuchsia does not uses Linux as kernel, but a new one based on Little Kernel (LK) …

Back to work

I have been away from the blog for a while, because of a condition on my right hand. Had to take a long vacations: no typing, no mouse, no gym. So, my work was seriously delayed, both my personal projects and office tasks. I'm just going back to normal, even when Im not 100% healthy, mostly because the required meds are not available and rest by itself is not enough.

So, I'm slowly putting the writing tasks back on track (and I remind you, buy my novel!), but programming will take a while. Of course, I'm still avoiding games, except for Freeciv, which I can play with my left hand. Actually, I'm still using the mouse with my left hand, it works, but can't do any precision task.

HEaled or not, I will be full operational in a couple of days. Excepting for games, which I will not touch for a while. Anyway, Mass Effect wasn't that good and I haven't missed it, not at all.

Lessons to learn from Mass Effect: Andromeda quest design

As I promissed, here is a post about the quest design (or lack of it) in Mass Effect: Andromeda, translated from my other blog.

I have been playing ME: Andromeda for about 20 days now. It is a long game, and mostly a boring one, I have to say. Each location has a dozen of small secondary quests that forces the player to move from one point of the map to the other. Other span through several locations, those are the worse because we have to move through all the galaxy. Nothing new so far, it is a known trick to inflate the playing time.

The big problem with ME: Andromeda is that almost all those tasks  are variation of the same. For example, the monoliths quest: in every planet you must activate 3 monoliths, and the visit the chamber. After doing that in two planets, you start to hate the monoliths, the chambers and the stupid task of jump from one place to another to find a console to open a door in the other corner of a hughe scene. This is unavoidable, as it is part of the main que…

First steps in a open world: properly designing the first quests of your RPG

As I mentioned before, I have been implementing a basic quest system, which I consider that can be greatly improved. But I'm not going to talk about it, because... well, it is crap.

But working on the quest system made me revisit the script and think about the first quest that the player will find in the starting location. Those first quests must fulfill certain basic requisites:

Introduce the player to the environment (here other elements lie encounters or conversations are important too) and give him a glimpse of what to expect.Familiarize the player with the gameplay mechanics, like using objects, trading, combat and using skills.The main quest should provide some sort of backup or redundant activities, in case the player misses some of the basic quest. They must be simple and quick. There is a reason why the first quests are easy: the player is starting the game and doesn't knows how things work, even if he/she is a hardcore RPG player. Anything taking more than five minu…

Two quests working

Plus many other changes! I fixed the weird problem with the experience bar, caused by C# not converting int by int division to float unless I explicitly cast one of the factors to float. Also I found another mistake I introduced in combat and noticed that current animation switching should be moved to item use function, instead of being triggered by action class. That eases dealing with an increasing number of different animations for different items and not animating at all if the item can't be used (like when it has no ammo). It is a design mistake I made when started creating the item system.

Other little addition was the death event for NPCs, once implemented that and fixed combat, one of the quests could be solved by talking or by killing, your choice! Still left a little detail: once dead, the NPCs still have some activity that needs to be properly cleared. I currently lack a death animation, so I can't further advance in making NPC death to "look good", and r…

Crafting system!

At last! Yesterday, when I went to sleep, I got an idea about the crafting system. Nothing complex, like the rest of the RPG system: just collect schematics and bring them to a crafter for building. The crafter will provide the materials, so, actually, no materials are required. That's all.

The quality of the resulting item will be determined by crafter experience. There will be several crafters, but not all of them will produce excellent items, probably just 2-3. The range of items that can be crafted is not decided yet, still have to think how does it affects the game balance. For example, should crafters be able to create implants too, or only armors and weapons? What about ammo, optical or laser sights?

Also, I decided to keep the start scene with just a couple of quests. They will cover the basics of interacting with NPCs, use of items and combat. One of those quests will have two solutions: a pacific and an aggressive one. The other will be combat only. There is another su…

Back to Unity

After playing with Unreal Engine, it is time to get back to my work with Unity3D. Had a couple of projects abandoned and decided to make a little offensive on issues that I thought  did not know how to solve, but seems that I had some extra power up hidden somewhere.

I am glad to say that at last I implemented the foundation of weapon reloading. Just the foundations, but at least it is there. I need some more work on the inventory system, to unify duplicated code, and additional checkings like if the right caliber exists, which then will lead to other issues like same caliber/different damage type ammo.

Also I added some more info to trade window, but still have to implement item comparison, same as in player inventory window. I implemented another basic quest, which in turn, required to deal with an old pending issue: events, like NPC dying.  My first approach was correct, but the implementation was totally wrong. Adding this quest needed some additions to dialog system, now it can …

My first blueprint

A couple of days ago I managed to make my first working Blueprint script. Well, it is not finished, because I took the wrong approach, but at least I found how to handle input and react to key press/release events. Not too difficult, it just takes some time to watch the official tutorials.

In the end,  a Blueprint class and a C++ class are almost the same. You can put together some components and code, that's all. Blueprint tries to help by being context sensitive and it is supposed to allow quick prototyping, if you are an expert, of course.

One of the problems I found, besides my lack of patience, was that unlike Unity3D, where you start a project from scratch, Unreal Engine tries to provide you some base template to start. That requires changing some stuff in the GameMode class if you want to change how the camera is managed, for example. It is possible to avoid using the game framework, but I'm still far from that skill level.

So, I'm quite pleased with my progress, b…

Some fixes to AI

The prototype is under a storm of changes lately. Yesterday I spent some time trying to figure out the origin of some bugs in the AI code. Lot of time actually, because I lost one hour looking at the wrong line. But now, after moving some code to the Awake() function, and unifying some initializations that were repeated, I fixed a lot of weird errors I had. Also, I found some logical errors, preventing the NPC from properly getting into weapon's range.

Today I plan to implement separate functions to deal with each combat mode, to unclutter the Combat state. Also, I have to study the new Pluggable AI videos posted in Unity's Youtube channel. Maybe I can get some ideas to implement some way to differentiate the AI for each NPC.

The other bunch of changes deal with the process of building character mesh and equip/unequip items like armors. Currently it is a hughe mess with weird problems like incomplete characters, or complete ones that become incomplete if I close and the open …

Fixing old mistakes

This weekend I made another offensive to my item equip code. It depends on the mesh assembly code, which deals with building a model from several meshes, if they share the same skeleton. To be equipped, the  item must have the same skeleton too, of course, and the widely (and only) documented method is to copy the bone info from the base skeleton to the other meshes. Simple items like weapons does not need this, as they can be attached to a bone and that's all.

But my first approach had major flaws. It required a list of prefabs that were assembled into a a model and then to a list of GameObjects, the NPCs were not visible in the map, and just recently found that destroying the switched part left me without the original part to restore it when the item was removed.

So, I sat and put my brain in afterburner mode. It didn't worked... until yesterday, when at last I figured out how to get rid of the lists of original prefabs, the resulting GameObjects, etc, and put that in a si…

First quest

Yesterday I managed to implement the first quest of the prototype, and a couple of hours later, the second. I can't say I have a proper quest system (if such thing exists), it depends on loosely related stuff.

The first quest implement involves recovering an stolen item, which requires fighting some weird guys. It is like an introduction to combat. The guy drops the stolen item, or more precise, you get it from his corpse. When you talk to the quest NPC, if you have the item with you, a new option appears in the dialog that allows to deliver the item, receive XP and set the quest as completed.

The second quest is to talk with a guy to receive another quest, the one that triggers the main storyline of the game. Pretty easy. And now that I mention the storyline, I made some work on it this weekend.

The key word when writing the plot for an open world is branching, which is easier to say, but not that easy to achieve. It means that almost every quest or NPC should be the entry point…

Mi novel available in Amazon

In case you are proficient enough in spanish, or at least, enough to read, I remind you that I keep a blog in that language too. Also, I'm happy to announce that my  book is already available in Amazon.

I put a lot of effort to make this my best book, and as usual, I ended up not quite sure about if I made it. Probably the next will be better.

The best tutorial to implement a node based editor

I had lost all hope to find a good tutorial on creating a node based editor in Unity for my dialogs. Something like Mecanim, with squares and connections. So, it waslike a shoot in the dark when I made the same search again a week ago. And guess what, I found this.

I spend the friday night following it and got a small prototype working. Not just that, I also know how to customize it and add stuff. The bad news are that I forgot most of the little I knew about old Unity UI system.

This is the best tutorial I have found about this: simple and effective.

Implementing interactions

I had a big mistake in my AI behaviour system. I added in basic bahaviours one to make the NPC approach the player and engage dialog, until I found that such idea is not very wise. Sending the NPC to mindlessly talk with the player any time it is visible doesn't works. Let's suppose the NPC has a quest to assign, what happens when such quest is completed, or in case you reject the quest? The NPC will continue to harass the player, starting a dialog in every occasion.

In this case, my approach is to use a trigger collider. I set up a GameObject with a box collider, and attach an script that makes the required verifications: does the player has the quest already? what's the status? This can be used to trigger attacks that requires prerequisites, like raiders that attack you only if your level is below some value, or if you belong to some faction.

By the way, am I the only one who is not impressed at all with the Unity GDC keynote?

The Road to Eternity, Obsidian documentary

A bit late, but here is it:

I have been trying to post this since I found it two weeks ago, but some connection problems prevented me from doing it. Enjoy!

From 2d to 3d

I had to switch my Maze of Knowledge remake from 2D to 3D. Last saturday I migrated most of the relevant code and reusable assets to complete a working prototype. Why did I do that? Because seems that it is going to be easier to find a 3d modeller than a pixel artist. Weird, isn't it?

After several months with the project sitting there waiting for animated sprites, I decided to go back to my original idea. First, I wanted to make a 3d remake of an old 2d game. Then I wanted to do it as close to the original as possible, and that would have the benefit of requiring only 2d art, easier to produce. Big mistake. In this city, where game developers are scarce, and 2d artists are more interested in drawing manga, finding somebody to create and animate an sprite was impossible.

Please, also consider that we are almost disconnected. No local forums, or things like that. I have to find people the old way: tlaking to friends, who perhaps knows a friend who knows someone else who can draw/m…

A cuban writer, nominated to Phillip K. Dick award

A couple of days ago I received news about my friend Yoss: he is nominated to Phillip K. Dick award! I c&p from the official site:

The Philip K. Dick Award is presented annually with the support of the Philip K. Dick Trust for distinguished science fiction published in paperback original form in the United States during the previous calendar year. The award is sponsored by the Philadelphia Science Fiction Society and the Philip K. Dick Trust and the award ceremony is sponsored by the Northwest Science Fiction Society.
 I wish him luck, but just being nominated is a great achievement (one more in his curriculum), for him and for cuban science fiction.

Revisiting the game story

I have been reworking the game storyline, taking into consideration some ideas from a friend, who worked as second writer in the early stages of the project. I'm not happy at all with my current work. Although I set some important points in terms of plot twists and emotion, it lacks the required depth and fails to offer a living world, with several factions.

I focused too much in providing choice, in the form of having a way to join one or another faction, instead of providing a couple of them that will be always unreachable, or simply opposed from the beginning. After all, a villain is always needed! And the storyline was too much a line. Too linear. Now I have to open the choices available to the player after the brief introductory quest.

Of course, the final storyline should be tweaked by at least one more writer. An open world RPG is too big to be written by one man.


Yep, we have minimap, actually, it is more like a satellite view. I made a quick proof of concept yesterday, while watching Dallas Cowboys vs Green Bay Packers game. I had the overall idea, but with the help of a nice tutorial, I completed the blank spaces, which were related to redirecting the Render to Texture to an UI element (a Raw Image) and how to place markers (use an specific layer, cull that layer in normal camera, and all layers but that one in minimap camera).

Still have a few issues to solve (what happens if the marker is inside a building or covered by something?), but eventually I will solve them. First I have to spend some time to deal with the coroutine hell that became the AI, and implement some way to tune the behavior of each entity, other than writing a custom script for each one.

Anyway, Iḿ  quite happy with the progress so far. Considering I'm not a great programmer, I have achieved some interesting things, and others are pending until I can get the required…

I have finished Deus Ex: Mankind divided

One of the problems that comes with being a writer, is that you start analyzing everything you read. Sometimes you think you would have written it in a different way, or simply you see a pattern: this guy is going to die, or this is going to end this way.

Yesterday I finished Deus Ex: Mankind divided, one of the titles I wanted to play last year. Took me a bit to get it, just to find that my hardware is not enough and I had to avoid using weapons: impossible to aim with only 15-18 frames per second. I urgently need a better video card, and a PSU to feed it. The game itself is not bad, the only complaint I have is about the story.

Deus Ex felt like a bit short to me, with a quite basic plot. Except for a couple of decisions (do this or that, not both), the dialogs are mostly useless cinematics that provide information at the cost of wasting gameplay time, and do not add any complexities to the storyline.

And why do I expected a better story? Well, because Deus Ex is an RPG, despite be…

New year, lot of work

Same as December, January started with an offensive to my 5th novel. I'm very close to finishing it and not too soon, as the next ideas are pushing to get out. Perhaps my next book will play a bit with old style mystery novels and new weird, although I also have a more traditional fantasy plot in mind.

Then I switched to programming for a couple of days. The prototype received some interesting features like working conditionals in dialog branches, my very own AI/sensory system and trading. The base for the quest system is already there, but may require lot of work to be functional.

Currently, the protoype is just a lot of subsystems, like a workbench where I test ideas. It wasn't supposed to be, but my previous project had too many issues to be corrected and I discarded it. The work I'm doing is aimed to improve a couple of details, and presenting a video in a conference about game development next saturday. Maybe I will share it here too.

Put a Linux in your life

Last monday, after the year's end/new year torment finished, I went to visit a friend. For paying the due congratulations and such, but mostly to see if I could put my hands on latest Deus Ex game.

I had to remove the hard drive from my PC, but the game worth the risk and I was extra careful while carrying it. We copied and even tested the game from my drive, before I took it home. And then I found that there were no signs of the game in the hard disk. I even had the same 90Gb free.

Ok, if you copy 75 gigabytes to a drive, use those in some way, and they they dissapear, there is somethign really wrong with your disk or OS. I forced Windows to do a drive scan, just to find that I had 75 gigabytes lost, without any way to find where.

But, no panic. I had Linux Mint. After booting to Linux, I found the lost files, which were hidden for Windows. Of course, the game was useless, but at least I could recover 75 Gb without formatting the disk.

It is good to have a serious OS for emerge…