/OpenKnife

Game made in unity for a jam, using the best software engineering approaches.

Primary LanguageC#MIT LicenseMIT

Welcome to Open Knife 👋 🇧🇷

Version Documentation License: MIT Twitter: ScriptsEngineer GitHub issues GitHub closed issues GitHub language count

🔨 Features

✔️ Just a scene to make it easier to loading on your phone.

✔️ Use of 3 game states (Menu, InGame, GameOver)

✔️ GameManager is a singleton with all managers instantiated using interface.

GameStates[] internStates = GetComponents<GameStates>();
gameStates.AddRange(internStates);

✔️ UnityEvents for easy use of designers in the editor Unity.

✔️ Design with split structure with Assembly Definitions, helping in times of smaller compilations, obliging the use of SOLID and split of tests.

✔️ Full separation of game logic with UI, nothing depends on the user interface and its logic.

✔️ Use URP with quick and easy rendering for mobile platform.

✔️ Simple UI animations using triggers.

✔️ Boss mode Pull Request #7.

✔️ Use of Test Framework for procedure testing. - Runtime tests. - Editor tests.

Managers

Certain managers have been created to use logic and data easily and cleanly.

🚨 GameManager: A class singleton. with game states, It is important to note here the use of an interface for all components that want to receive event notifications from the game states.

🚨 LevelManager: Obviously responsible for the stages and their shipments.

🚨 UIManager: In addition to being the parent of the entire User Interface, it stores Canvas as well.

Actors

⛹️ Player with Shooter,Scorer

⛹️ Wood with Rotator,CurveRotator

⛹️ Knife with Knife,RigidBody2D

⛹️ Fruit with Rigidbody2D

Stages

✔️ ScriptableObjects to separate data from scenes.

✔️ AnimationCurves for time interpolation of wood speed.

✔️ AngleObject is a list that keeps object items with an angle.

📈 Challenges

Physics or Triggers?

One of the biggest problems seen in this production was the doubt that one should use physics or not. Problems using Unity physics can be seen here:

Physic problem

Where the stage ❓

For a designer it is very easy to just edit a file, in this way it was used the ScriptableObject.

Stage Object

👨‍💻 Shouldn't a designer use a code editor ?

Obviously a designer who wants to exchange an effect sound or choose when to instantiate a particle in the scene should create easily and quickly, so 'UnityEvent' was used extensively.

UnityEvents

Assembly Definition Use

Use of assembly packages for each namespace of the project, thus dividing the use of resources helping in the use of tests.

Production time

⏰ 12 hours

Author

👤 Rafael Correa (Script)

🤝 Contributing

Contributions, issues and feature requests are welcome!

Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

Assets used

🎨 FREE Casual Game SFX Pack

🎨 20 Evolving Fantasy RPG Weapons

🎨 Free Pixel Font - Thaleah

🎨 Free Pixel Food

📝 License

This project is MIT licensed.