methusalah / OpenRTS

Real-Time Strategy game 3D engine coded in pure java
MIT License
1.33k stars 152 forks source link

general framework software architecture #62

Closed meltzow closed 9 years ago

meltzow commented 9 years ago

Hi all, OpenRTS should be a framework which supports any kind of common real-time strategy gameplay, design and control. With the current features (watch the engine in action !) OpenRTS has the potential the crow up to a powerful game engine. But we need a concept for extending and changing the generic functions of OpenRTS. We cant implement all wishes of all developers, which want to use OpenRTs. On the other hand, we must extend OpenRTS to support some new features like sound, networking and so on. The software-architecture must be prepared for this. In our last project we have very good experience with an EntityComponentSystem. Here are some explanations: http://wiki.jmonkeyengine.org/doku.php/jme3:contributions:entitysystem:introduction or http://wiki.jmonkeyengine.org/doku.php/jme3:contributions:entitysystem:advanced

This software architecture means a big refactoring, but solves a lot a problems which will coming in later versions of OpenRTS like multiheritance in models, codecomplexity in the controllers and extending/overriding functions in game implementations.

Any opinion on that? Are there any other plans for the future? thanks.

poVoq commented 9 years ago

The question really is, are you (or someone else) willing to do it? I have no idea if it is really needed, but would suggest to rather focus on practical goals like an enemy AI and a simple scripting system for scenarios.

Otherwise: for sound and networking there are systems for jMonkey that could be used easily no?

methusalah commented 9 years ago

IMO, there are two questions in this subject.

For the first question, I believe that the current architecutre allow a lot of evolution before showing major weaknesses. The trigger system (which is one of my first next works), the enemy AI, the sound actoring and other lesser features would plug flawlessly into the model as is.

I think that we shouldn't think about any major refactor before we have met a major evolution problem.

For the second question, this is harder to predict. I've imagine the data system to be expandable in many direction, but the needs are infinitly varied.

We first need to know if the engine will be used by coders which wiil extend and override to very different direction, or more by game designers which will use it only to tell stories, create maps and extend designs.

Our work won't be the same in these two cases.

For the Entity/Component approach, honnestly, I think it is more than a simple big refactor. You'll have to rethink the datastructure entirely. No problem if it is quicly modelable, or absolutly necessary, but I have the feeling that the actual datastructure have some potential (not because i'me a genius, but because it is the one used in Starcraft 2 ^^)

meltzow commented 9 years ago

ok. I will create a example game named OpenSC2. There we will try to implement a game used OpenRTS and based on Starcraft2. Then we will see where are the problems for other users of OpenRTS.

poVoq commented 9 years ago

What do you mean with "based on Starcraft2"? I was rather thinking about expanding the existing low-poly art set into a usable base game... maybe steering the art-style a bit towards a post-apocalyptic snowball-earth scenario that should go well with the untextured low-poly art. The other faction could be aliens that invade and try to terraform pockets on earth.

methusalah commented 9 years ago

@marius sounds interesting! In one hand I agree povoq saying there are important features to implement to have a complete engine. In the other hand, I understand very well the need of having a flexible and extendable framework at early stage.

So I let you judge the priority, and work on parts you are the most comfortable with ☺

@povoq you may want to create an art style dedicated issue ☺so I will give you my actual vision

Le dim. 10 mai 2015 09:12, poVoq notifications@github.com a écrit :

What do you mean with "based on Starcraft2"? I was rather thinking about expanding the existing low-poly art set into a usable base game... maybe steering the art-style a bit towards a post-apocalyptic snowball-earth scenario that should go well with the untextured low-poly art. The other faction could be aliens that invade and try to terraform pockets on earth.

— Reply to this email directly or view it on GitHub https://github.com/methusalah/OpenRTS/issues/62#issuecomment-100596553.

meltzow commented 9 years ago

hi, with "based on" I mean, the rules like playing, fighting, building and so on, are like SC2.

@poVoq your gameplay sound really interesting. I am a developer and I can't same cool style assets. So I need some help to create a runny and fancy game. I am sure we can support each other. Do you see a possibility for this?

meltzow commented 9 years ago

I was too slow ;-) https://github.com/methusalah/OpenRTS/issues/63

meltzow commented 9 years ago

@methusalah perhaps this is point for the JME Hub Forum? not for an github issue?

methusalah commented 9 years ago

yes we can close here and continue this discussion on the forum if you wish

meltzow commented 9 years ago

If there is another need for it,we discuss it in forum