Blog

I write code, this blog is a dream.

2013.06.21MiliWorlds Day 5

I think the GamePlay works.

I still have some balancing to do and I'd like to add a few sounds. Nothing terrifying. So if the world does not piss on my agenda I should be on time for next Friday shipping.

Not too bad for 5 days of sporadic work. OpenFL worked really well so far.

2013.06.20MiliWorlds primer

The end of the month is approaching quickly and I had to select something really really doable as my June game (OneGameAMonth).

The project is called MiliWorlds and is an action/strategy two players on one tablet game.

This evening I showed a small part of the game to my sons and we had great fun touching the game together.

I am a little bit sad that the gameplay will be too complex for them. I may have to create a simplified version so they can enjoy it too :)

As far as the graphics are concerned I went the don't-lose-time way. It's grey on white with a little touch of red here and there:

The GamePlay I have in mind should be fully implemented tomorrow or Monday. I hope it will be fun enough without too much adjustments because I have to ship the game within 7 days on Android tablets :)

2013.06.19OpenFL simple extension (1)

Until recently I used Adobe tools to deploy my applications on iOS and Android.

Since openFL is gaining momentum and seemed to reach a decent maturity level I wanted to use it for my next project.

Using high level abstracting libraries to get the job done is nice. But sometimes the better way is to just call this documented but not binded Obj-C function. That's what Adobe ANEs are for and they work quite well.

So how can we get the same freedom with openFL? Here's my first little extension attempt.

Create the extension using openfl template:

$ openfl create extension TestExtension

$ cd TestExtension
$ ls -1
TestExtension.hx   # the haxe binding to your extension
haxelib.json       # haxelib will be able to register the extension
include.xml        # openfl will use this to link your extension to applications
ndll/              # will contain native libraries for each platform
project/           # the source code of your extension

Now we have to compile the extension for each supported platform. This will feed the ndll/ folder.

cd project/
haxelib run hxcpp Build.xml
haxelib run hxcpp Build.xml -Dandroid
haxelib run hxcpp Build.xml -Diphoneos -DHXCPP_ARMV7
haxelib run hxcpp Build.xml -Diphonesim

Now let's register the extension with haxelib:

cd ..
haxelib dev TestExtension `pwd`

To ensure that my extension is created a quick test:

mkdir TestApp
cd TestApp

project.xml:

<?xml version="1.0" encoding="utf-8"?>
<project>
	<meta
        title="TestApp"
        package="me.labe.testapp"
        version="1.0.0"
        company="Laurent Bedubourg"
        />
	<app
        main="Main"
        path="Export"
        file="TestApp"
        />
	<source path="." />
	<haxelib name="openfl" />
  <haxelib name="TestExtension" />
</project>

Main.hx:

class Main {
    public static function main(){
        var t = new flash.text.TextField();
        t.text = Std.string(TestExtension.sampleMethod(16));
        flash.Lib.current.addChild(t);
    }
}

Compile and test on different platforms:

openfl test project.xml cpp
openfl test project.xml android
openfl test project.xml ios -simulator
openfl test project.xml ios

Worked like a charm on Mac and my Android tablet!

I still have to learn how to link external libraries and frameworks and how to organize custom code for each platform but it's definitely a good start: it's easier than creating ANE's for Adobe Air.

I had linkage errors with iOS, I'll update this post when I'll find what's going wrong and how to do it the right way.

And here's a GitHub repository for this simple extensionAnd here's the original post of Joshua about the subject

EDIT: It looks like my iOS problem is coming from an uppercase/lowercase inconsistency between platforms. Until this small bug is resolved you should be safe to experiment with lowercased extension names (as far as iOS is concerned).

EDIT: Definitely an uppercase/lowercase problem, here's the issue report so future readers will know when it is corrected.

EDIT: Joshua is cleaning up the extension template so everything will work out of the box really quickly :)

2013.05.29Bombcat

Hey, it's time to test my new game: Bombcat!

It is a nearly remake of a very old game: Bombjack.

The objective was to domesticate a little bit of 3D game programming building a fun little game.

Objective reached even if I still have progress to make to make things 'nicer'. I opted for a beach / acidulous ambiance, see by yourself.

Second objective: my first game with home made sounds and music.

The little nyanyanyanya loop seemed nice for this kind of game and I had great fun with other SFX. Your ears will curse me :)

Tell me what you think and I will try to improve the game (depending of motivation) !

2013.05.14Mid May Updates

I create my Bombcat levels using a simple image editor (using color codes).

Here's what the levels looks like:

The more I see it the more I want to use the style for a new abstract game :)

LIFE? LIKE… REAL PEOPLE AROUND ME?

I finally found the motivation to go work at the MOB: a co-working space in Barcelona.

It looks like a safe place for creative people. Except maybe for the owner, Cecilia, who seems to suffer from regular and gratuitous little acts of violence :)

I'll keep you informed.

BLINK BLINK DEATH BLINK BLINK DEATH

Two days in the future is a special day for me: my 35th birthday.

This year, with the help of my loved one, I ordered an Arduino starter kit to congratulate my inner geek who has been waiting to create "REAL" and possibly dangerous things for toooo long.

Let's blink some leds and then exterminate humanity!