Starter Kit - 3D Top Down Shooter


I took some past work I have done for a gamejam and I will be trying to make a 3D TwinStick Shooter Starter Kit (e.g. HellDivers: Dive Harder, Nuclear Throne, Magicka). I was inspired by the Starter Kits from Kenney :slight_smile:. I would like to post my progress here to keep myself motivated and gather feedback.

Here is a quick video of what the project look like at the moment.

The github repository:

The current features:

  • 3 controller schemes for Gamepad:
    • Left Stick to Move/Aim, Right Trigger to Aim, Button B to shoot
    • Left Stick to Move, Right Stick to Aim, shoot with Right Trigger
    • Left Stick to Move, Right Stick to Aim, auto shoot
  • Collision layers are set up to reproduce the infinite_inertia property which was dropped in Godot 4
  • Character Controller based on a State Machine (inspired from GDQuest tutorials)
  • Animation System based on a Blend Tree (rather than a State Machine)
  • Fully modelled and rigged character
  • Easily switch Character’s Skin
  • Camera follows Main Character
  • One Laser Gun
  • Debug Layer which can be toggled with L key

Next features, I am thinking of:

  • add Pause menu to select Controller Scheme
  • add keyboard + mouse Controller Scheme
  • make a level with Kaykit Prototype Bits
  • adding breakable box
  • adding juice / game feel
  • add ennemies
  • add multiple weapon support

Please let me know if you have any feedback, and/or what you would like to see in a such a starter kit? To be honest, I am thinking that it could be a starter kit for any top-down view game :smiley: but well, better keep the scope small for now.


Hello there!

I updated my project with a new feature. We can now open a menu and select between 3 controller schemes:

  • One Stick Controller (move with Left Stick, aim with Left Trigger, shoot with B)
  • Two Stick Controller (move with Left Stick, aim with Right Stick, shoot with Left Trigger)
  • Two Stick Auto-Shoot Controller (move with Left Stick, aim and shoot with Right Stick)

Does not look like much on-screen without seeing the gamepad!
Is there an easy way to show the gamepad input on screen :confused: for demonstration purposes ?

Anyway, you can try it for yourself by cloning the repo :smiley: !


Small Update! I made a my first EditorScript to build basic AABB collision boxe for my level modules (I am using KayKit Prototypes Bits).

bulding boxes

Just pushed the script into Github if you want to use it (in the branch make-new-level).

1 Like

Hey your project is looking really good! Starter Kits are incredibly useful so I am sure it will help a lot of people. I would suggest doors + switches. Weapon ammo pickups once you’ve implemented multiple weapon support. From your own list; enemies and juice are the big ones.

1 Like

If you get to a state you are satisfied with, it would be awesome if you submitted your project to the Godot Asset Library, like Kenney ! :smile:


Yes I would like to submit it to the Godot Asset Library when it is a bit more mature!
I will defintely add picking up ammo in my todo!

I added a small level using Kaykit Prototype bits and the Gridmap node.

The Gridmap node is pretty neat, only problem is that we can’t change the spacing of the painting brush. It would be great to be able to work on 2x2 grid with 4x4 pieces.
I opened a proposal here: Add a Brush Spacing property to GridMap to control spacing between tiles when using paint/fill tools · Issue #9612 · godotengine/godot-proposals · GitHub

Next steps:

  • Adding destructible elements
  • Adding some juice

Hello everyone!

Here an update from last week! I added destructible elements and some juice (e.g. recoil animation).

It was the occasion to explore the import workflow. I wanted to import 40 glb files as destructible objects.

Godot imports GLB files implicitly as scenes (.scn file) in the .import folder of our projects. And with the advanced import and post-import script you can shape the .scn file to be anything you want.

Here is the post-import script I am wrote (on the left) and what the results of what it does on the (right):

It basically add a RigidBody (in Kinematic mode), a AABB Collision Shape and a script to the root node (

And a quick example of how I use it:

Note that if your assets are already in a level (.tscsn file, as it was for me), it is a bit more complicated to use.

Godot automatically keeps the properties of the objects in the level as they were before the re-import. That is a good thing for keeping the object in the same position as before the re-import, but, guess what? The script slot is a property!! so Godot will force it to null as before the reimport, even though you added a script through the post-import function.

My temporary solution was to open VS Code and delete all occurence of script = null in the .tscn file of the level. I will probably open a proposal to discuss this behaviour. Godot should probably keep the script that the user added through the post-import.

Let me know if you have any questions!

Next steps for this week:

  • clean up what assets are part of the repo;
  • add muzzle and impact VFX (maybe trail?)
  • add sound that support the new VFX
  • start designing modelling an ennemy