[Project] RTS game engine : OpenRTS is released


#101

The procedural covering becomes a little contextual. Vegetation and rocks on this sreenshot are placed automatically.


#102

Very nice progress. However we still need to think about how to blend the low-poly models with a somewhat more textured ground. I guess that “dune” set did it quite well, but this would require simple textures on all the models also.


#103

Thank you for the kind coment :smile:

As you may have noticed, the OpenRTS project lack of artists and 3d designers :slight_smile: I’m sure that the dune set would be a nice addition, but it will require some adaptation.


#104

Such a nice work !
Congratulations. It looks amazing.


#105

Yeah… I am still planning to convert it. But the day has only 24h and I need some time to rest too :frowning: Give me some more weeks and I will hopefully find the time.


jMonkeyEngine Prototype Assets
#106

Now we are able to change color of the actors directly from the XML dataset. This will be usefull to test colors directly in-game without the modeling software, having multiple versions of the same object, differentiate factions…

Ladies and gentlemen, the OpenRTS’ Circus is in town !


jMonkeyEngine Prototype Assets
#107

Hi everybody !

The news are rare because we are working on features that are not very visible (networking, refactoring…), but the OpenRTS project is still going on !

Today, a short video to present the Sower, this piece of code that places assets procedurally. It’s now fully contextual, and almost fully dynamic :smile:

Hope you’ll like it !


Best way to check collision between two meshes
#108

Hey, congrats on the HN feature man :wink:

https://news.ycombinator.com/item?id=10245490

Better get over there and answer some questions while the potato is still hot.


#109

Thanks :slight_smile: the Hack News has brought tons of unique visitors (7000 in two days !), almost 250 stars on the github repository and some pull request for corrections :slight_smile: That’s great !

Unfortunatly, no addition to the team for now.

let’s stay tuned ^^


#110

I followed the instructions in the Wiki (install gradle plugin 1.3.2 for JM3.0, gradle plugin 1.3.7.3 for HM3.1) and clone the project from the IDE: JMonkey 3.0 and 3.1a1. I can compile and run app.example.Game; but can not rotate the view. Also it complaint:
Build failure: gradle run.

 Stack trace:
    org.gradle.tooling.BuildException: Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-2.2-all.zip'.
    	at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:57)
    	at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    	at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:745)
    	at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
    	at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:71)
    	at org.netbeans.gradle.project.tasks.AsyncGradleTask.runBuild(AsyncGradleTask.java:322)
    	at org.netbeans.gradle.project.tasks.AsyncGradleTask.doGradleTasksWithProgressIgnoreTaskDefCancel(AsyncGradleTask.java:427)
    	at org.netbeans.gradle.project.tasks.AsyncGradleTask.doGradleTasksWithProgressIgnoreTaskDefCancel(AsyncGradleTask.java:354)
    	at org.netbeans.gradle.project.tasks.AsyncGradleTask.doGradleTasksWithProgress(AsyncGradleTask.java:346)
    	at org.netbeans.gradle.project.tasks.AsyncGradleTask.access$400(AsyncGradleTask.java:76)
    	at org.netbeans.gradle.project.tasks.AsyncGradleTask$BuildExecutionItem$1.run(AsyncGradleTask.java:697)
    	at org.netbeans.gradle.project.tasks.GradleDaemonManager.runBlockingGradleTask(GradleDaemonManager.java:52)
    	at org.netbeans.gradle.project.tasks.GradleDaemonManager.access$200(GradleDaemonManager.java:23)
    	at org.netbeans.gradle.project.tasks.GradleDaemonManager$2.execute(GradleDaemonManager.java:129)
    	at org.jtrim.concurrent.AbstractTaskExecutorService$FunctionWrapper.execute(AbstractTaskExecutorService.java:270)
    	at org.jtrim.concurrent.AbstractTaskExecutorService$TaskOfAbstractExecutor.execute(AbstractTaskExecutorService.java:340)
    	at org.jtrim.concurrent.Tasks$RunOnceCancelableTask.execute(Tasks.java:342)
    	at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$QueuedItem.runTask(ThreadPoolTaskExecutor.java:1213)
    	at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$Worker.executeTask(ThreadPoolTaskExecutor.java:1049)
    	at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$Worker.run(ThreadPoolTaskExecutor.java:1179)
    	at org.jtrim.concurrent.ThreadPoolTaskExecutor$ThreadPoolTaskExecutorImpl$Worker$1.run(ThreadPoolTaskExecutor.java:998)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':core:run'.
    	at org.gradle.initialization.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:77)
    	at org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:47)
    	at org.gradle.initialization.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
    	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:108)
    	at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
    	at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:43)
    	at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:30)
    	at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.java:119)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
    	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
    	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:47)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:35)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)
    	at org.gradle.util.Swapper.swap(Swapper.java:38)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:70)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)
    	at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:46)
    	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
    	at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
    Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':core:run'.
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    	at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
    	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    	at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305)
    	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
    	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
    	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
    	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
    	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)
    	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
    	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
    	at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
    	at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)
    	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
    	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)
    	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
    	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
    	... 32 more
    Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\jmonkeyplatform31\jdk\bin\java.exe'' finished with non-zero exit value -1073741819
    	at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:365)
    	at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)
    	at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:60)
    	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
    	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)
    	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)
    	at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)
    	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579)
    	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    	... 55 more

Can someone please help?


#111

I would advise to use the core project, since the exemple game is not stable at the moment.

You can run the main at OpenRTS-core.src.app.MainRTS.java. There you have both editor and game mode, accessible througt F1 and F2

Please open an issue on Github if you still have any complaints with this run.

About the camera, its orientation is fixed to the north. you can only translate it and zoom/unzoom.


#112

Hey, I just wanted to say that this looks really really cool.
On my todo-list there is a mixed RTS / FPS game and for that I will definitely try your RTS framework!
I can’t wait to test your pathfinding algorithm under several conditions and then enhance it with some more features like ant algorithms etc.
Great work! My best compliments!
:chimpanzee_smile:


#113

Hi and thanks for the kind comment :slight_smile:

The developpment may seem stoped but it’s not. OpenRTS will gain an entity system soon that is under development on another project.

Don’t hesitate to ask questions !


#114

@methusalah Thanks for the fun project! I tried compiling and running OpenRTS-core.src.app.MainRTS.java. It run as before, but still complaint ‘Build failure: gradle run’. I am not sure if it is due to the cloning of the project. I’ll explore and tinkle my config before I open an issue on Github.

I noticed the key mapping seems wrong, the WASDQZ keys seems to be captured by the GUI panel in editor mode (or may be it was programmed as a shortcut key on purpose?). And keys WS (moving forward and backward) becomes SZ in the game mode. The arrow keys work in all modes.


#115

Hi Hi!

Since C&C Generals (exactly the german version) doesn’t work on Win8, I had the idea to recreate this game somewhere in the future. But now… I think it’s kind of obsolete :smiley: I only saw your screenshots and haven’t played it by now, but it seems to be exactly this kind of game, I would have tried to create. To be honest, I don’t think that I would ever get so far, so it’s nice to have yours! The only thing I made so far, was a 2D-tower-defense-game from scratch, without any engine. Was hard enough… since my aStar-algorithm alone took nearly two weeks :smile:

Now I’m waiting for the download, which is soon completed. I’m pretty sure that my wife will hate me the next few days. Yes methusalah, you are the culprit :smile:

Oh, have I mentioned, that this game looks really really nice!?


#116

Tip:

Don’t write stuff yourself, use already existing librarys. I took 3 hours for A’* to find a bds style licensed code and make it work :stuck_out_tongue: Then a few tests to make sure it is working as expected :slight_smile:


#117

Thanks alot! But this tip comes a few years to late :smile: (at least for me). I was starting to learn java and had no glue, that there is such a cute engine like jMonkey out there. In the end it doesn’t matter. Sometimes I need to do things by myself, just to know how it works. aStar isn’t the easiest thing, but as soon as you understand what to do, it isn’t that hard anymore. If I would make a commercial game, I would surely use a well-tested library instead of reinventing the wheel. So you’re completely right!

Sorry for OT! So back to topic:
I haven’t seen my wife for the last few hours… :smile: Now that I see your game from “inside” I just like it more and more.


#118

I must say that this looks really promising.
Last week I was searching for something like this but couldn’t really find anything same as this.
Im very interested in what the idea is of the final product.
If there is a way that I can help developing it, I would gladly do it.

@methusalah
I tried to contact you via G+, however I accidentally pressed [enter] :smiley:


#119

Hi and thanks for both the interest and the kind comment !

OpenRTS is under development so yes, we need bodies to build it up and make it something very special.

Actually, the project is in a chrysalis : we are building an entity system and a visual data editor on a parallel project, and we plan to put OpenRTS on the top of that architecture to give it more strong foundation and scalability. Tought work but passionnating :smile:

Don’t hesitate to contact me via PM here, or at the team e-mail adress given on the reponsitory home page.

Thanks !


#120

Hi,

Nice Project! :stuck_out_tongue_winking_eye:
If i understand correctly this is under the MIT licence which means i can use it comercially as a part of my own Software?
Want to make a Wc3 like game where the community can make theyre own rts in a Map Editor and then upload it to a global Gameplattform (kind of like Steam).

Would be awesome, if i could use this for my own Game and for that contribute some of the RTS stuff i do in that game to the Framework.

Will be a Project using different Open source snippets to build a Game in Unity.

and i love that this is still in active Development! :smiley: Can’t wait to see what changes are still to come :stuck_out_tongue_winking_eye:

Greetings
Robin