missile-toad's Issues
Setup of the Boards
This task is related
Definition Of Done (DOD):
Have a minimal set of Histories for the firsts important epics, related to the next milestones:
Definition of the Game:
- Creación de Historia
- Creación de Niveles (Level design)
- Configuraciones de compatibilidad y ambiente
- Creación de Assets
- Menús
- Creación de Música
Manager:
- Sistema de Gestión de Animaciones
- Sistema de Mapeado de controles
- Sistema de Generación de niveles procedurales
- Sistema de Gestión de OST
Features:
- Sistema de Manejo de Enemigos (la “IA”)
- Sistema de Guardado
- Sistema de Preferencias
- Sistema de Multilenguaje (Archivo JSON)
- Sistema de Diálogos
- Sistema de Disparos
- Sistema de Buffs debuffs
Maintenance:
- Documentación
- Deuda técnica (Refactors)
- Sistema de Logros (si nos da tiempo)
Pooling System and Colissions
Creation of Player Component
The player component should include:
- Health component
Creation of the github repository
DOD:
- A github repository were all the team has the right permissions and that everyone can push/pull
Implement default load on Scenes
DOD:
- game.json add new field default-scene and point where is the scene
- Definir en json la escena y los systems
- Load Scene descriptor carga el json
Definition of main history
The DOD of this task is:
- Define the main plot and the possible paths for the plot, defining possible mechanics on a document here: https://docs.google.com/document/d/1xS3wVxd_vPrkKFDQ6hlDWD-EgGIbERrK89o131PWels/edit?usp=sharing
Setup of the compilation enviroment
DOD:
A compilation enviroment that help us to compile and test the game on the next systems:
- Linux
- Mac
- Windows
- Switch
Create the scoped scenes of all the game
DOD:
- Crear json con scenas y systems
- Scene Menu
- Scene Hub
- Scene Laboratory
Creation of Bullet Components
This could be separated on 2: Player and enemies.
Should define:
- Behaviours
- Stats
- Types
Abstract the bullet on a utils
Collision component & physics callbacks
Software Architecture
Missile Toad software architecture
Architecture
The game is split into two main parts: the game engine and the game itself. The
game engine is responsible for handling the game loop, rendering, and input.
The game itself is responsible for handling the game logic, such as the player
movement and enemy AI.
Game engine
The game engine is the core part, is an abstraction over Raylib and some platform-specific
code. It is responsible for handling the game loop, rendering, and input.
The game engine contains the Core classes, which are:
-
Game
: The game loop, which is responsible for calling theupdate
and
render
methods of the game. -
Scene
: A scene is a collection of entities. The game engine contains a
stack of scenes, and the top scene is the one that is currently being
rendered and updated. TheScene
class provides utility methods to add,
remove, and get entities. TheScene
class also provides methods to
query entities by tag or by component. -
Entity
: An entity is an object that can be attached to a scene. Entities
by themselves do not do anything, can't be rendered, and can't be updated.
However, components can be attached to entities to give them functionality. -
Component
: A component is an object that can be attached to an entity. A
component contains the logic for updating or rendering an entity. Components
can be attached to entities to give them functionality. Components can specify
on which tick they should be updated (pre, post, fixed) or if they want to run
on the render loop. Components can reference other components attached to the
same entity or to other entities. Components can also reference the entity
they are attached to. Components can be enabled or disabled.Component provides the following methods:
update
: Called every tick. The tick is specified by the component.render
: Called every frame.on_attach
: Called when the component is attached to an entity.on_detach
: Called when the component is detached from an entity.on_enable
: Called when the component is enabled.on_disable
: Called when the component is disabled.on_render
: Called when the component is rendered.
And the following properties:
enabled
: Whether the component is enabled or not.entity
: The entity that the component is attached to.scene
: The scene that the entity is attached to.tick_phase
: A bit mask that specifies on which tick the component should
be updated (pre, post, fixed).
-
Input
: An abstraction over the input system. It is responsible for
handling keyboard, mouse, and gamepad input. It can be used to check raw
keys (such asW
pressed) or actions (such asJump
pressed) and axis (such asMoveX
). -
Renderer
: An abstraction over the rendering system. It is responsible for
handling the rendering of sprites, text, and shapes. It can be used to
render sprites, text, and shapes. It's highly coupled with theAssetManager
class, which is responsible for loading assets such as textures and fonts. -
AssetManager
: An abstraction over the asset loading system. It is
responsible for loading assets such as textures and fonts. -
AudioManager
: An abstraction over the audio system. It is responsible for
playing audio. -
SceneManager
: An abstraction over the scene system. It is responsible for
handling the scene stack and the current scene.
The game engine also contains some classes that depend on the core classes to provide
more functionality:
SpriteRenderer
: A component that renders a sprite.TextRenderer
: A component that renders text.ShapeRenderer
: A component that renders shapes.InputComponent
: A component that provides an integration between the input
system and the entity system. It also cleans itself up when the entity is
destroyed.AudioComponent
: A component that provides an integration between the audio
system and the entity system.CollisionComponent
: A component that provides an integration between the
collision system and the entity system.TimerComponent
: Provides a timer that can be used to run code after a
certain amount of time. This functionality is provided by reading the delta time
from the game engine.PhysicsComponent
: A component that provides a rigid body that can be used
to move an entity around the scene.AnimationComponent
: A component that provides an animation that can be used
to animate an entity in the scene (using the sprite renderer).
Game
The game is the actual game. It is responsible for handling the game logic,
such as the player movement and enemy AI. It is implemented using the game
engine.
The game contains the following classes:
PlayerComponent
: Connects various components to create the player entity.
For example, it connects theInputComponent
to thePhysicsComponent
to
move the player.EnemyComponent
: Connects various components to create the enemy entity.
For example, it connects thePhysicsComponent
to theAudioComponent
to
play a sound when the enemy dies.MissileComponent
: Connects various components to create the missile entity.EnemyAIComponent
: A component that controls the enemy AI. It is responsible
for moving the enemy towards the player.
DOD:
- An editable UML diagram about the Graphic Engine
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.