Giter VIP home page Giter VIP logo

snaiel / godot4thirdpersoncombatprototype Goto Github PK

View Code? Open in Web Editor NEW
94.0 94.0 14.0 171.35 MB

A prototype project for third person combat. Contains basics for player movement, camera, animations, combat, enemy AI, user interface, sound effects, and background music.

Home Page: https://www.youtube.com/@Snaiel

License: MIT License

GDScript 100.00%
game-development gamedev godot thirdperson

godot4thirdpersoncombatprototype's People

Contributors

flynsarmy avatar snaiel avatar sod3n 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

Watchers

 avatar  avatar  avatar

godot4thirdpersoncombatprototype's Issues

REDUCE COUPLING

this codebase is just spaghetti in an unconvincing composition mask

What's bad?

  • why does a crosshair need access to a backstab and dizzy component? IT SHOULD JUST BE A CROSSHAIR with a toggle specifying if it should be shown or not!
  • when making the spellcaster enemy, why is the enemy script so tightly coupled that I need an attack component? And so many other dependencies.
  • Importing animation libraries requires certain animations scripts. For example, importing combat_animations_1 requires HitAndDeathAnimations, DizzyVictimAnimations, DizzyFinisherAnimations, BlockAnimations, ParryAnimations, and probs more. What if i only need the hit, death, and dizzy victim animations? Not sure how to deal with this hmmm.

TODO

  • decouple crosshair
  • clean up enemy script
  • create component managers?
  • actually utilise composition
  • actually utilise the observer pattern, signals

man i have no idea what im doing. I just spent hours removing everything from the enemy script, then spent hours putting it back bruh. Also the swordsman's movement is broken now. like how does that even happen.

OKAY here is my new plan. turns out a base enemy requires a lot of components to get started. But i realised that attack, block, parry, spell components are the ones that need to be able to swapped in or out. So i just need to make it so that doing this swapping is done nicely in a modular way. The base enemy shouldn't have declared references to these components.

I might just be going crazy now but handling weapon impact in the enemies should be more modular right? If those components shouldn't be referenced, ill need new handlers for when an enemy gets hit, blocks the player or parries the player. So essentially make the _on_hitbox_weapon_hit method modular. So nodes for backstab, dizzy finisher, hit, block, parry? Maybe doing it this way can allow for new/other types of behaviour when handling an incoming weapon.

I also feel the same for the character animations script. There really shouldn't be much exported variables. I also think setting and getting parameters in the animation tree should be done similar to how beehave handles the blackboard. Basically use a custom getter and setter for flexibility.

Also probably should be done for function calls in the animation tracks. Instead of accessing the animations script directly, just send a message to the parent animations script which will handle all the dispatching. OH MY GOD THIS IS THE MEDIATOR PATTERN. Edit: this is actually the command pattern. Bro all these design patterns are like the same thing lmao. no but i get it. i think...

  • decouple crosshair
  • dont reference ability components
  • weapon impact handlers
  • clean up and decouple character animations
  • custom setter and getter for animation tree
  • make character animations the mediator handle commands from animation tracks for the scripts

improve movement

it feels sluggish/sloppy

probably shouldn't use lerp for everything

Broken Dependencies/Broken scenes

screenshot1

Hello. I'm not quite sure if this is a problem on my end but I tried to clone this project to play around with and learn but it seems that there are a few broken dependencies in a few of the entities and animation scenes.

dizzy finisher from damage forces finisher even when not near enemy

To Reproduce

  1. make enemy dizzy from damage
  2. walk away

Desired Behaviour

  • player should be free to move around/ do what they please
  • not locked into a dizzy finisher animation/state
  • show crosshair when near
  • perform dizzy finisher if player attacks while crosshair is showing
  • attack normally when away/ crosshair not showing

Scene file 'Main.tcsn' appears to be invalid/corrupt, Error while loading file 'Main.tcsn', Broken dependencies

image

This occurs because you do not have Blender imports configured with Godot. See the documentation on Blender imports in Godot here: https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_scenes.html#importing-blend-files-directly-within-godot

In order to load the project, you must install Blender https://www.blender.org/ as this is what's used for the 3d models. The models are meant to be automatically loaded in using Blender within Godot but this needs to be configured.

After installing Blender, locate the install directory. For example, here is the location for my Blender on Linux:
image

Blender locations for Linux, Windows, Mac are documented here: https://docs.blender.org/manual/en/latest/advanced/blender_directory_layout.html

Once you have identified your blender install path, go to the Editor option in the top left menu in Godot. Then select Editor Settings
image

Then go to FileSystem > Import and paste your Blender path into Blender 3 Path.
image

Afterwards, just reload the project and it should work now.
image

improve player stun after full instability

#10 thx for initial implementation

  • make instability reach maximum, then stun player on next hit.
  • sfx
  • player kneel?
  • instability meter animation then reset
  • camera shake? (need to see where else to implement, not too much tho)
  • fix getting hit sound straight after getting stunned

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.