Code Monkey home page Code Monkey logo

dengine's Introduction

Hi, I'm DCCoder!

Typing SVG


My name is Ernest Mallett. I am a Principal Engineer working at Elsevier in Submissions. Formerly I have been a C# development instructor, Lead Developer, Team Lead, Sr. Engineer, and other positions with other companies. I have been programming since I was 8 years old, starting with Basic and working my way up. My first love was PHP, developing websites and data collection interfaces in my teenage years.

DCCoder StackOverflow

DCCoder's streak

👨‍💻 Programming languages

Powershell Bash C# CSS Dart HTML Java JavaScript LaTeX NodeJS PHP Python SASS SQL TypeScript Rust Go

🧰 Frameworks and libraries

Arduino Bootstrap GitHub Actions Electron Flutter GitHub Actions JUnit Core (.Net) Keras Material Design X-Unit React Wordpress WPF (.Net)

🗄️ Databases and cloud hosting

AWS Azure MongoDB MySQL Oracle SQLite SQL Server Neo4j DynamoDB

💻 Software and tools

Adobe Android Studio Android Arch Linux Audacity Brave Codepen Git Google Sheets Insomnia Jupyter Postman Stack Overflow Visual Studio Code Jetbrains Terraform Vault

📂Documentation

GitHub Pages Confluence Markdown Mermaid Notion Android JavaDoc Obsidian Joplin

Profile modules supplied by github-readme-stats

dengine's People

Contributors

dccoder90 avatar

Watchers

 avatar

dengine's Issues

PlayOnce Animations

There should be the ability to add "PlayOnce" animations. Animations that will only play through one time and will then have to be called again. This can be added in SpriteSheet.cpp around here:

        Uint32 ticks = SDL_GetTicks();
        Uint32 sprite = ((ticks / 100) % animationCollection[currentAnimation].frames);
        SDL_Rect* spriteFrame = new SDL_Rect();

Rather than constantly looping through, we ensure that it only loops once.

Interruptable animations

Currently all animations have the ability to be interrupted. However, there may be times when it's desirable to play the animation completely through before moving on to another.

Adding the option to make the animations interruptible, with the default being true would be a good starting point.

License

There should be a license added to the project

Fix Build structure

Currently the system is broken into a few small projects. This number is expected to grow over time and having to open each one individually is going to degrade experience. This should be fixed to ensure that there is one build directory that can handle all the different projects.

UI System

There should be a system allowing for the creation and management of a user interface, such as menus or start screens.

Fix camera to follow

Currently having an issue with the camera not following the player. Need to look into this and get it fixed.

Readme Update

Currently the ReadMe.md file is a mess, and should be cleaned up.

Ensure documentation build will run on other systems

Currently the documentation build, located in .run/GenerateDocumentation.xml will not run on other systems without manual modification due the following line:

        <option name="SCRIPT_TEXT"
                value="Start-Process -FilePath &quot;C:\Program Files\doxygen\bin\doxygen.exe&quot; -Args &quot;C:\Users\ernes\CLionProjects\untitled1\Doxyfile&quot;"/>

Something should be put in place to automatically update the build so manual changes aren't required.

Add unload

Adding an "unload" function to GameLevel would probably be beneficial to unload any assets that may have been loaded into singletons or other things (audio files come to mind).

This could help with Save/Load System #12 so when we're loading a game we can "unload" everything with the current level and then load things with the new level.

Spike: Networking

Research what it's going to take to add networking.

  • Requirements?
  • Server vs client to client
  • Database requirements
  • Etc.

Only two of the four enemy animations are being played.

Currently in Game/LeafMan.cpp in the update function:

void LeafMan::Update(){
    std::weak_ptr<GameObject> playerGoPtr = Game::GetInstance().GetCurrentState().GetObjectByComponent("Player");
    std::shared_ptr<GameObject>  playerGo = playerGoPtr.lock();

    //Move enemies towards player
    if (parent.box.x < playerGo->box.x) {
        spriteSheet->SetCurrentAnimation("walkdown");
        parent.SetPos(parent.box.x + speed,parent.box.y);
    }
    if (parent.box.x> playerGo->box.x) {
        spriteSheet->SetCurrentAnimation("walkup");
        parent.SetPos(parent.box.x - speed,parent.box.y);
    }
    if (parent.box.y < playerGo->box.y) {
        spriteSheet->SetCurrentAnimation("walkright");
        parent.SetPos(parent.box.x,parent.box.y+speed);
    }
    if (parent.box.y > playerGo->box.y) {
        spriteSheet->SetCurrentAnimation("walkleft");
        parent.SetPos(parent.box.x,parent.box.y-speed);
    }
}

Only the left and right walk animations are being played. If this is a bug in LeafMan.cpp it should be notated as such and closed. If this is a bug in the SpriteSheet it should be fixed.

Collider components

Currently the built-in collider components don't do anything. Appropriate functionality should be added along with a "trigger" status that simply notifies the GO that a collision happened without preventing movement.

Autobuild Documentation

Github actions workflows should be setup to automatically run doxygen on the Doxyfile and then host the produced documentation via github pages

Update code documentation

Documentation within code needs to be cleaned up to assist future efforts in game development using this engine.

Statestack pop in main code

In the main game loop, at the end of the loop is the following code:

    while (!stateStack.empty()) {
        stateStack.pop();
    }

this should be changed to be:

    while (!stateStack.empty()) {
        Pop();
    }

Save/Load System

There should be a save/load system in place to allow the storing of the game's current state and for it to be loaded back into memory at a later date.

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.