Chimp On Chips!

August 31, 2015 Studio Life

Hi Everymonkey!

We’ve decided to try and not be to afraid of the camera, and start a video podcast on Youtube.

Today, we’re pushing our very first short podcast in both English and French.

Please tell us what you think, so we may improve, in the Youtube comments!

The Force

June 18, 2015 Creative Process, Studio Life

In any crowded place, the discrete presence of Security Personnel is the last line of defence against absolute chaos. Dragonfly LTS1-M4 is no exception to this rule, and grey-clad, donut-munching officers patrol the corridors and public areas of the station. Heavily assisted by robotic help, the Force’s officers have the primary mission of assisting people, since robots are very efficient at law enforcement itself.

After a long day of work, or before a long day of work, or during a long day of work, officers need to discuss important things over a cup of hot, black, strong beverage. What better place than the Kebab for such a valuable moment? OK, let’s reword that a bit… What cheaper place than the Kebab?

picture of police officers

Sometimes, officers have a talk at the Kebab.

The officers pictured at this table are Ilse and Joost, from the art team, as well as Petar from the code team. Who better than the gamedev team can ensure order reigns ingame?

The Crab

May 18, 2015 Creative Process, Studio Life

Today, we’ve created a first draft for the Crab Bot, one of the fixtures developed by Lucia for the restaurant.

While Ania the lizardman would rather conclude he can’t do something and go sit until his supervisor provides instructions to overcome the obstacle, the girls consider all and every problem as an occasion to make a new robot.

icebotsketch

Over time, it seems that swarms of bots have colonised the station. Lucia and Mari’s creations play their small part in the joyous, self-organised mess the bots create. We hope to soon be able to show the next iteration of the Crab Bot!

Update 19/05/1015:

We’ve updated and animated the crabs. We’re pretty happy with the result!
Screenshot+2015-05-19+02.11.44

The alarm bot

May 6, 2015 Studio Life

We have progressed further on the Kebab level of our “Project DARK”.

Today, we’d like to present the world with our alarm bot, which is composed of two robots. These combined robots work together if they are in sleep (no danger around) mode, patrolling the scene.

If danger is nearby, they change faces and transform into one driving and one flying bot.

botconcept botmodel

Game AI

April 14, 2015 Creative Process, Studio Life

Hey monkeys!

We’ve decided to put some of the code as open source, maybe someone will find a use for it.
We have some AI in game, for things such as the “railway” system, the lift system, the city-appartments-lighting system, the cleaning bot swarms, etc.
Currently, it’s very much a work in progress, and it’s available on Github.

We’ve also improved the face of Mari, making her more cartoony. We hope you like her new style!

Screenshot+2015-04-13+02.49.52

It’s still subject to many improvements, of course :)

Days of Bountiful Harvests

March 12, 2015 iOS Games, Milestones, Studio Life

The cries of the gibbons echoed in the Moon Mountains. Raindrops softly dripped from leaf to leaf in the misty rainforest, as the explorers’s hot air balloon softly progressed over the canopy. Colourful orchids and little birds punctuated the never ending ocean of gigantic trees. After days of slow progress, the expedition finally could see the Astute Monkey Temple far away.

A picture of a hot air balloon flying over mountains

A group of adventurers set off for the famed Astute Monkey Temple

When they finally arrived, monkeys were partying in the courtyard of the temple. Banquet tables were covered with food, coconut juice was flowing to every glass… why such happiness, wondered the explorers?

The Astute Monkeys have just released their latest game, Accel Chaser, to the App Store, days after the release of their update to Flickety Flick :)

a screen from the game

a screen from the game

We hope you will like it :)

FlicketyFlick Deflector Edition Released!

March 6, 2015 iOS Games, Milestones

Hey every monkey!

 

We’ve released an update to our iPadĀ game and it now features deflectors and much better collision detection.
a screen cap of the game
We hope you’ll enjoy the game!

Because faster balls are harder to dodge...

Localization on iOS

February 16, 2015 Studio Life

Here at Astute Monkey we have had some issues with some localization features in iOS that come shipped with Apple’s development tools. In particular, the genstrings tool.

This command line tool is used to generate the .strings files that are used for localization. We’ve had a couple problems that we wanted addressed:

  • The NSLocalizedString macro takes a key and a description. We wanted this to be a key and a default value instead.
  • Running genstrings to generate a new localization file would overwrite all strings to be the value of the key, even if the string was already changed to something else. The -a flag is not applicable here because it’s append, and just duplicates our old keys.
  • The generated files were always encoded in a way that git and gitlab weren’t able to diff with previous versions. This would be no problem if we absolutely needed special characters, which at the time, we didn’t. It should only have that encoding if absolutely required.
  • Generated files look like crap. It could have a lot better formatting for future translators involved.

To address these problems, we’ve had to roll our own tool. We’ve decided to publish it on Github, as it might be useful for others as well.

Let’s take a quick look at an example, and the differences between generated strings files. This is test.m:

#import <Foundation/Foundation.h>

int main()
{
    NSString* strTest = NSLocalizedString(@"TEST_ONE", @"This is the first test string.");
    NSString* strTest = NSLocalizedString(@"TEST_TWO", @"This is the second test string.");
    return 0;
}

After running genstrings2.py -o . *.m, this produces a Localizable.strings file with the following contents:

/* test.m */
// This is the first test string.
"TEST_ONE" = "This is the first test string.";

// This is the second test string.
"TEST_TWO" = "This is the second test string.";

/**
 * Total strings: 2
 * Total duplicates: 0
 * Total preserves: 0
 * Total conflicts: 0
 */

As you can see, above all strings it will tell us in which file the string has been found first. (It could be duplicated in some other files, but this is the first occurrence.) Below all strings is a comment of some statistics. A duplicate is a string that appears in multiple files, a preserve is a string that has been changed in the strings file before re-generation, and a conflict is a duplicate with a different description (actually default value).

At this point, we could change TEST_TWO to something like This has been changed. Then, we can run genstrings2.py -a -o . *.m (the -a flag is append, which works differently from Apple’s genstrings) and it will preserve that value in the strings file: (note the total preserves count)

// This is the second test string.
"TEST_TWO" = "This has been changed.";

/**
 * Total strings: 2
 * Total duplicates: 0
 * Total preserves: 1
 * Total conflicts: 0
 */

Now a real production example would have a few more strings and possibly even some conflicts, such as:

angel@spear $ shopt -s globstar
angel@spear $ genstrings2.py -a -o Base.lproj **/*.m
35 file(s):
/**
 * Total strings: 36
 * Total duplicates: 24
 * Total preserves: 0
 * Total conflicts: 1
 *  (Check these keys!)
 *   "CHALLENGE_REWARD_MESSAGE"
 */

There are a few things left to do to make the tool a complete replacement, such as:

  • Generate positional formatting parameters (%d and %0.4f becomes %1$d and %2$0.4f) (we haven’t seen the genstrings tool actually produce this, although this is what its manpage says it’s supposed to do, but perhaps we missed something)
  • There should be support for CF-prefixed localization macros (for compatibility)
  • Support tables that go into Table.strings instead of Localizable.strings (NSLocalizedStringFromTable, NSLocalizedStringFromTableInBundle)
  • Support NSLocalizedStringWithDefaultValue

You can check out the source code on the Github repository. Be sure to let us know what you think, and if you have any improvements, we’re accepting pull requests as well.

Iterating on characters

February 12, 2015 Studio Life

We’ve now come quite far with defining the “Project DARK” game.

Lucia and Mari have grown under our pencils, and we’ve animated them, put them in situation… but we weren’t happy. Our demo models just aren’t as good as the environments we’ve spent so much effort on, and discussing them on the Facebook Indie Developers group helped us make a decision. Time has come to rework the models.

luciaanmari

 

First things first, we’ll update the concept art to make Lucia and Mari shine, before we build new model sheets, and redo the model and animations in Blender. It’s a lot of work, but it would be a shame to give a bad impression by skipping this step. Mari and Lucia need some love, we’ll make sure they get all the effort they deserve!

Updating the iOS games

February 3, 2015 Studio Life

Hi dear monkeys!

We’ve been lately updating our iOS games to the new iPhones and iPads.

a picture shows the gameplay

This is the game before the update. We have added cool deflectors since.

Accel Chaser, SkyDragons and FlicketyFlick should get a new release in the coming month, adding new content and better UI and interaction. We have already submitted AccelChaser to the App Store, but Sky Dragons and FlicketyFlick still need some small amounts of fine-tuning to the art.

a picture shows the gameplay

Jump, Axel!

I am very happy with this, because games age fast and we have been thinking of overhauling those three for about a year. I love being able to make games young and fit again, ready to jump into the fun!

 

As soon as we are ready to push to the Store, I’ll tell you monkeys, so you can play the best releases of our games ever ;)