Project D.O.P.E


Oh no! Cubixpix has not been discouraged by Mulu, and wants to do a new game!

This is …

Project D.O.P.E (Defold Objective : Platformer Excellence)

(As i don’t have a cool name to provide, DOPE will be a nice development title.)

I want to do another platformer, which of course will perform better than Mulu.
Mulu had two goals: learning Defold, and doing a complet project with it.

Now, i want to do a real platformer, which you can enjoy playing. Vast topic…

For the moment, i have just thought about general structure, and tools to be used.

Graphics & animations

  • Tiled instead of Defold internal editor

  • cut-out animations ? I don’t have spine license, we use COA-Tools from Andreas Esau.
    – export to png ?
    – or writting a coa to spine converter, as both of them export in JSON format.

  • changing size sprites (for collision mask)
    – using sprites or tiles ? Tiles could give use accurate collisions masks more easily ?

  • multi-resolution: can change the resolution of the game (not tied to 1024x768 as Mulu).

  • some sprites problems should be solved (no more strange behaviour at the top of a ladder).

  • Camera used : i like the @Britzl camera.

Music & Sound

  • A module (s3m, xm, it…) ? OGG music ?
    – arguments for module player : the size of a module !
    – arguments against : not supported in Defold.
    – arguments for OGG : simplicity to use.
    – arguments against OGG : size, quality, playback is not enough accurate for good synchronisation with game.

  • If module used and replayed (not converted to OGG):
    – need probably OpenAL Extension. I doubt i can use pure Lua mod player with output on Defold API sound functions.
    – FMOD may be ? But seems overkill.
    – Using native extensions, adapting a module replayer (dumb, mikmod…) ?

  • For sounds, Defold API should be enough.

Building and distribution

  • Using the cli tools for building (BOB), instead of building inside the editor.

  • Upload to website with version number and check the upload at the end, all done by script.

And that’s all for today.
Thank you for reading :slight_smile:


Good luck with your next project!


Hey, the project is not dead! But what have i done during all this time ?

Be assured i was not sleeping during the past month :slight_smile:

I’ve decided to write a native extension for music-modules replay.

So i’ve used DUMB as a base, for the replay part, and have written glue-code for using with OpenAL as output.
At the beginning, i was thinking it would be a quick cut’n’paste of some samples. I’ve end up reading the OpenAL documentation, and studying DUMB codebase (and thanks to its maintainer for lending a helping hand!). And after, i’ve remembered that i had forgotten a lot about C interfacing in Lua, and even with C coding , period :slight_smile:

I’ve written also a minimalistic Lua library, but for the moment it’s only standalone (not integrated into Defold).

The goal is also that people using Löve2D can use it, so i’ve made it as neutral as possible, for differents integrations (at least Defold and Löve2D).

It took me a lot of time for setting all those things, and it’s not finished yet, but i’m seeing the end of the tunnel.

You can see what i’ve done so far here:


Good luck, bro! And yeah @britzl’s camera is pretty cool. Wish Defold had something like that by default. The bad thing is if you have several collections you need to set the settings for each camera individually. Or maybe I’m doint it wrong.


I love the idea of using mod files with Defold. Great work :slight_smile:
I going to test it right now :tada:


Hey this seems really interesting, definitely something I’d like to try out.

Have you tried this out regarding synchronization? Can you jump between time markers/patterns or something in mod files with seamless playback?

Is there an API description somewhere for someone who’s not familiar with dumb? I see there’s load, play, usleep, stop functions etc, but is there more? I don’t know how to set up a Lua build environment so I don’t know if the built lib tells me these things :slight_smile:


For the moment, you cannot do much with the Lua binding, except playing and stopping module.

No seamless playback for the moment. In theory, i can begin at a given pattern, but in reality, there is an audible pause. I must look further for avoiding stopping totally the replay before relaunching at a given position (it’s too slow).

You can now compile test_without_lua.exe (just launch make, i’ve added to the Makefile). It’s a little demo which prints the currently row and samples played. Getting the currently sample played is the reason of being for this extension: i want to have a music driven model. That means samples control the events in the game: for example, you hear a mighty cymbal and then thunder strikes the player :yum: .

I will write documentation about Lua methods available when i finish the structural works. For the moment, i want to try to write the Defold part, and then i will write more documentation (without Defold part, you won’t do much anyway :wink: ).


Any progress on the audible pause issue?


Sorry, not for the moment. I will post here when it’s done.

For the moment, i’m working on a collada importer with assimp, with full animation support. I still have issues with bone transformations, but it’s getting better.
I know Defold provides a collada loader, but i want a more generic one, as i’m using Löve2D too.

When it’s finished, i will go back on the module player.