• Advertisement

Picking a real-time strategy engine

Recommended Posts

So I have a 12 year old son who wants to dip his toes in game development, while I am good enough at programming but know very little about game dev specifically, or graphics. And from the advice I already got. trying a project of his own is (surprisingly) a favored option. His favourite genre is real-time strategy, and I do have a ready lore set that would make for two factions with wildly different units (balancing that is a topic for another say).

But while my favourite language is Python, I'm not exactly optimistic about him implementing a full RTS UI from scratch with Pygame. What with a search for an RTS in Pygame yielding a huge lot of unfinished stuff... So I think he needs to start with a genre specific RTS engine.

Python bindings are not essential. I can work out any language and help him work that out. While something like ANSI C would be a major pain, most modern high-level languages, from Java to LUA, would be acceptable. Free to use is a hard requirement, open source is preferred but not essential. Running the games on Android and making them available as Flash would be a bonus but very much not essential.

From googling alone, SpringRTS is the number one contender for now, but I would really appreciate advice from people who actually know what they are talking about. (Unlike y own position at this point).

Share this post


Link to post
Share on other sites
Advertisement

I personally think that an RTS game would be quite a huge undertaken for you to take on, as a person who knows how to program, let alone for someone so young. Im not saying not to go for it, but maybe just start off on something smaller, and a little easier to keep interest levels up. I think rather then using a RTS engine like spring, you should look into using something like Unreal/Unity. They will show results quickly, and keep things more interesting, plus there are hundreds of tutorials etc for them, and will get usable experience for any other projects you may choose to do, 2d platformers/3d/whatever. Just even google unity/unreal RTS and you will see tutorials already available to help things along

Share this post


Link to post
Share on other sites

I don't have any experience with Spring, but it looks, at first glance, like something more programming-oriented than things like Godot, Unity or Unreal, which might be more friendly to the way your son will want to think about and work on creating this game. Even though they aren't RTS-focused, they can be used to implement RTSs fine, and they can be used in a more visual-first fashion that is often easier for young people to grasp. That way you can help him with the programming concepts with less of the uninteresting monkey-work of typing all that code and having to get syntax precise, and he can get immediate interesting feedback on how cool things look.

I'd recommend you take a look at the Godot engine, Unreal and Unity, perhaps installing them and messing around with them privately at first, and then working through one of the sample games or tutorials with your son on each of them, and see which one he naturally gravitates towards. That also provides you a fun opportunity to involve and teach him about one of the other great skills of a game developer: making critical decisions about which software will work for your specific needs and requirements.

Share this post


Link to post
Share on other sites

I second the recommendation for an engine like Unreal/Unity. They're pretty well rounded, and, as others have noted, have tons of tutorials out there. It'd definitely be worth downloading them and messing around with them yourself, then branch out from there. Also, do you have anything in mind for what the end result should look like? I know you said RTS, but RTS is pretty broad. Do you have anything specific in mind?
 

I would also recommend to keep the project on the simpler side. You can still stick with an RTS, but something like one level/map perhaps, maybe with limited amounts of commands, etc. since a full fledged RTS can be very overwhelming to develop. 

Share this post


Link to post
Share on other sites

Well, I did not expect him to develop the UI for commands etc at all. I wanted that to be provided by the engine, which is why I was looking at SpringRTS. A quick google says that there actually is an RTS asset pack for Unity but it costs $19 (not a prohibitive price). 

A "simpler option" might be tower defence, as it is a subset of RTS functionality. (An RTS would have towers anyway, and a tower defence also has moving units, except their routes are fixed).

He is not very keen on visual development stuff, he actually wants to be writing lines of code, but I do like the general approach proposed here. We'll start by spending time tinkering with a lot of agents and libraries. He needs to learn to thrive in the modern situation, where you nearly always look for someone else's existing implementation first. This is true way beyond the game segment of software.

Edited by Ramendik

Share this post


Link to post
Share on other sites

I'm not as familiar with Godot, but both Unity and Unreal have paths towards building games more with code (C# for Unity, C++ for Unreal). One of the nice things about them is that it's pretty easy to pick a comfortable spot on the continuum of "code" versus "visual building blocks."

Share this post


Link to post
Share on other sites

I'm gonna go out on a limb and say try SpringRTS.  You supposedly can customize pretty much anything and it will be alot easier to get results quickly since everything already has an implementation.  I think quick results and ease of getting up and running are important.

However I'd also say go to the unity store and see if there is code for an RTS (I just quickly checked and it appears to have something - https://www.assetstore.unity3d.com/en/#!/content/79732 ), that also might be a good option.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By katastrophic88
       

      Hello Everyone!
      I’m now working with Zugalu -- developer of an upcoming SHMUP named Technolites – as Community Manager.
      In Technolites, you’ll take command of a fully customizable ship and dash across the universe to defeat an ancient alien threat. Deploy more than 500 weapons and utility upgrades – fighting by yourself or with a friend. The fate of humanity rests in your hands. We’re currently live on Kickstarter, and we’d love it if you could check out our page! Any feedback is greatly appreciated
      https://www.kickstarter.com/projects/643340596/technolites-a-story-driven-shoot-em-up-by-zugalu
      Looking forward to seeing all of the great game projects being developed and launching this year!
    • By getoutofmycar
      I'm having some difficulty understanding how data would flow or get inserted into a multi-threaded opengl renderer where there is a thread pool and a render thread and an update thread (possibly main). My understanding is that the threadpool will continually execute jobs, assemble these and when done send them off to be rendered where I can further sort these and achieve some cheap form of statelessness. I don't want anything overly complicated or too fine grained,  fibers,  job stealing etc. My end goal is to simply have my renderer isolated in its own thread and only concerned with drawing and swapping buffers. 
      My questions are:
      1. At what point in this pipeline are resources created?
      Say I have a
      class CCommandList { void SetVertexBuffer(...); void SetIndexBuffer(...); void SetVertexShader(...); void SetPixelShader(...); } borrowed from an existing post here. I would need to generate a VAO at some point and call glGenBuffers etc especially if I start with an empty scene. If my context lives on another thread, how do I call these commands if the command list is only supposed to be a collection of state and what command to use. I don't think that the render thread should do this and somehow add a task to the queue or am I wrong?
      Or could I do some variation where I do the loading in a thread with shared context and from there generate a command that has the handle to the resources needed.
       
      2. How do I know all my jobs are done.
      I'm working with C++, is this as simple as knowing how many objects there are in the scene, for every task that gets added increment a counter and when it matches aforementioned count I signal the renderer that the command list is ready? I was thinking a condition_variable or something would suffice to alert the renderthread that work is ready.
       
      3. Does all work come from a singular queue that the thread pool constantly cycles over?
      With the notion of jobs, we are basically sending the same work repeatedly right? Do all jobs need to be added to a single persistent queue to be submitted over and over again?
       
      4. Are resources destroyed with commands?
      Likewise with initializing and assuming #3 is correct, removing an item from the scene would mean removing it from the job queue, no? Would I need to send a onetime command to the renderer to cleanup?
    • By Nimmagadda Subba Rao
      Hi,
         I am a CAM developer working with C++ and C# for the past 5 years. I started working on DirectX from past 6 months. I developed a touch screen control viewer using Direct2D. I am working on 3D viewer currently. I am very slow with working on Direct3D. I want to be a gaming developer. As i am new to this i want to know what are the possibilities to explore in this area. How to start developing gaming engines? Is it through tutorials? I heard suggestions from my friends that going for an MS helps. I am not sure on which path to choose. Is it better to go for higher studies and start exploring? I am currently working in India. I want to go to Canada and settle there. Are there any good universities there to learn about graphics programming? Sorry if I am asking too many questions but i want to know the options to choose to get ahead. 
    • By Bokchee 88
      I am animator by hand, and i am doing game animation for at least 8 years so far. During the last 2 years, i came with a idea for game and maybe some day, i want to start indie game company. As i am thinking to start game company, i am also thinking what kind of value i can give to the company. For example, am experience in animation,sales(I was selling web development services, before i jumped to gaming), bit of rigging- just not for production, i am learning on the side as well. The rest of the gaming production, like modeling, concept art, texturing, i am total noob or to say better, i am no near interest to do modeling for example, don't have such a patience to do it. But before characters and things are made for animating, what the hell i am would do?
      Also, what is the ideal size of the founding team of a game company? Positions to be filled mostly are, Concept artist, Modeler/Texture artist, programmer, animator-rigger. And later would need more people to join, like more animators, programmers, sound, fx,etc.
       
      And lastly, do i need to have something,like a prototype, to show people and get them interest, or should i ask someone i know, for skill that i lack, for example, Modeling would be great, texturing and rigging, and to start all together from scratch?  
    • By francoisdiy
      So I wrote a programming language called C-Lesh to program games for my game maker Platformisis. It is a scripting language which tiles into the JavaScript game engine via a memory mapper using memory mapped I/O. Currently, I am porting the language as a standalone interpreter to be able to run on the PC and possibly other devices excluding the phone. The interpreter is being written in C++ so for those of you who are C++ fans you can see the different components implemented. Some background of the language and how to program in C-Lesh can be found here:

      http://www.codeloader.net/readme.html
      As I program this thing I will post code from different components and explain.
  • Advertisement