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…