Git Product home page Git Product logo

shotcaller-godot's People

Contributors

bpodrygajlo avatar davidas13 avatar erlend-sh avatar jrdoughty avatar k1aymore avatar legendiguess avatar oggykun avatar onein50million avatar rafaelcastrocouto avatar whalesstate 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  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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shotcaller-godot's Issues

Code hurdles

In orders.gd we have

const player_leaders_orders = {}

This is used first in a function called build_leaders() - still in orders.gd

func build_leaders():
	for leader in game.player_leaders:
		player_leaders_orders[leader.name] = new_orders()

and

func new_orders():
	return {
		"priority": ["pawn", "leader", "building"],
		"tactics": {
			"tactic": "default",
			"speed": 0
		}
	}

This is a dictionary of orders for every leader.

  1. In a c++ game engine this would be part of the leader constructor. new_orders() is just a default value.
    Every unit in the game has this dictionary. Only the Main/Unit scene actualy uses it. In godot this could be a part of a _ready() function or just an onready default value inside unit/leader class.
  2. build_leaders is a misleading function name. The same name is used four times in different nodes. If something is called "build" it should create an entity from start to finish. And reusing the name is very confusing.
  3. This was brought up before but everything in this game is a string, and we need to compare them constantly. String compare is not optimal. Plus coding is more difficult because the editor doesn't hint anything. You just have to remember every magic string in the game.

Then we have leaders_cycle. This is a function that is called every 4 seconds from a self-calling function.

func leaders_cycle(): # called every 4 sec
	for leader in game.player_leaders:
		set_leader(leader, player_leaders_orders[leader.name])
		
	for leader in game.enemy_leaders:
		set_leader(leader, enemy_leaders_orders[leader.name])
  1. Recursion is evil, regardless if its actual function call or just a yield to itself
  2. what is "set_leader"? Name tells me nothing about what is inside. It definetly will not be setting any leaders.

Now there is a set of functions:

orders.set_leader_tactic, orders.set_leader_priority - they handle player input/ AI decision

orders.set_leader - updates the orders to the unit - why is this delay necessary?
Can the player not just order the unit and have it do what he wants to do?

More on build_leaders() : The other part not mentioned above:

	var timer := Timer.new()
	timer.wait_time = 1
	game.map.add_child(timer)
	timer.start()
# warning-ignore:return_value_discarded
	timer.connect("timeout", self, "hp_regen_cycle")

This starts a global timer that starts hp_regen_cycle. This in turn causes regeneration to happen. Regeneration also updates items.

  1. This is spaghetti, no defending it.

keyboard shortcuts

All player actions should be achievable with just the keyboard and it shuold be clear for the player what keys to press. just basic a11y

Need to rewrite leaders skill system

To implement skill visualization and new skill mechanics, need to rewrite or extend active_skill.gd code. Because code is already pileing up.

Scoreboard

Tipical game scoreboard table listing each team Kills and all leaders K/D/A, LVL, GOLD, Last hits, items etc...
The scoreboard should appear while the player hold the tab button and at the end of the game.

touch support

Test all control on mobile and make sure that all buttons and inputs react to touch events.

campaign (joan of arc)

https://en.wikipedia.org/wiki/Joan_of_Arc

-img1: happy family with little daughter
-transition1 to darker context (night sky, under earth, etc)
-img2: war comming (bad guys)
-img3: simbolic way of showing the family death (blood on wall, shock face close up, empty swing, etc)
-transition2 to future (clouds, flipping book pages, hourglass, etc)
-img4: huge battlefield aerial
-transition3: zoom in on champion leader
-img5: champion defeating multiple enemies
-img6: battle over with leaders back while removing helmet
-img7: the fighter face reveal

in 1425, Domrémy was attacked and cattle were stolen.[42] This led to a sentiment among villagers that the English must be expelled from France to achieve peace. Joan had her first vision after this raid.[43]
Joan later testified that when she was thirteen, around 1425, a figure she identified as Saint Michael surrounded by angels appeared to her in the garden.[44] After this vision, she said she wept because she wanted them to take her with them.[45] Throughout her life, she had visions of St. Michael,[46]

the campaign can be easily sketched out by mapping every session of the campaign to one of the 17/12/8 steps of the Hero’s Journey:

  1. Ordinary world
  2. Call to adventure
  3. Refusal of the call
  4. Meeting with the mentor
  5. Crossing the first threshold
  6. Tests, allies, and enemies
  7. Approach to the inmost cave
  8. The ordeal
  9. Reward
  10. The road back
  11. The resurrection
  12. Return with the elixir

Unknow remove_from_group Error

E 0:00:06.545 remove_from_group: Condition "!data.grouped.has(p_identifier)" is true.
<C++ Source> scene/main/node.cpp:1827 @ remove_from_group()

We don't have any groups and we do not call remove_from_group in our scripts.
I have no idea why godot is outputting this error

cooldowns

Skills and orders should have a cooldown and a way for the player to visualize it.

Castle entry

To replace the classic moba fountain (safe-zone), instead we’ll let leaders enter/exit the castle.

They can’t attack from within the castle.

And when they exit, maybe they’re invulnerable but also unable to do any actions other than move for 2-3 seconds. Or maybe just high status resist but not full invu

Crossbowman Unit that I made.

Crossbowman
When can this unit be added to Shotcaller? He is based on a chinese crossbowman. Maybe he can be a mega pawn and spawns if your team manages to destroy the enemy barracks? I am pretty excited for this addition!

Restart / end game screen

After destroying the castle the game needs to show the scoreboard* (todo) and reset everything to allow a new game to start. The restart game menu should be placed on the mid container on the game UI panels.

tower upgrades

The outpost should allow the player to upgrade their towers to 3 different versions.
They should have a rock-paper-scissors scheme in order to keep the game balanced.

Leaders 'auto active' skills

Each leader should have at least one 'auto active' skill that will be triggered by the number of units around or some other similar AI script. Each skill needs an icon, a number of charges, cooldown and level progression.

  • Arthur
  • Robin
  • Rollo

godot 4.0 migration

  • migrate with built in converter
  • rename methods
  • fix on ready errors
  • fix map load errors
  • fix input errors
  • fix process errors
  • fix ui

Sell button, dont work

I tested with axe and potions. Sometimes Its even dont show when u close to blacksmith. If it shows and u press it, game will crush

pawns upgrades

The barracks should allow players to upgrade their pawns (infantry, archers and mounted units)
They should have a rock-paper-scissors scheme in order to keep the game balanced.

v 0.1 - first-playable

  • Leaders
  • Abilities (needs to be finished)
  • Items
  • Money
  • Experience
  • Unit AI
  • Migration to Godot 4.0

More shop items

We need at least 3 items for each group (offensive, defensive, control and consumables)
Each item needs an icon, price, and effects applyed as modifiers (check ./skills/modifiers.gd)

  • ui adjustment 5d1d11b
  • sprites for each icon fd95d0b
  • unique item passives

Leaders experience system

Leader should gain a fixed amount of experience per second and extra while around enemy kills in sight ranged. A function receiving this exp should return an integer with the leader level. Both informations (level and exp) should be displayed on ther UI stats panel.

day / night

Day/Night system should change units sight to 50% during the night period.
We also need some kind of UI icon along with the clock to allow players to foresee it.
And obviously the map lightning must change too.

'Choose your leader' screen

Build a table with all leaders on top and a bottom row showing the selected leaders for both players.
The selection should be stored as string with the leaders names at game.player_leaders as an array.

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.