Thoughts on Javascript, Dart and Web development

If nothing else comes up I will embed Javascript as the scripting language for Wizards’ Duel. Javascript is easy, well-known and, most importantly, well supported. In my mind scripting should be kept simple and familiar, so Javascript fits the bill perfectly. However I, like many others if you give credit to the web, don’t like Javascript very much.

javascript-and-the-good-parts Continue reading


Know your Randomizer

While working on the particle effects for the lava, one of the Terrain Features of the Fire Level, I was faced with an odd problem that, at first, I attributed to the physical engine that manages the particles’ behavior: the particles were lining up on the screen, always in the same way.

Lapilli comparison

What was happening (left) vs what I wanted (right)

It took me some time, but I finally realized what the problem was: the Random Number Generator (RNG).

Continue reading

First Refactor, First Rewrite

A starfield with dynamic lights

A starfield with dynamic lights “following” the particles.

During the latest developments I had some problems to resolve that arose also, among other things, thanks to the growing complexity of the project. In particular some of them were:

  1. Offset of lights when linked to objects,
  2. Offset of animations when different frames are of different size,
  3. Growing bloat of the offset management code,
  4. Input management among the various widgets.

Continue reading

Component Based Animations

While I have studied a bit of game development in my free time there are many facets that I have never touched. This, united with the fact that I am not a professional developer (even if I have worked for a bit in R&D at a big company, something that at times still happens), means that I often have to learn by improvisation.

Exekiel Facial Animation

Exekiel Facial Animation

Do not get me wrong: even if I naturally learn more and faster by direct experience, I firmly believe that you have to study – hard – to obtain a good level of skill in any form of craft, but there are certain thresholds that you need to overcome in different ways that only studying, unless you are a genius: one of them is by experience, another one is teaching what you have learned.

Continue reading

Prototypes, Testing and Python

Lately I was tinkering with the Event Manager. The Event Manager, or Dispatcher, is a software module that manages the game simulation. You can think about it as an ordered queue of actions: when someone (the player or one of the AI controlled characters) do something they send an event to the Event Manager, like “move me left” or “cast a spell to a target”, and the Event Manager will place the action in the correct order and will execute the action accordingly, by acting directly on the game world.

Event Manager Architecture

Event Manager Architecture

Continue reading