Git Product home page Git Product logo

javagameengine's Introduction

JavaGameEngine

It is a simple game engine using Light Weight Java Game Library.

Motivation

The motivation behind this project was born from the Game Engine Game Maker Studio.

The Game Engine was simple to use, but had poor cpu performance when using scripts.

Scripts were equivalent to functions, but they were basically global functions.

Game Maker Studio was my first experience into programming and as I learned more about measuring performance, I found that the game engine just wasn't capable of doing what I needed without heavy modification.

With that in mind, I set out to create my own game engine using everything that I had learned from Game Maker Studio.

Since Game Maker Studio's language GML was similar to Java and many areas of the game engine had to be made by hand when dealing with 3D settings, It didn't seem like a very difficult task at first.

For many areas, it wasn't very difficult to implement. The most difficult area was the level editor.

I don't plan on finishing the level editor as I found that doing this level of work in Java is harder than I originally thought. The way that references work in Java make it more difficult to deal with changing things around.

With things like that in mind before I started, I planned to make the engine more editable for the programmers since there is no way to perfectly build an engine for any project.

What I Learned

With this project I learned a lot about handling input, different opengl calls, renderering text, resource management, and creating a decent game loop.

Examples of such are creating texture pages, creating optimal tilemaps, setting up objects that can be used in your game, the math behind renderering the game, the math and logic behind collision detection, and dealing with sound in an useful way (allowing you to loop based on custom points).

I also learned about Java's way of optimizing. Learning that it optimizes as the program runs was interesting and made me not only understand Java a bit more, but respect it more as well.

Not everything can be used in future projects, but many elements are very important to other projects.

What was used

The libraries used were the Light Weight Java Game Library (LWJGL), and the Java libraries including JavaFX.

Additional Notes

This project will likely not be continued due to the level editor being more complicated than I originally thought.

Due to the engine's editability, I believe that the engine is in a good place currently. I also feel that any aditional edits could end up hurting my other projects.

I would like to work on a C++ version in the future that supports not only OpenGL, but DirectX and possibly Vulkan.

This version would also support a better level editor, vertex skinning, direct input, and better resource management.

I would also like to create at least one game with both game engines.

The game created with this game engine would be a 2D game that uses tilemaps, so at least tilemaps will be added to this engine before I start the game.

javagameengine's People

Contributors

davidah121 avatar

Watchers

James Cloos avatar

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.