DragonScales: Drawing the Sacred Axe item

Our newest game, DragonScales: Chambers of The Dragon Whisperer, is the first title of ours which does not use cartoon graphics. The art of DragonScales meant a lot of work, as we had to create more realistic characters and backgrounds, within a fantasy setting. For instance, here are the steps followed to create the Axe used in-game for the Sacred Axe item which destroys a column of scales on the board.

AxeStepsEnglish

This Sacred Axe, of course, was designed by XKlibur, our lead artist and IKIGames’ mastermind. Hope you liked it!

Dragons and Nagi on Linux

These days we’ve been almost completely devoted to the launch of our new game, DragonScales: Chambers of The Dragon Whisperer. It’s a new tile-matching game, in which you play scales on a board in order to form combinations. Novel, fun, relaxed, and great for brain-fitness sessions and lovers of casual games. It’s available for Windows, Mac, and Linux.

 

Our previous game, NagiQ 2: Treasure Hunt, was initially available for Windows, Mac, Android and iOS. NagiQ 2 is an original and challenging word game, based on combining words on a board to collect coins, punch evil skulls, explode monsters, trim mustaches and defeat an evil pirate.

However, a few days after releasing NagiQ 2 we received emails from several customers asking for a version of NagiQ 2 for Linux. We promised a version would be eventually released, but time went by, and we were overtaken by DragonScales’ specifics and technicalities, meaning that NagiQ 2 for Linux had to be postponed. Until today.

Today we’re happy to announce that we’re also releasing both DragonScales and NagiQ 2 for Linux. You can purchase them here:

A promise fulfilled :)

DragonScales released by Big Fish Games

Big news! We’re very excited to announce that our new game, DragonScales: Chambers of The Dragon Whisperer, has been released today by the renowned game publisher Big Fish Games. Being launched by a top-tier publisher such as Big Fish Games means a lot to us, as our work will be known by more players. DragonScales: Chambers of The Dragon Whisperer is a new tile-matching game, a fun and novel twist to the Match 3 genre. Its gameplay develops on a board composed by hexagonal cells, in which you play scales to form clever combinations of scales having the same color. The dark and ferocious chambers of DragonScales will demand a lot of luck and intelligence.

DragonScales on BFG

DragonScales was presented in the section “Play it a day early” and today it has been officially released by Big Fish Games, for Windows and Mac. You can try DragonScales here, directly from Big Fish Games.

DragonScales: Press Release

November 11, 2014IKIGames releases DragonScales: Chambers of The Dragon Whisperer, an original tile-matching game available for Windows, Mac and Linux. In DragonScales you’ll be using your mind power to play scales on a board, and form clever combinations of scales having the same color. The dark and ferocious chambers of DragonScales will demand a lot of luck and intelligence.

 

Key features of DragonScales: Chambers of The Dragon Whisperer

  • Easy to learn: You’ll receive introductory lessons by The Dark Mentor of dragons, to learn the basics of DragonScales’ intuitive gameplay. DragonScales is a fun twist to the Match 3 genre.
  • Multiple game modes: Each of the 8 dragons of the game introduces specific challenges: solve shaped boards, capture special cross scales, clear mythical symbols, and many more gaming goals.
  • HD Graphics: Enjoy awesome graphical art to recreate an immersive experience.
  • Challenging chambers: The degree of difficulty increases as you progress. Are you fast enough to play your scales before the moon bar depletes? Are you ready to devise crafty strategies for clearing mythical symbols? Test your strategies against all of the game’s trials.
  • Powerful items: Complete chambers to receive items and coins to buy Sacred Hammers, Dragon Meteors, Power Blasts, and many more items to help you during your play.
  • Perfect for brain-fitness: DragonScales provides a rich and relaxed gaming experience, perfect to train your mind and hone your problem-solving skills.

DragonScales: Chambers of The Dragon Whisperer is available in English, priced at USD 9.99 for Windows and Linux (on the game’s website), and Mac (via Mac App Store). Further information and review copies of “DragonScales: Chambers of The Dragon Whisperer” can be obtained by contacting IKIGames (@superikigames).

IKIGames is an indie game company focused on development of thought-provoking games for desktop and mobile devices.

Release Date: November 11, 2014
Platforms: Windows, Mac and Linux
Available: via IKIGames’s website (Windows and Linux), and Mac App Store (Mac).
DragonScales website: DragonScales: Chambers of The Dragon Whisperer.
Video: DragonScales: Chambers of The Dragon Whisperer’s Video

Huge discounts on our games during Desura’s August Cheap End

A sale! Right now! Our 3 games are on sale on Desura August Cheap End! That’s right: NagiQ (60% off), NagiQ 2: Treasure Hunt (65% off) and The Rainbow Machine (75% off) are hugely discounted on this massive sale on Desura, offering great deals on great games. Our games will be on sale from August 29th through September 1st, comprising all the available versions of our games (Windows, Mac and/or Linux). Hurry up, its a limited time offer!

Resizing multiple image files with ImageMagick

For the first DragonScales post I had several PNGs with a 1920×1200 resolution. Nevertheless, the ideal width for images in this blog is about 600 pixels:

DragonScales Logo (Black background)

DragonScales Logo (Black background)

This is a frequent issue when publishing images here. Thereby I recur to ImageMagick in order to resize sets of images. ImageMagick’s command line tools are excellent and indispensable tools for our work. For instance, on Windows command prompt, it’s enough to type:

forfiles /M *.png /C “cmd /c convert -resize 31% @file resized_@file”

That way all of the images will have resized versions, at 31% their original size, yielding a 600-pixels width approximately. Very useful. And ImageMagick is a great piece of software.

A weekend boxed inside a dylib

I’ve dedicated the entire weekend to heterogeneous yet related tasks. First, I started off by trying to build NagiQ, our first published game, on OS X Mavericks. By “build” I mean to produce a binary complying with the requirements of the Mac App Store. You know what I mean: well-formed directory hierarchies inside the .app, proper icons and .plists, code signing, etc. For the record, NagiQ is a word game created with Ren’Py, a visual novel engine which is, in turn, built with Python. At the time of release a lot of folks shared their thought regarding our election of Ren’Py to create our word game: it was, to say the least, an unorthodox choice. However, almost 3 years after its initial release, NagiQ is still running fairly well on Windows, Mac and Linux, thanks to the wonderful capabilities of Ren’Py for multi-platform deployment.

Building NagiQ on Mavericks is easy, it amounts to just a single click on a Ren’Py option[1]. However, turning the generated .app into a binary suitable for the Mac App Store has proven to be a daunting task. You have to organize the directory structure of the Python Framework distributed with the game. You have to circumvent the writing of Python .o files in the .app directory, a big no-no for sandboxed apps. You have to retrieve the proper directory to save user and game data (~/Library/Application Support/NagiQ is not allowed). Etcetera. Right on the middle of such etcetera lies the requirement of communication with a few dynamic libraries needed by NagiQ to satisfy several functional demands.

As you surely know, dynamic libraries = dylibs on Mac. Taking into account that Ren’Py is a citizen of the Python world, we use the ctypes library to communicate with our dylibs from inside the game. An important lesson I learned during this weekend is that you have to be very careful when dealing with dylibs and ctypes. First, you have to verify that your dylib and the Python version you’re running are compatible. Is your dylib a 32 or a 64-bits binary? Your Python instance must be apt to properly load and call functions of your dylib, or you will spend a lot of time trying to sort out segmentation faults.

Typing python on a terminal of my Mac launches the 64-bit version of the interpreter by default. If you want to execute the 32-bit version, run this in your shell before launching python:

export VERSIONER_PYTHON_PREFER_32_BIT=Yes

After you have launched the proper version of Python, you can import ctypes to load and communicate with your dylib. However, don’t take this communication lightly. Pay special attention to the type of the arguments and return values of your functions. For instance, if you’re invoking a function of your dylib which requires a char* value, then you have to wrap your argument in the type c_char_p. Let’s see another example. Suppose you want to get the proper location to save the data of your game. Of course, as a good programmer, you don’t want to hardcode such path. Instead, you’ll be asking the operating system for it, the right way. Let’s create a tiny, demonstrative Objective-C library (demolib.m) for this:

#import <Foundation/Foundation.h>
const char* findAppDir()
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
        NSApplicationSupportDirectory,
        NSUserDomainMask, YES);
    NSString *basePath = [paths objectAtIndex:0];
    const char *convertedPath = [basePath UTF8String];

    return convertedPath;
}

Compile with:

clang -dynamiclib -framework Foundation demolib.m -o demolib.dylib

Then you can call your function from Python:

Python 2.7.5 (default, Mar  9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> lib = ctypes.cdll.LoadLibrary("demolib.dylib")
>>> findAppDir = lib.findAppDir
>>> findAppDir.restype = ctypes.c_char_p
>>> findAppDir()
'/Users/yourusername/Library/Application Support'
>>>

This little function will prove useful later, when I resume the building of NagiQ. However, the weekend is already over and I have yet to implement several adjustments for DragonScales, our next game soon to be released. The delight of working with dylibs, sandboxes, etc., will surely be the subject of future happy weekends.

  1. [1] This single-step build has grown to be the Ren’Py feature I love the most.

Lampson’s Hints for Computer System Design

Although it’s a bit dated in parts (mostly the examples), the article Hints for Computer System Design by Butler W. Lampson is still a valuable resource for today’s designers and engineers. It’s a nice reading, with plenty of timeless advice. For instance, regarding the issue of how to handle all the cases, the article says:

Handle normal and worst cases separately as a rule, because the requirements for the two are quite different:

  • The normal case must be fast.
  • The worst case must make some progress.

In most systems it is all right to schedule unfairly and give no service to some of the processes, or even to deadlock the entire system, as long as this event is detected automatically and doesn’t happen too often. The usual recovery is by crashing some processes, or even the entire system. At first this sounds terrible, but one crash a week is usually a cheap price to pay for 20% better performance. Of course the system must have decent error recovery (an application of the end-to-end principle…), but that is required in any case, since there are so many other possible causes of a crash.

The full article can be found at Microsoft Research.

Programming: A Constructive Art

In the preface of “Algorithms + Data Structures = Programs” (Prentice-Hall Series in Automatic Computation, 1976; page xv), Nicklaus Wirth stated (boldface mine):

Programming is a constructive art. How can a constructive, inventive activity be taught? One method is to crystallize elementary composition principles out of many cases and exhibit them in a systematic manner. But programming is a field of vast variety often involving complex intellectual activities. The belief that it could ever be condensed into a sort of pure “recipe teaching” is mistaken. What remains in our arsenal of teaching methods is the careful selection and presentation of master examples. Naturally, we should not believe that every person is capable of gaining equally much from the study of examples. It is the characteristic of this approach that much is left to the student, to his diligence and intuition. This is particularly true of the relatively involved and long example programs. Their inclusion in this book is not accidental. Longer programs are the prevalent case in practice, and they are much more suitable for exhibiting that elusive but essential ingredient called style and orderly structure. They are also meant to serve as exercises in the art of program reading, which too often is neglected in favor of program writing. This is a primary motivation behind the inclusion of larger programs as examples in their entirety. The reader is led through a gradual development of the program; he is given various snapshots in the evolution of a program, whereby this development becomes manifest as a stepwise refinement of the details. I consider it essential that programs are shown in final form with sufficient attention to details, for in programming, the devil hides in the details. Although the mere presentation of an algorithm’s principle and its mathematical analysis may be stimulating and challenging to the academic mind, it seems dishonest to the engineering practitioner. I have therefore strictly adhered to the rule of presenting the final programs in a language in which they can actually be run on a computer.

Several decades later, I think Wirth’s observations about teaching and learning to program are still thoroughly valid. In fact, even today, the art of program reading is still neglected in favor of program writing. Careful reading and analysis of others’ code is a great resource for learning and improving our programming skills. And, of course, great minds are timeless.

NagiQ 2 Treasure Hunt: Press Release

December 16, 2013IKIGames releases NagiQ 2: Treasure Hunt, an original word game available for PC, Mac, Android tablets and iOS (iPad). Gameplay is based on forming words and combining them on a board to win coins, defeat an evil pirate, win prizes, punch evil skulls, explode monsters, and trim mustache guys. The player will have to solve 75 boards and also collect all of the game’s treasures!

Key features of NagiQ 2 Treasure Hunt:

  • Rich and original gameplay! Each island has its unique challenge and enemies! The Iron Hand Pirate, evil skulls, monsters, mustache guys, and multi-letter tiles!
  • Form words to capture gift boxes. You could win coins or special Lorin letters which will help you to form words!
  • Rise your score to unlock letters! The more letters you unlock the more your chances to succeed!
  • Receive all of the game’s treasures by conquering islands and for your achievements.
  • Support for English and Spanish languages!

NagiQ 2: Treasure Hunt is available in English and Spanish languages. The game is priced at USD 7.99 for PC (on the game’s website), USD 4.99 for Mac (via Mac App Store), USD 0.99 for Android (on Amazon) and USD 0.99 for iPad (on the App Store). Further information and review copies of “NagiQ 2: Treasure Hunt” can be obtained by contacting IKIGames (@superikigames).

IKIGames is an indie game company focused on development of educational, thought-provoking and family-friendly games for desktop and mobile devices.

Release Date: December 13, 2013
Platforms: PC, Mac, Linux, Android (tablets), iOS (iPad)
Available: via IKIGames’s website (PC), Mac App Store (Mac), App Store (iPad), and Amazon (Android).
Press Kit: NagiQ 2′s Press Kit.
Video: NagiQ 2: Treasure Hunt Video