The Belt


I have been using the Defold Engine in my spare time for a few months. I had some animations left over from a game I made ages ago using Corona SDK, which I am reusing in this one.

The starting idea was to make a mobile shootemup game to run over WiFi where you mine asteroids for coins and then purchase waves of enemies to send against your opponent. You also get upgrades from mining the asteroids.

I have found it much easier to create a game with Defold as the features in general are geared to making a game quicker… with Corona previously I had to do a lot more to get things running. So this game looks much more polished than the corona game even at this early stage. So big thumbs up to you guys.

At the moment the multi player side is not working… so when you purchase an enemy it appears on your screen. Which is handy for testing. I love using the particle effects and making the ships explode.

I will add a video below… my first time using YouTube for this so hopefully will work…

Lots of things I want to do like adding in more post render effects, sound as there is none at the moment…

The video and game are a little choppy on windows… probably some wasteful code in there on my part. But it runs really well on the Android devices I have tried… no choppyness at all.


Nice work! How about some screen shake? I’d add the option to reduce the intensity / turn it off completely because some people don’t like it, but generally speaking I think some well placed screen shake can really lift the feel.


I like that idea… I must admit I don’t know how it would be achieved. Do I need a custom camera ?

That would be the easiest way. I recommend rendercam - it has screen shake functionality built in.


Looks great… love the smoothness of it. I agree that some screenshake and even some juiciness might make it go even more WOW.

Something I was prototyping recently:


This is a vast improvement over what I had initially. I followed the following video and tried adding in as many effects as I could (like the kick-back when shooting, a big flare when bullets first appear, and bigger explosion):

Cheers and good luck with the development! Looking forward to see it grow.


Thanks TopBraj - That works really well. I added the shake into my debris routine… so that it shakes more with more debris… really nice. :slight_smile:

Bill - I enjoyed “the art of the shake” video. I have been watching videos on Sky Force… to get tips on detail.

My code is probably very similar to yours. My game uses png animations exported from 3d models into Atlas objects. Had to pay for that as I have no 3d skills.

Its hard work making a game I started running out of ideas for what the ships should do… and I only have about 8 of them.


No surprises there, given your username!


This is also my problem often when making games, no ideas on expanding. And the reason my shooter game is stuck at prototype level.

Skyforce is a great game to look at for inspiration. Maybe you can get more ideas from that and other shmups ?


If you’re thinking about this kind of game I highly suggest trying SPAZ:

It’s probably too ambitious though for a mobile game, but there are a lot of cool elements there you could borrow.


Hi Epitaph64, Thanks for the tip I watched a video on SP&Z. I really like the way the large ships flash and then send a ripple outwards when exploding. I would like to do something like that for my end of level ships. Very nice, cheers :metal:

The space backgrounds I created with SpaceScape which is a free tool.


This week working on this spare time hobby project…

I added some sound. I found that most sound clips I purchased needed to be edited in some way to make them not irritating to listen to. I used audacity and the low pass filter for this. I read somewhere about varying the speed and gain to make each sound a little more unique… which seems to work really well…"/sounds#underwaterexplosion1",{ gain = math.random()/2 + 0.7, speed = math.random()/2 + 0.7})

I completed work on a new mine object that explodes when shot enough… also an end of level monster that drops mines out of its rear. When its half dead it starts shooting lasers at the player.

The second youtube video… should be played at 1.25 speed… Its still running a tad slow on my PC but fine on Android.

The camera shake with the sound makes a good difference :wink:

I tried adding a shader so that I could add a ripple in the background when things blow up… but got stuck… maybe ill have to get someone else to do that one :face_with_raised_eyebrow:

p.s Making a tutorial series and then selling it on Udemy might be a good way to get exposure for Defold. There are so many Unity people on there it seems…


An update… I posted to the wrong message diary before sorry…

I noticed that a lot of the other games in this genre have a feature where when you let go of the screen they slow down. Anyway I pieced together how to do it from the forum messages.

  1. So I changed in game.project my “Main Collection” to another collection called logo.collection.
  2. In that logo collection I have a script to load my game collection and to enable it.
    i.e This is necessary for the timestep part later…
    function init(self)"#mainProxy", "load")".", "acquire_input_focus")

    function on_message(self, message_id, message, sender)
    	if message_id == hash("proxy_loaded")then
    		-- New world is loaded. Enable it., "enable")

It is loading a collection proxy that is attached to the logo collection.

  1. Then I can control the playback rate in the main collection. For example to pause…"default:/start#mainProxy", "set_time_step", {factor = 1, mode = 1})```
  1. For time slowing… requires two bits of code

a) In the player update function I add the code to decrease the timer and when less than one second, I start slowing the game.

	-- Slow down the game when they dont press for a few seconds
	self.lastMovedTimer = math.max(self.lastMovedTimer - dt, 0.05)
	if(self.lastMovedTimer < 1)then"default:/start#mainProxy", "set_time_step", {factor = self.lastMovedTimer, mode = 0})

So here the timer is reduced down to the minimum speed (0.05). Which is of course 1/20th speed

b) In my player on_input touch routine. If the timer was slowing down (i.e <1) then this code resets the game speed and the timer.

       if action_id == hash("touch") then
		-- Reset the game speed when a press comes in
		if(action.pressed == true)and(self.lastMovedTimer < 1)then"default:/start#mainProxy", "set_time_step", {factor = 1, mode = 0})
		self.lastMovedTimer = 3
  1. Important to note as others have that dt is affected or reduced by this. I had code that was using frames to count things and it went wrong when the game was slowed. I replaced that code to use dt and it works again.

Hopefully a helpful post… if theres a better way would like to hear about that.

I have been adding different types of asteroid fields to my game to create "levels…each level will have different aliens with a mother ship.

The idea is to either use these for progression or to make people pay to access them, see how much abuse I get for that idea… paying for a game… sacrilege…


That looks pretty sweet! Are you rendering out sprites or using 3D models for the planets?

1 Like

Thanks… the 3d models were made by freelancers… rendered to png files. The asteroids have 20 frames in an atlas. Ship doing a 180 has 40 frames but looks nice.

1 Like

I put an early access version onto google… So people can play the first world…


Had about 1000 downloads of the released version… I can see its going to require millions of downloads to make a living at this. Still its fun to create games with defold.:slightly_smiling_face:

Started working on a tile matching game… in the mean time.

Would like to know what the best HTML sites are for publishing games ? I tried but got no reply.


We announced a partnership with GameDistribution today:

I think they are worth a shot once we have the GameDistribution SDK available in Defold (probably available before Christmas).

1 Like

I completed the second world on my space game with crystal asteroids, different aliens and new weapons.

Would like to get it released onto GameDistribution soon :slight_smile:

Its been about a month since I first submitted my game… They reviewed it once and rejected it because they said the ads appeared randomly. Not quite correct… they were appearing at the end of levels.
But I read their guidelines… the ads have to appear in response to the user clicking something… so I made them appear at the start of levels after the user clicked to start. They claim to review in about 1-5 days… which is not my experience ( 1 review in 28 days). So I think its important to make sure your game does support their ads and shows them correctly in response to user action… otherwise you too could be in for a long wait.

Releasing my game to google play store in contrast seems to take a day or two.

Hopefully that is useful information to others submitting their games.


First world gives off vibe of early 2000’s games. Looks neat.
However, I noticed in video showcase on Play Store page, that asteroids go above timer. Is it design decision? Other UI elements seem to be drawn over scenery items, except for timer.

z ordering… yup the gui should be above :slight_smile: