GithubHelp home page GithubHelp logo

arta2dengine's Introduction

Welcome!

This is my Github repository. I don't have a lot of public repositories, although every once in a while I open source some my projects.

Programming Languages

I can code in the following languages.

C  C++  C#  Java  Lua  PHP  Python  GDScript  Visual Basic 

Game Engines and Frameworks

I can use following frameworks and game engines (with various degrees of expertise).

SDL  Unity 3D  Godot  Unreal Engine  Monogame 

Contacts

You can also reach me on Mastodon

Github Stats

GitHub Streak

arta2dengine's People

Contributors

artanisx avatar

Stargazers

 avatar

Watchers

 avatar  avatar

arta2dengine's Issues

Add to the Command.cs support for Gamepad analog input for Thumbstick and Triggers

At the moment the Command.cs module do not support the analog input from Thumbstick and Triggers.

Add this. For example:

// Move Kokichi with thubsitck
float maxSpeed = 10.0f;
Vector2 thumbMove = new Vector2 (newGamepadState.ThumbSticks.Left.X * maxSpeed, newGamepadState.ThumbSticks.Left.Y * maxSpeed * -1.0f);

kokichiPos += thumbMove;

// Use lefttrigger to do change kokichi scale
kokichiScale = newGamepadState.Triggers.Left + 1.0f;

// vibrate left and right rotors with triggers
GamePad.SetVibration(PlayerIndex.One, newGamepadState.Triggers.Left,      newGamepadState.Triggers.Right);

Create Command : Keyboard and Command : Mouse subclasses

Currently Command.cs deals with both Keyboard and Mouse events with an hybrid solution of two constructors.

It would be better to make the Command class abstract and then create two subclasses: Keyboard (with the current keyboard constructor and dealing with keyboard events) and Mouse (with the current mouse constructor, dealing with mouse events).

Enhance the Particle Engine plotting a way to define "Emission Types"

Currently the Particle Engine only has one way to emit particles, the default GenerateNewParticle() method.

Devise a system to accept ParticleEmissionType so that one could configure his own "GenerateNewParticle()" methods iniside a separate ParticleEmission file (implementation of ParticleEmissionType) and then make the ParticleEngine constructor accept that file:

// Example
particleEngine = new ParticleEngine(textures, SmokeParticle(),Vector2.Zero);
particleEngine2 = new ParticleEngine(textures, SparksTrail(),Vector2.Zero);

Implement an empty Update() method inside the BaseObject class and implement one in GameObject

With an empty virtual void Update() method in the baseobject class we make sure we can call Update() to all object (wheter they have an implementation or not) ensuring compatibility with foreach and the like.

Then implement a basic Update() method inside GameObject that uses Velocity to update the position of the GameObject. Consider if it's needed to add a further speed float to further modify it like Velocity * speed (or for instance to quickly stop an object from moving with speed = 0).

Create a InputHandler

The input handler will take care of creating Commands and updating them.

For example

// Create a InputHandler
InputHandler inputHandler = new InputHandler();

// Setup the GamepadX that will fire once
gamepadX = new Command(Command.GamepadButton.X);
gamepadX.SinglePress += GamepadX_SinglePress;

// Add commands
inputHandler.AddCommand(gamepadX);

// Update ()
inputHandler.Update(gameTime);

Mainly the inputHandler would take care of storing a list of commands and to update them all.

public void InputHandler.Update(Gametime gameTime)
{
   foreach(Command command in Commands)
   {
      command.Update(gameTime);
   }
}

Move all Basic Engine Code to the Arta2DEngine

In my current Monotest project I have some basic functionality (Particles, Sounds) that should be moved to here.

It's all very basic, but I think that doing the next tutorials and learning Monogame using my Arta2DEngine as a base (and creating new engine related tasks directly inside it) is going to be good to start building its foundations.

Consider adding a Gamepad vibration helper module.

Adding a module that contains some helper methods for the vibration.

GamePad.SetVibration(PlayerIndex.One, newGamepadState.Triggers.Left, newGamepadState.Triggers.Right);

For instance something that can vibrate both rotors for a given time or strenght:

// Vibrate for 5 seconds
Gamepad.Vibrate(5f);

// Vibrate for 5 seconds with intensity 0.4
Gamepad.Vibrate(5f, 0.4f);

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.