open-source-ideas / ideas

💡 Looking for inspiration for your next open source project? Or perhaps you've got a brilliant idea you can't wait to share with others? Open Source Ideas is a community built specifically for this! 👋
6.59k stars 221 forks source link

Framework for making games #97

Open testman42 opened 6 years ago

testman42 commented 6 years ago

Project description

Currently free open source gaming has a lot of space and oppurtunities to grow. There are qute a lot of free and open source games, however most of those games have been out for a long time without receiving many updates or improvements. While those games are still as fun to play as they were when they were made, they cover only a small part of a demand for various game genres that comes with ever-growing FOSS community. Even though those games have source code publicly available, they are often not designed to be modular or easily moddable, so there is usually quite difficult to make changes or to make a total conversion.

So would it not be a good idea to offer the FOSS community the tools to very easily create the desired games? The process of creating new game has already been made much easier with various free and open source game engines such as Godot Engine. The process can however still be made easier by providing game develiopers with a set of pre-built modules that already resemble a functioning game which the develoeprs can then modify and use as a base for creating their own game.

Since Godot Engine currently has the most active community of all free and open source game engines, I would suggest that it gets used as a base for this game framework project.

Suuccessful creation of such framework would allow for much faster and more efficient creation of new games, effectively providing a lot more entertainment options to FOSS community and potentially even help with adoption of Linux, as having more games would lower the barrier for those who are hesitant to use Linux because of current lack of games.

Proposed implementation:

Start a Godot game project that is designed to be very modular and is structured in a logical, easy to understand way. All modules should be designed to be as standalone as possible, so that moving them around and modifying them does not interfere with other modules. That way game developers are given a lot of freedom if they decide to base their project on this game framework.

Then decide on which modules to be implemented. Start with modules that will likely be used in every game, such as

After that decide on what elements are common to various games and how to implement them. Elements such as:

While listed elements are more used in 3D games, there is no reason not to include elements that are often found in 2D games. Godot works very well with both 2D and 3D aspects and even allows for various combinations of 2D and 3D elements.

Regarding graphics and other visual elements, I believe it would be fine if it was all kept as an untextured grexbox or if some low-poly assets that are licensed under Creative Commons Public Domain (CC0) are used.

I am writing this idea because of the following reasons:

Relevant links: https://en.wikipedia.org/wiki/List_of_open-source_video_games https://osgameclones.com/

Relevant Technology

Godot Engine, other FOSS games and FOSS engine recreations.

StefansArya commented 6 years ago

Never mind about this comment


I think this project will need advanced level of development process.

For the example if you want to build 3D game engine, you must know how to calculate trigonometry and the geometry. Load textures to the 3D model, memory management, maintain code readability and the most important part is performance.

To maintain the performance you will also need to understand how video graphics are being processed and know how to utilize graphics API like OpenGL or DirectX for the different platform.

If you fail maintain one of them, it will become lagging or crash on different devices. Actually, developing a game was spend so many time. But developing the engine without some experienced people is much more difficult.

KOLANICH commented 6 years ago

If I understand right, he doesn't suggest to develop an own engine, but to take Godot and write some very generic modules for it. And the advancedness here is not to develop an engine, but to design the modules generally enough to be suitable (otherwise people won't use them and will reinvent a wheel instead) for all use cases, easy to use and efficient the same time.

StefansArya commented 6 years ago

Oh sorry, I think you're right. These modules doesn't need to alter with the engine very much. I just remembered my old experience when reading this issue.

Falieson commented 6 years ago

You can start to see my progress towards a game development suite w/ react.

This is the "game" module which I'll refactor out into its own module once its mature enough. https://github.com/TGRstack/example-games/tree/master/src/modules/game

Takes:

Outputs:

Next up:

P.S. This title is a framework for making games. I'm specifically working on React/Node board and card games. I highly recommend looking at PhaserJS for making 3D games with vehicles and player characters, etc.

zicklag commented 6 years ago

Another game engine you might find worth looking into is Armory3D. It comes with a very cool "Logic Nodes" feature that can make programming easier for non-programmers as well ( Godot might have something like that now too acutally ). Armory needs a lot of work, but it is growing fast. It could quickly Godot if enough people found out about it IMO. I just love it so much I couldn't help but mention it here. :wink: