Git Product home page Git Product logo

tower-defense-godot4's Introduction

โš ๏ธ This repository has now been superceded by the new Outpost Assault repo that accompanies the Outpost Assault course. Please use that codebase instead of this one. We're still preserving this codebase because it has one or two features not present in the other one, such as hit states. Note, however, that this version is missing explosions, sound effects, and will be less up-to-date overall.

Outpost Assault: Tower Defense Game Template

An open source 2D tile-based tower defense game template built for Godot 4.0, created by Quiver.

Prerequisites

Godot 4.0 RC 6 or later.

Trailer

Outpost Assault Trailer

(click to watch the full trailer!)

Features

  • Tower placement
  • Different tower/weapon types
  • Various projectile types
  • Different enemy types
  • Enemy pathfinding
  • Basic enemy AI
  • UI and HUD
  • Player-controlled camera

Topics covered

  • Godot 4's new features:
    • GDScript's annotations
    • The massively-upgraded TileMap system
    • The Navigation Server API
    • Physics bodies, including the new CharacterBody2D
  • Signals
  • Class inheritance
  • Scene composition (or aggregation)
  • Character movement
  • Character animation
  • Collision detection
  • AI implementing the Finite State Machine (FSM) pattern and states
  • Following Godot's best practices
  • Creating UI and HUD using themes with the built-in Theme Editor
  • Scene switching/reloading

Code style and guidelines

The code will be written using static typing whenever possible and following the official GDScript style guide.

Every asset will be named using snake_case for usability. snake_case means the first letter of each word is written in lowercase and spaces are replaced by underscores _.

The following convention will be used: entity_animation_xx where entity is the entity itself (e.g. turret, player, muzzle_flash etc.), animation refers to the type of animation and xx are numbers indicating the sprite's order in the animation (starting from 00). Examples: infantry_idle_00.png, infantry_idle_01.png, explosion_13.png, infantry_move_00.png, etc. Optionally, entity can be omitted if its sprites are in a folder named after the entity itself. For example, if we have tanks and infantry, we could have the following folder structure:

tank/idle_00.png
tank/idle_01.png
tank/move_00.png
tank/move_01.png
...
infantry/idle_00.png
...
infantry/move_00.png
...

animation can also be omitted in case an entity only has one animation (e.g. a bullet flash or an explosion).

Installation Instructions

  • This project uses Git Large File Storage (LFS) to store asset binaries. To initialize it make sure you have LFS installed, then simply run git lfs install
  • Clone this repository from Github
  • Open the project file with Godot 4 and run it to play the Outpost Assault demo!

Questions/Bugs/Suggestions

For bugs and feature requests, feel free to file an issue here or comment on this template's project page.

Share with the community!

If you manage to incorporate this template into your next project, please share with the Quiver community!

tower-defense-godot4's People

Contributors

agmathew avatar dodoveloper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tower-defense-godot4's Issues

Spawn Issue on Mac

Having a spawning issue on the 1.0 alpha for Mac. Some units are stuck at the spawn point on the left. Occasionally a unit will "launch" toward the top of the screen and collide with other units (the tier 1 infantry in this screenshot is launching upward)

Screen Shot 2022-09-29 at 9 49 10 AM

Load failed due to missing dependencies

Cloned 8615c7c and tried to open the project. Received the following:

image

Those two png files do appear to be corrupted.

file title.png
title.png: ASCII text
file mouse_diagram.png
mouse_diagram.png: ASCII text

Zombie Tank

I had an issue on Wave 3 where a Tank was only half destroyed. The gun portion broke but the rest of the tank kept driving and started following left mouse clicks. It was not shooting and turrets did not recognize it.
Screen Shot 2022-09-22 at 12 05 34 PM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.