Giter VIP home page Giter VIP logo

mcgivrer / minimal Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 9.96 MB

The Mini'mal demonstration is one more time an exploration around game framework with implementation of PhysicEngine, Renderer, Particle system, World and Material. Physic Influencer will come soon with Water simulation effect.

License: MIT License

Java 96.29% Gherkin 1.44% Dockerfile 1.17% Shell 1.10%
framework gamedev java jdk19 tutorials

minimal's Introduction

McGivrer SkyLine

McGivrer's place

Who Am I?

Hello dear visitor. Welcome to my virtual software home.

McGivrer's outdoor photoI am a former software developer, now acting as a platform architect in a world-sized pharmaceutical life science industry (but this is top secret and I won't tell you because I would have to make you "disappear" :)

Red: create test, Green: Code passing test, Refactor: clean codeAnyway, here is my playground around java (but not only !) software development, you will find some results from my research about software architecture usage, pattern, tooling and libraries usages. My center of interest is any tool/software that can drive better and well-managed software, from ideation to production.

I will try and use some TDD approach, maybe BDD, but moreover, good documentation practices (only personal point of view and experiment) and build automation with cloud offered platform like the GitHub one.

McG's devlog

  • LATEST 2023-08-02 Build scripts v4.2 is coming with some cool new features like JUnit test execution (thanks to junit-platform-console-standalone library) at build time or just execute unit tests 'on-demand', and simplification of build script usage by adding a build.properties at the root path of the java project.
  • 2022-05-20 A v4.1 script to build light java project, having already the Javadoc generation and unit test execution thanks to the "JUnit platform console standalone".Now it can create an EPUB file from the /docs markdown documentation files, respecting a file and directory structure, and thanks to the fantastic tool pandoc,

WARNING This build script does not intend to replace a more efficient and useful maven or gradle tool. Its purpose is only to provide a fast way and ease of usage to build ridiculous small Java projects. But without sacrificing build features.

Projects

Statistics

minimal's People

Contributors

mcgivrer avatar snyk-bot avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

minimal's Issues

Add Lights

Light

In the context of a 2D platform game, the Decors need to be lighted with some specific colors or dimmed to match required ambiance.

It is time to add some Light to our game framework.

A light can be an AMBIANT light, a POINT light or a CONE Light, having an identified target.

The Light class must extend the GameEntity object, and add required new attributes.

Add Particle System for Rain effect

Goals

To be able to simulate rain effect, add an new component to manage multiple particles as drop.
The same component will be reused to add stars as background.

ParticleEntity

The ParticleEntity will add child entities to a GameEntity. Using already existing Behavior to animate child particles.

An implementation of a Behavior will allow rain animation with wind effect : the RainParticleBehavior.
The wind parameter (a Vector2D) will be defined in the World object.

Add Collision Engine

Add a CollisionEngine to support collision detection and resolution on Tile and GameEntity.

The World play Area must be split into partitions to enhance performances of collision detection.

Water level simulation

As PhysicEngine already provides some solid module, we can add new Water simulation.

To serve this new feature, we introduce the Influence concept, a defined area in the play area, changing the locally the physic properties though applying a specific Material or some forces.

public class Influencer extends GameEntity{
  Reclangle2D  area;
}

and the PhysicEngine will apply those modification to impacted GameEntity, the ones contained by the Influencer#area.

In a second Time, we will add a WaterEntity, embedding the Influencer characteristics and waves visual animation.

The WaterEntity is an Influencer with drawing capability to draw some vertical vectors for the water surface. The width of the water surface is divided into equals spacer, and on each spacer edge, we draw a point at top of a vertical vector.

The water is animated by changing the vector length, according to object colliding the water/Influence object: a wave is generated from the colliding place through the two horizontal opposite directions.

Add random Wind

In the DemoScene, the rain effect is already active with RainEffectBehavior on ParticlesEntity.

I'd like to ad Wind to be applied to rain drops and make the wind blows in some random direction,
but with parameterized controls like:

  • maximum force,
  • min and max direction angle,
  • a maximum delay between 2 direction changes.

This must be implemented through new scene behavior WindyWeatherBehavior, applying new parameter on the World#wind attribute, used by the RainEffectBehavior.

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.