Code Monkey home page Code Monkey logo

youtd2's Introduction

YouTD 2

icob_min

Welcome to the codebase of YouTD 2!

About

This is a standalone sequel to the popular WC3 custom map, YouTD. Developed with Godot 4 and infused with the love of hundreds of fans, this game has grown as an open-source project, just like the engine at its core.

giphy-downsized-large (1)

Our goal is to develop a self-sustainable Tower Defense game that will grow with the help of the community. After finishing the core gameplay, we plan to implement a straightforward, automated mechanism for adding new towers, items, and builders to the game. This will allow the game to expand faster and maintain an open-sourced codebase.

Besides being a community-based game, it's still a great, well-balanced Tower Defense game with 1-6 hours of session-based gameplay, over 20,000 wave combinations, more than 700 towers, and an unlimited number of tactics to play with. Give it a go, and one day you might see your name in the game!

Getting Started

Read our Contributing guidance to find out how you can contribute to the project.

Required Tools

Godot is a feature-packed, cross-platform game engine to create 2D and 3D games from a unified interface. This game is written with GDScript language on Godot engine. You can download the latest version from their official website.

Required Permissions

Before opening the project inside Godot editor, make sure you download game assets from original or obfuscated folder and put the contents inside Assets directory. Ask owners of the repository if you don't have permissions to these folders.

License

YouTD 2 code is licensed under the MIT licence. The majority of content inside shared Assets folder is licensed under CC-BY-NC 4.0. Please see the licence file inside Assets folder for more information.

youtd2's People

Contributors

alexhuni avatar jdbuenol avatar kvel2d avatar mittig avatar praytic avatar vbogach 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

youtd2's Issues

Create scripts for items

Current progress:
41/41 pages on website

A number of items are disabled because their script is too complicated to completely implement at the moment.

Create assets for visual effects

Effects are things like explosions, lightning bolts, meteor falling down. Used as a visual for tower abilities and other things.
Can be implemented as a scene with an animated sprite.

UI for researching elements

Implement the same way as ItemBar.

Add third button in bottom right corner, next to buttons for towers and items.
ResearchBar - ItemBar
ResearchButton - ItemButton
Connect ResearchButton to ButtonTooltip, like ItemButton.
Disable ResearchButton when requirements are not met, like TowerButton.

There is already a class for storing element levels: ElementLevel. Call ElementLevel.increment() when research button is pressed.

Horadric cube

Recipes:

  • 2 oils => 1 oil same rarity
  • 4 oils => 1 oil higher rarity
  • 3 items => 1 item same rarity
  • 5 items => 1 item higher rarity

Oils and items placed into the cube must be of same rarity.
Note that transmute obviously can't go above the unique rarity. Probably disable recipes for such cases?

Write tooltips for buffs

Call buff_type.set_buff_tooltip() in tower scripts when buff type is created.
Not available on youtd website, have to write from scratch.

Example:
IcySkulls, "cassim_slow"
"Slowed\nThis unit has been chilled to the bone; it has reduced move speed".

Create item icons

Item icons are displayed in tower item inventory and in item storage.

Create sprites for common tower instances

Wave information display

  • Time until next wave
  • Current wave number
  • Start next wave button
  • Properties of the next X waves, types of creeps, size of creeps (x mass, y champion for example)

Implement menu for selecting difficulties

Values like creep health also need to change based on difficulty but this is outside the scope of this task.
Do difficulty adjustment for values as part of the tasks which define those values.

Game announcements

Display lines of text, scrolling from bottom to top. Contains information related to gameplay.

Lose condition

Portal has lives which are reduced when creeps reach it
When portal gets destroyed, game is over

Implement tower actions

Actions that can be performed while tower is selected.

  • Upgrade
  • Show info about current tower
  • Show info about next tier
  • Sell

Tower progression

Limit which towers can be built based on current wave number and research level.

Create icons for common towers

Create sprites for creeps.

  1. Create a 3D model
  2. Animate the model
  3. Export model into sprites, using a script
  4. Convert sprites into sprite sheets, using a script.

Last wave is buggy

When the last wave ends there are multiple problems:

  • No null check for next wave
  • wave_ended() signal is emitted twice
  • all_waves_cleared() signal is not emitted

Add colored border to items based on rarity

common - white
uncommon - green
rare - blue

For item icons when they are displayed in tower inventory and also when getting dragged.

Not a must have thing, consider whether items look better with or without colored borders.

Projectile visuals

Currently got a sprite with a trail, colored by element.
Could add more diverse visuals. For example a fiery orb with fire rotating around it.
All projectile visuals should have a trail though, otherwise it's hard to see the projectile.

Fix camera controls being laggy/weird

Especially in html5 build.
If you move the camera left, then try to switch to moving to right, there's a delay before camera starts moving to the right. Same for vertical directions.

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.