06 Jan

DragonScales 3 on Steam

We’ll begin 2020 by releasing our game DragonScales 3: Eternal Prophecy of Darkness on Steam. Here’s the game’s Steam widget:

Key features for the Steam version:

  • 150 levels.
  • Only for Windows platform.
  • 10 Steam achievements.
  • Languages supported: English, German, French, Dutch, Italian, Portuguese and Spanish.
  • Updated libraries.
DragonScales 3 on Steam
DragonScales 3 on Steam

DragonScales 3 was the first DragonScales game with Gravity Mode and falling skulls. Furthermore, the game showcases 5 boss battles combining a new gravity approach with the classic DragonScales tile-matching gameplay. DragonScales 3’s story is based on a sinister prophecy, the Eternal Prophecy of Darkness. There is a group of dark cultists who want this prophecy to come true. Their plan is to bring back Specktr to life. Specktr! The ultimate embodiment of malice! Rumor has it that Specktr, once resurrected, will grant immortality to his followers. One of such followers, incidentally, is the powerful Archmage Cedric. DragonScales 3 is also the first DragonScales 3 with references to a fantasy kingdom, the Gravity Kingdom.

Read More
17 Dec

DragonScales: The Story of Archmage Cedric

This is the background story for the Archmage Cedric of the DragonScales games. If you have not played DragonScales 3 or DragonScales 5 yet, the following text contains several spoilers. All the art of DragonScales was created by our artist XKlibur: check her portfolio here.

Archmage Cedric
Archmage Cedric

The Archmage Cedric was one of the most powerful mages of the Gravity Kingdom. His command of the DragonScales magic was sublime, and that raised him to great glory and fame. Other mages of the kingdom respected and even feared him. In a sense, the Archmage Cedric was the epitome of success in sorcery and he achieved all he ever dreamt of. Once these men achieve all the things they want, their ambition grows even bigger, and they start bordering madness. This occured to Archmage Cedric. Suddenly, he started regretting his human condition, pitying himself for the weaknesses of his mortal vessel, the ugliness of pain, and then yearned for the absolute immutability of his body: he wanted to become an immortal.

Read More
11 Dec

DragonScales 6 game: Solution for Level 5-8

Some players of the latest DragonScales game, DragonScales 6: Love and Redemption, have reached out to us asking about a solution for Level 5-8. That level might seem a bit intimidating at first look, but once you figure out the little tricks for several parts of the board you’ll agree it’s kind of easy. Let’s take a look at the initial configuration of the board.

DragonScales 6 game initial configuration of Level 5-8
Initial configuration

A typical DragonScales board. We have two goals only: capture the red and the green cross-scales. There are some novelties, though, specific to DragonScales 6: keys and doors. Cells with a door icon won’t accept scales on them, so you’ll first have to remove the doors. That means you won’t be able to clear the top-left red cross-scale, or the green cross-scale or activate the arrow until you manage to remove the respective doors. To remove a door just click on it, but you’ll obviously need to capture at least one key beforehand. To capture a key, just form a combination containing the cell with the key.

Read More
13 Feb

Updating older games

We’ve finished updating several of our older titles, specifically, The Rainbow Machine, DragonScales: Chambers of The Dragon Whisperer and DragonScales 2: Beneath a Bloodstained Moon. These games were originally built with versions of LibGDX <= 1.6, so we took the chance to update them to the latest LibGDX 1.9.9. As expected, updating LibGDX broke a lot of things: several functions had been altered or simply removed, support for LWJGL3 was added, and plenty of other details we had to address. Once we managed to fix all the projects, we were able to create new Windows and Mac versions.
Extra steps were taken on Mac, as we had to produce a bundled Java app, code-sign it and resubmit the games to iTunes and other stores. Little by little, we’ve been getting the games live on iTunes again:

Our next goal is updating DragonScales 3: Eternal Prophecy of Darkness too. But this time we’ll also try to integrate the game with Steamworks 🙂

07 Feb

Recent Progress

Things have been a bit hectic over here, for good, since the beginning of 2019 🙂 We’ve managed to get new publishing deals and a few of our games have been recently released. Specifically:

    • All of our games were released on Shockwave.

Currently, we’re focused on updated builds for DragonScales 1 to 3. Of course, we’re also making progress on DragonScales 6. And other (secret) projects 🙂
Oh, remember DragonScales 5 is on sale (Steam Lunar Sale) until next Monday.

07 Jan

2019: Projects

2019. We’re back to the grind!

The first project we’ll be working on, undoubtedly, is DragonScales 6. That installment of DragonScales should wrap up the Zarya arc. We’re still in a very preliminar design stage (for instance, we’ve not yet reached a consensus regarding the title of the game,) but design of the new levels is coming out smoothly. DragonScales 5 had 200 levels, so the new level count must also be, at least, 200. At the outset, DragonScales 6 is expected to be a desktop-only game (Windows and Mac,) with no plans for a mobile version.

We also have plans for additional games. For instance, we’d like to deliver a mobile version of DragonScales. A totally new, custom DragonScales, different to the desktop versions of the game. In the past, we generated Android ports of DragonScales 1 to 3, aimed at tablet devices. However, we’d like to produce a novel DragonScales game, specifically tailored to cellphones. This version might pose a significant challenge, as we’ll have to fully redesign the UI and create new levels with proper dimensions for tiny screens.

There are other projects we’d like to tackle. For instance, we’ve been designing a new casual game with a non-fantasy setting. However, we’ve not been pushing this new franchise as much as we’d like because the casual market in 2018 has not been overly attractive. We’ll keep monitoring this trend. Nevertheless, we hope DragonScales 5 is released though several casual partners in Q1 or Q2 of this year.

There are also older projects we’d like to revisit, but we’ll handle them as (if) time permits.

Looking back, 2018 has been a good year: we completed two games (DragonScales 4: Master Chambers and DragonScales 5: The Frozen Tomb,) and we (finally) completed the submission for the greenlighted DragonScales on Steam. Please buy our game here:

OK. Now it’s time to return to work. First the story of DragonScales 6. It’s the beginning of a long journey.

20 Nov

DragonScales 5: The Frozen Tomb clinches the top spot on iWin

Good news! Our newest game DragonScales 5: The Frozen Tomb has reached #1 entry on casual game portal iWin.com. Yet more, DragonScales 5 clinched the top spot for all its 3 categories:

  • Match 3
  • Puzzle
  • Brain/Logic

We know new and fantastic games are released every day, and these “top spots” are temporal things, but today we’ll enjoy our little victory. Thank you very much to all of you who made this possible!

07 Dec

Our current projects: an update

A few months ago we published a list comprising the projects we were dealing with this year. As 2017 is closing down, let’s comment on the current status of each project:

  1. Revamping of DragonScales internal engine.
  2. 95% complete. Minor tweaks and optimizations remaining.

  3. Design of DragonScales 4.
  4. 50% complete. We have to design special levels, new battle mode, the new powers bar, and parts of the story.

  5. Design of a special version of DragonScales for advanced players.
  6. 80% complete. Most of the 150 levels of this game are already completed. We have still to work on the UI (skins, fonts, etc.), but for the most part the design and programming work is done.

  7. Localization of the original DragonScales into Japanese.
  8. 100% complete. The game was released a few weeks ago in Big Fish Games Japan: ドラゴンの鱗:ドラゴントレーナーの部屋

    DragonScales reached the TOP-10 of games in BFG JP!

  9. DragonScales 3 for Android (complete, but yet to be released.)
  10. 100% complete and released a few weeks ago via Immanitas.

  11. Production of a new build for The Rainbow Machine (German version.)
  12. 100% complete and released a few weeks ago in Big Fish Games Germany.

  13. A new build for NagiQ 2 which fixed a few issues (already live here on our site.)
  14. 100% complete and released a few weeks ago via Immanitas.

  15. Yet another build for NagiQ 2 suitable for localization (this localization of NagiQ 2 is currently a work in progress.)
  16. 50% complete. We created a full localization kit, but it still has to be localized by our partner.

Of course, this year we also released DragonScales 3 for Windows and Mac, via the major casual game publishers. We expect to have a strong 2018 start, with the release of the special version of DragonScales on Steam (we were approved this year on the now defunct Greenlight system), DragonScales 3 in German, French, and other languages, and of course, our main game for 2018: DragonScales 4.
Now, let’s go back to the grind. There’s still a lot of work to do before 2017 ends.

31 Aug

Extracting text from PSD files

Typically, we need to translate hundreds of strings when localizing our games. Most strings are text messages which the game loads from some database or simple text file. However, we often have to handle localization of several PNG images, such as the one below.

AWESOME! message in DragonScales

Such PNG images are exported from PSD files which must obviously contain at least one Text Layer. To speed up the localization process we have a little Photoshop script which opens the PSD files and extracts all the text we have to translate. PSD files are grouped in directories corresponding to the tileset they belong to. For instance, this would be a typical directory structure for the DragonScales games:

images/
    board/
        awesome.psd, great.psd, ...
    cards
        youwin.psd, sorry.psd, ...
    ending
        congratulations.psd, ...
    levelselect
        clickhere.psd, ...
    mainmenu
        welcome.psd, ...
    etc

A simplified but functional version of the script we use is this:

#target photoshop

var target = "/C/projects/ds/images";
var toLocalize = new Array();
var totalProcessed = 0;
var warningsFiles = new Array();

function log(msg) {
	$.writeln(msg);
}

function processPSDFolder(dir) {
	var files = dir.getFiles("*.psd");
    log("===============================================");
    log(dir + " -> "+ files.length);
    log("===============================================");
	for (var i = 0; i < files.length; i++) {
    	var doc = app.open(files[i]);
    	log("  file: " + files[i]);
        totalProcessed++;
        if ( doc.artLayers.length == 0 ) {
            log("   -> WARNING: ZERO TEXT LAYERS? THEY SHOULD NOT BE IN GROUPS.");
            warningsFiles.push(files[i]);
        }
    	for (var j = 0; j < doc.artLayers.length; j++) {
        	var lyr = doc.artLayers[j];
        	if (lyr.kind == LayerKind.TEXT) {
            	var lyr = doc.artLayers[j];
            	log("   ->" + lyr.textItem.contents);
            	toLocalize.push(lyr.textItem.contents);
        	}
     	}
    	doc.close(SaveOptions.DONOTSAVECHANGES);
	}
}

function saveStrings() {
	var out = new File(target + "/strings.txt");
	out.open("w");
	for (var i = 0; i < toLocalize.length; i++) {
		var str = toLocalize[i];
		out.writeln(str);
	}
 	out.close();
}

var root = Folder(target).getFiles();
for ( var i = 0; i < root.length; i++ ) {
	var fileFoldObj = root[i];
	if ( fileFoldObj instanceof File ) {         
        // Discard files at this level
	} else {
         processPSDFolder( Folder(fileFoldObj) );
	}
}
saveStrings();
log("Total PSDs processed: " + totalProcessed);
log("Warnings: " + warningsFiles.length);
for ( var i = 0; i < warningsFiles.length; i++ ) {
	log(" " + warningsFiles[i]);
}

Observations:

  • target is the path to your directory structure holding the PSD files.
  • The strings to be translated will we written to file strings.txt under your target directory.
  • This script looks for text layers on the top level of the PSD. It can be easily extended to inspect layers in groups, though.
  • We use warnings to be notified about files not containing Text Layers. These might be files requiring special exporting and extra formatting, and therefore we’ll have to handle such files exceptionally.