b3dgs / lionengine Goto Github PK
View Code? Open in Web Editor NEWJava 2D Game Engine
Home Page: http://lionengine.b3dgs.com
License: GNU General Public License v3.0
Java 2D Game Engine
Home Page: http://lionengine.b3dgs.com
License: GNU General Public License v3.0
Improve the unit test coverage.
Try to reach at least 80% for each module (especially the core).
Create a lionengine-audio module for each supported type:
This will avoid code duplication between lionengine-core-awt and lionengine-core-swt.
Currently the user have to search by himself the right class.
Having a view containing only the supported types will improve the user's access time and the readability.
Some project are not using maven (only the core part is using it). Add the remaining pom files for these projects.
In order to make it compatible with OSGI (as default package visibility are not accessible), update the core package to public in order to make it compatible.
Tile collision implementation can only be done from code.
The current way of implementing it is not really complex, but it may be hard to implements more complex collisions (such as link between ground & slope), and also harder to debug it (impossible to show them).
The goal is to allow an easier tile collision definition directly from the collisions.xml file, such as the following examples (tile size = 16, so min=0 & max=15):
<collision name="GROUND">
<tiles pattern="4" start="1" end="100"/>
<function description="ground" y="0">
<x min="0" max="15"/>
</function>
</collision>
<collision name="SLOPE_TRANSITION">
<tiles pattern="4" start="1" end="100"/>
<function description="ground" y="0">
<x min="0" max="7"/>
</function>
<function description="slope" y="-x/2+8">
<x min="8" max="15"/>
</function>
</collision>
Considering this, it should be easy to display an integrated debug mode for the collisions (by displaying the corresponding function after the map rendering).
It would also be nice to have a visual editor of this function, by using a simple map tile editor, that should be able to import a level rip (already available), define & assign collisions for the desired tiles by clicking on them.
In order to increase the overall compatibility with any platform, try to use Android API 3 instead of API 10.
The name "rts" is now incorrect, so that "strategy" must be used instead.
Due to engine update, the f_network package is still not up to date.
In order to solve an unchecked cast, try to not use the enum for object creation, but directly its class type reference.
The module lionengine-java2d should be renamed to lionengine-core-awt as it is more relevant to the implementation usage.
Add to the abstract a render method.
Add a parent project, and update all other POM.
Instead of including JNA in dist, just mark it as provided by the user in order to be more flexible and reduce distribution size (and also duplication).
Analyse and try to add a support to android.
New module lionengine-android should be created, as lionengine-java.
As the editor will support many map implementation (standard, platform, strategy...), their instance have to be dynamic, without having to modify the editor code manually.
So instead of just retrieve the resources folder, it should be better to add a project handler feature, which will also contains the resources folder.
Once a project is opened, it should be possible to select a map implementation (by searching its class from a dialog) and pass it to the editor in order to use it.
A first constraint sounds to be the map constructor, which must be simply the default one.
Do not focus on multi-projects handling.
What should be done:
Create a new project outside the engine core parts, called lionengine-editor, by using RCP4. Setup the program base with an initial view that will be completed later.
Include a level editor, with a grid depending on the tile size, and a navigation by using the keyboard (first, maybe other things later).
This step is about preview only, no tile editing or something else.
Prepare a Lionheart Demo that will use as much as possible the engine.
Items:
In order to prepare game rendering inside the editor, ensure it is possible to start the engine from within it.
Create an XSD per category (collision, entity...) and an integrated XML editor in order to edit with ease any parameter manually without forget anything.
It should also be possible to add elements from the project view, as:
Dedicated editor for:
Currently there is one single project dedicated to unit test, because an engine implementation was required to make it work.
Since there is more than one engine implementation (AWT, SWT & Android), the best would be to reintegrate the tests inside each of these modules.
As a first step, just move the existing tests to their module owner.
In order to give access to advanced tile collision to any type of map, merge the MapTilePlatform with MapTileGame.
It should be fully compatible, as there is nothing specific in Platform side.
Currently, there is one thread per sequence, plus the loader.
With some libraries such as SWT it will be a problem.
The idea is to change the way on how it is working in order to keep one single thread for the rendering.
It will also be the opportunity to update the input factory (mouse, keyboard...) in order to make it compatible with any system (PC, Android...).
Audio system can also be reviewed in order to allow platform specific (such as midi).
In order to separate properly the compilation phases, create two profiles
MapTileGame#loadPatterns is locked to a single call for each map instance. In case of a map reload with a new theme, it was not possible to apply it.
Due to the many recent updates and improvement, review all the code, and check, according to the test, if it is possible to improve something.
Update also if necessary the javadoc.
Currently the only way to define tile collision is to group them sequentially by collision.
The goal is to remove this constraint by enabling individual assignment or by range.
Example:
<?xml version="1.0" encoding="UTF-8"?>
<collisions>
<collision name="GROUND" pattern="0" start="1" end="1"/>
<collision name="BLOCK" pattern="0" start="2" end="2"/>
<collision name="TUBE" pattern="0" start="3" end="4"/>
<collision name="WALL" pattern="0" start="5" end="6"/>
</collisions>
<collisions>
<collision name="GROUND">
<tile pattern="0" number="1"/>
</collision>
<collision name="BLOCK">
<tile pattern="0" number="2"/>
</collision>
<collision name="TUBE">
<tile pattern="0" number="3"/>
<tile pattern="0" number="4"/>
</collision>
<collision name="WALL">
<tiles pattern="0" start="5" end="6"/>
</collision>
</collisions>
<tile pattern="0" number="1"/>
allows to define a single tile collision<tiles pattern="0" start="5" end="6"/>
allows to define a multiple tile collision by rangeOnce the level can be previewed inside the world view, objects can be placed, by selecting them from the resources selection (the XML represents the object).
It should also be possible to remove placed objects, and move them by using the mouse.
About the objects organization, it should be possible to sort them in any way (race, category, theme...).
Finalize documentation in many format:
In order to increase the overall compatibility with any platform, try to use SWT 3.5.1 instead of 4.3.
Instead of using an external doc system (such as a wiki which is complex to maintain), it would be better to include all that doc into the javadoc itself (class level documentation).
This way it will be easy to generate and navigate trough the javadoc.
Support maven.
Create pom file, update projects organizations.
The module lionengine-android should be renamed to lionengine-core-android as it is more relevant to the implementation usage.
Use LGPL licence for the standard LionEngine library:
Keep GPL for tools and applications:
Use some default checkstyle rules, check code and fix them when possible.
The rack AI is not moving (timer problem).
Add a new module called lionengine-core-swt as a core implementation in order to support SWT rendering.
Main engine modules should be compatible with an OSGI environement in order to include them in the editor.
Add enough examples to make the engine easily understandable.
Examples should be simple, by just showing what is necessary.
I encountered a problem, do not know how to do?
lionengine-editor project: in pom.xml node error info:
"Plugin execution not covered by lifecycle configuration: org.eclipse.tycho:tycho-compiler-plugin:0.20.0:compile (execution: default-compile, phase: compile)"
Add a least one progressive tutorial, showing how to make a game prototype.
Create a new module for that: lionengine-tutorials
Prepare and update the Warcraft Demo by using as much as possible the Rts module.
Pathfinding need also to be improved (group movement).
Prepare a Tyrian Demo and complete the shmup examples.
Projectiles usage should be demonstrated.
Fix all problems reported by findbugs, and create an ignore list for the false positive.
A problem in collision detection may occur if vertical translation is too fast.
In order to solve an unchecked cast exception, use the target class directly as argument instead of its enum type with a non typed class target.
In order to reduce space used by the utility classes, rename them to a shorter name.
Instead of using one interface for constants click & key value, put them inside the corresponding device implementation (Mouse & Keyboard) for the required core modules.
Instead of mixing geometry component with the code, try to put them in a separated package in order to narrow the core functional field.
Known classes:
plus their interfaces
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.