Giter Site home page Giter Site logo

amorphousclone's Issues

Add depth sorting on top of sprite sorting.

Sprites should also get sorted according to depth afterwards. All sprites of a certain type should be on the same depth if possible. This is required to assure that stuff like the slider button appears on top of the slider line.

Add an enemy spawner.

An enemy spawner is required to manage the enemy spawning, and it ties into #12 as enemies must be stored in a Box2D friendly manner.

Add enemy Gloople

Make a basic Gloople enemy that doesn't follow player and just crosses the screen randomly in straight lines.

Add sword to Player.

A sword is required for the Player to attack enemies, and is required to test the most complex hitbox case in #12. The sword will be rotating and translating all the time, and it will not be a rectangle therefore making it the most complex hitbox case.

Add an options menu.

There should be menu options for resolution, fullscreen, windowed. There should also be volume sliders, for when sound is implemented.

Refactor button handling.

The buttons should all be in 1 vector if possible and the button logic should be moved to its own function.

Add various buttons to the game engine

The game engine should have various buttons including a simple sprite button, a button with text, a checkbox with text, and a slider with % text output.

FPS Manager

An FPS manager class is required in order to track the amount of FPS in console for real time performance feedback.

It must calculate frame time and be able to return the average of the past 10-30 frame times. It must also be capable of printing out the FPS every half a second to console.

Required files:

GameEngine/FPSManager.h
GameEngine/FPSManager.cpp

Create an enemy spawner and a dummy enemy.

An enemy spawner is required for the main game that will spawn various enemies randomly, increasing in difficulty over time. For starters, it should be able to spawn a dummy enemy that will run in a random direction across the screen.

It should spawn enemies off screen and enemies should be removed after 20 seconds. There should also be a limit on the amount of enemies currently spawned. In the future enemies should be removed when they will no longer travel back into the screen.

Required files:

AmorphousClone/Spawner.h
AmorphousClone/Spawner.cpp
AmorphousClone/EnemyDummy.h
AmorphousClone/EnemyDummy.cpp

Spawn manager spawnrates.

Spawn manager should create enemies based on different spawn rates and load different textures and sizes for each.

Add enemy Biter

Biter enemy that follows the player and when in a specific range lunges at the player in a straight line.

Create all enemies on load

Create all enemies when the game loads so that there is less variation in frame time while the game is played.

Add animation system.

A system for animation is required in order to allow for sprites to not look as static.

Sprite manager refactor to use linked list and Sprite pointers.

Performance should be increased and memory usage should be reduced if GameEngine/SpriteManager.* is refactored to use std::list and Sprite pointers.

When a sprite is added, it must be sorted and thus as the amount of sprites increases, the more data needs to be moved around on an insertion. The sprite batcher then iterates forwards over the list as usual.

Currently sprite information is duplicated and difficult to remove. This requires the list of sprites to be rebuilt on Sprite deletion or for the search of a single Sprite, comparing all of the properties of the Sprite. Neither is a good solution.

The refactor will require the use of new and delete, so it will need to be tested properly for memory leaks. A Sprite* will be created with new, the pointer will be added to a vector or list and then stored and also returned. On deletion a search will be made for the pointer, it will be removed and then delete can be used.

Save options to a config file

The options from the options menu should be saved to a config file that is loaded when the game starts. If there is no file then the default settings should be assumed.

Rotate player to point to mouse.

The player must rotate to point towards the mouse. This will complete the simple requirements for the player to be functional until collisions can be completed.

Reduce frame time spikes

Currently enemies are spawned as needed, but this causes a spike in frame time. Instead enemies should be spawned on load, and then start moving into view normally as they would if they were dynamically created.

SDL_GetTicks() is used to count the frames, but it returns only ms when a more precise amount of time is needed.

Add ability to win or lose

The player should win when all the spawns are exhausted. The player should lose when he gets killed by enemies.

Use std::chrono to count frame time

Currently, SDL's Get_Ticks function is used to get the current frame time. The problem is that it gives ticks in milliseconds. Since 1 frame needs to be rendered in 16.66... ms, the current solution is to overshoot to 17 ms twice, and undershoot to 16 ms once. Using std::chrono would allow for more precise timing of frame times, and thus a more accurate time stepping.

Function pointer within class.

In ResourceManager.cpp, a temporary function "getTexturesB" was created since I was unable to figure out how to make a function pointer to ResourceManager::getTextures. Ideally getTexturesB wouldn't exist, and ResourceManager::getTextures would be used.

Improve sliders

The slider button should snap to the mouse in the middle, rather on the left edge. Additionally, it should be able to be initialized to a specific value and should be able to be set to a specific value later (the slider should be moved accordingly and the percentage should be updated as well). The sliders should also have an option to set the min and the max value.

Add sword swing attack on click.

The player should swing his sword to attack on click. The sword should collide with enemies during this period and kill them.

Ability to kill enemies

After SAT collisions are done for circles and rectangles and sword swinging is done then the player should be able to kill enemies when the sword is swung and the enemies collide with it.

Add selection box

A selection box needs to be added with left and right buttons to scroll through the options. This is required for

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.