Sign in to follow this  
SchweeMonster

Creating My First Large Scale RPG

Recommended Posts

Hi everyone,

 

I am currently working my way into indie game design.  I've been programming on and off for the last 10 years in a variety of different languages. I am currently working on an RPG that I've been writing for a while now and I'm trying to decide what language the final product will be coded in.

 

I've had plenty of people recommend RPG Maker but this "engine" won't let me customize my game nearly enough.  I've currently been testing my pixel art animations and a few gameplay mechanics via GameMaker but I fear this also won't give me the customization I want

 

Another major concern of mine is when I ultimately release this product and where.  I'm aiming to release this game on a variety of platforms including the Xbox Live Marketplace and Playstation Store so I want this game to be coded using a language/engine that supports these markets.

 

I am considering coding a custom engine using C++ or Java.  I would definitely consider an engine if it fits the above criteria.  So what are your recommendations?

 

 

Edit:  I forgot to mention that the game is 2D which is probably important for choosing the right engine. :D

Edited by SchweeMonster

Share this post


Link to post
Share on other sites

As someone with a similar plan, I haven't really found an engine myself that suits my 2D needs, so I'm personally going to make it from scratch in Java. Besides, I imagine that this allows me a lot more control as well, freedom-wise as well as optmization-wise. Just something really crude to start with, then polish it later when I've found a good build to keep. So I guess that's my reply to you, unless someone could give us both some ideas on what engines to use.

 

All I know is that there's a lot of engines to choose between:

http://en.wikipedia.org/wiki/List_of_game_engines

Edited by Malabyte

Share this post


Link to post
Share on other sites

I don't know a whole lot about RPG maker these days -- I meant to pick it up during the steam sale just to check out the tooling and whatnot, but missed the sale. But, there's a non-trivial number of actual, commercial games (if indie) written in RPG maker, so I'd really investigate whether it can be expanded to meet your needs through scripting or whatever interfaces it provides. That's probably the path of least resistance.

 

Unity is an ever-popular choice of engine these days, but I've heard mixed reviews as to whether its very suitable for 2D games out-of-the-box. Some say its just alright, others say its horrible. There's Unity2D, I think, that would presumably be a whole lot better suited, but it might not have as much tooling around it as Unity proper.

 

I'm really not aware of any other good engines for 2D work, though I'm sure some exist. Depending on how comfortable you are with programming, rolling your own might be reasonable. I'd recommend that you use a simplified graphics library to move fast -- something like SDL 2.0 or SFML -- rather than straight Direct3D or OpenGL. Those things are great to know, but if your ends are to create a game, learning them enough to be effective is a much longer route than something simpler. For scripting, I'd recommend Lua because its popular, well-understood, and Lua-Bind will help you tie it to your engine. Finally, if RPG maker outputs files in formats that are reasonably well-understood, or you can reverse-engineer them, consider leveraging as many of their tools as you can. It will be far quicker to leverage those than to write your own, even if you still have to write some simpler tools to close the gap between what you need and what they offer.

Edited by Ravyne

Share this post


Link to post
Share on other sites

http://stackoverflow.com/questions/17584717/2d-cross-platform-game-development-engines

 

Here's a long list of 2D engines I found. I'm currently using Moai for my 2D project. I am REALLY looking forward to Havok's 2D game dev support however. They released their Havok tool's under the name of Project Anarchy but only for Mobile development. Sometime this month they are supposed to be releasing more information on the Pro license which will allow you to build for consoles and desktop, pretty much everything. This is all 3D though, the GREAT news that I can't wait for is: http://forum.projectanarchy.com/showthread.php?278-2D-game-development-components , they are working on 2D components so you can make 2D games with it, all using Lua which is the easiest language in existence. You can also code the heavy parts of your code in C++, thus making it pretty much the ideal engine if they do the 2D components right, really looking forward to it. However I wouldn't expect it to be out for at least a few months =(

Share this post


Link to post
Share on other sites

@Ravyne Thanks for the info.  I have used Unity a bit but I don't think it's what I'm looking for.  Unity2D may be a different story.  As for RPG Maker, I'll have to see if theres any export features.

 

@fatzilla Sounds great but I'll most likely be coding already before its release.  However, I'll stay tuned.

 

@kburkhart84 I decided that RPGMaker wasn't going to suit my needs as soon as I found out that you must use a 32x32 tile size.  However, I will definitely be using it for a reference when I'm creating my own databases.

 

Like I said, I've been using Gamemaker so far and I really do enjoy it for the most part.  However, I'm having issues with it rendering the graphics when I use a custom view (primarily to zoom in) and I don't see any options so I'm not sure I could do to fix it.  Also, I'm not sure Gamemaker games would be eligable for submission for Xbox Live or other online stores.  Of course I could be completely wrong because I'm still learning and that's why I'm asking here. :D

Share this post


Link to post
Share on other sites

I've tried doing a bit of research on the subject and my thoughts are pretty similar.  Is there a reason you'll be going with Java over C++?  What software do you use for coding and compiling?

 

    Java seems easier to learn (e.g. due to automatic memory mgmt) and I got a better feel for understanding the syntax (which was important when choosing my first language). Additionally, with Java I can make programs that literally run on any machine (as long as Java is installed), instead of having to write for a specific platform. There's also some other good and bad language structure that Java has that you'll just have to read up on here.

 

    There's a big debate about the bytecode and Java Virtual Machine, and how this makes java programs run many times slower than C++. But this is often exaggerated, as Just-In-Time (JIT) compiling prepares the Java program in run-time to run in the machine code of that specific platform. People often don't seem to take JIT into consideration when judging Java's running speed. Someone even claimed Java to be 20-40 times slower, but it's actually just a little less than twice as slow as C++:

 

 "[...] As of December 2012, microbenchmarks show Java 7 is approximately 44% slower than C++"

- Wikipedia.org/wiki/Java_(programming_language)

 

    Besides, a much bigger factor for speed is in problemsolving and algorithmic methodology, and not the lingual one. But ultimately, I just went with Java and now I just need to stick with it until I know it fluidly enough to expand to more languages, perhaps C++ or maybe even something totally different, depending on what becomes more relevant for me at that time.

 

--------------------

 

    Coding Software:

   Eclipse IDE, I'm able to code on one screen and debug the program simultaneously in run-time on another. However, I've read that you can get a C++ plugin for Eclipse, so this might not be a valid argument.

 

    Compiling Softwares:

    Eclipse again (by exporting from .java to ".jar file" for web applets or "runnable .jar file" for ordinary Java files) after having the JDK installed (e.g. Java SE 7), or just the Javac function in the OS command prompt, perhaps combined with Launch4J executable wrapper if I wanna make an .exe file out of it. Haven't tried the latter two yet, though.

 

    Again, note that you don't have to compile your program the traditional way while writing in Eclipse.

Edited by Malabyte

Share this post


Link to post
Share on other sites

@Ravyne Thanks for the info.  I have used Unity a bit but I don't think it's what I'm looking for.  Unity2D may be a different story.  As for RPG Maker, I'll have to see if theres any export features.

 

@fatzilla Sounds great but I'll most likely be coding already before its release.  However, I'll stay tuned.

 

@kburkhart84 I decided that RPGMaker wasn't going to suit my needs as soon as I found out that you must use a 32x32 tile size.  However, I will definitely be using it for a reference when I'm creating my own databases.

 

Like I said, I've been using Gamemaker so far and I really do enjoy it for the most part.  However, I'm having issues with it rendering the graphics when I use a custom view (primarily to zoom in) and I don't see any options so I'm not sure I could do to fix it.  Also, I'm not sure Gamemaker games would be eligable for submission for Xbox Live or other online stores.  Of course I could be completely wrong because I'm still learning and that's why I'm asking here. biggrin.png

 

As far as I know RPGMaker only exports to windows.  And I agree about using Unity for 2d.  It is made for 3d, and it would be great for 2d gameplay in a 3d world, but for "real" 2d graphics I'd say GameMaker is much better.  Also, I understand about not using RPGMaker.  I'm not sure if the tile size is something you can change with Ruby scripts or not, and I'm sure that there are a couple things that you can't change.  GameMaker on the other hand doesn't have this problem, as you can use tiles of any size you choose, and sprites the same.  The only thing with GMStudio is that you can't do any single graphic bigger than the texture page setting, which for PC defaults to 2048x2048, and 1024x1024 for mobile platforms. If you have a graphic bigger than that, it gets scaled down to fit.  A workaround for that if you really need a massive graphic is to cut it up into separate pieces and draw them separately, though don't think you would run into this with an RPG in any case.

 

I'm not sure exactly what problem you are having zooming in the graphics, but if you be more specific maybe I could help, or if you post it on the GMC I'm sure we could help over there.  Also, GMStudio has many exports, but XNA and/or .NET is not one of them, so I don't think it could be sent to the XBOX store.  But any store that takes PC games would be able to accept GM made games, which includes steam as there are several GM made games already on Steam.

Share this post


Link to post
Share on other sites

Java seems easier to learn (e.g. due to automatic memory mgmt)

 

C++ has automatic memory management. Java doesn't, that's why it requires a garbage collector.

 

http://duncan.mac-vicar.com/2012/08/01/c-does-have-automatic-memory-management/

 

 

Either language, C++ or Java should easily be capable of a 2D RPG. Both should work great on desktop computers and Android. However if you want it to run on iOS too, I have yet to find a decent Java solution for iOS, in which case C++ might be the better option.

 

C++/SDL/OpenGL and Java/OpenGL(JOGL) are some examples of the libraries you could use.

Edited by Karsten_

Share this post


Link to post
Share on other sites

Java seems easier to learn (e.g. due to automatic memory mgmt)

 
C++ has automatic memory management. Java doesn't, that's why it requires a garbage collector.
 
http://duncan.mac-vicar.com/2012/08/01/c-does-have-automatic-memory-management/

To be honest I find that article -extremely- contrived. Automatic memory management means just that--automatic, it should happen without your need or concern and garbage collectors do that. You don't have to invoke them and they will run without you ever having to do anything.

If anything smart pointers are just a controlled way of wrapping a pointer so that it destroys itself like something on the stack would, but comparing that to a garbage collector is a bit silly and completely misses the point of what a garbage collector does and why it is useful.

In fact I would say the opposite to your tag line is true. C++ has manual memory management and Java requires a garbage collector because you are not expected to manually allocate and delete objects.

Share this post


Link to post
Share on other sites

 

Java seems easier to learn (e.g. due to automatic memory mgmt)

 

C++ has automatic memory management. Java doesn't, that's why it requires a garbage collector.

 

    Tbh, I have no idea of what you're talking about and I'm not entirely convinced that you do either. Especially when the article you linked clearly states that C++ does not have a garbage collector, as opposed to Java which does. Java doesn't lack an AMM, The garbage collector IS the AMM. You should read up on it ("Java uses an automatic garbage collector to manage memory in the object lifecycle." - wikipedia.org). There's a whole section on "automatic memory management" on the Java wikipedia page.

 

http://javarevisited.blogspot.no/2011/04/garbage-collection-in-java.html

http://en.wikipedia.org/wiki/Java_(programming_language)

Edited by Malabyte

Share this post


Link to post
Share on other sites

Especially when the article you linked clearly states that C++ does not have a garbage collector, as opposed to Java which does.

Yep, which I agree with. C++ does automatic memory management without requiring a garbage collector.
 
You can strap a garbage collector onto C, however I wouldn't say the C programming language has automatic memory management. Yet this is exactly what people seem to do with Java.

Share this post


Link to post
Share on other sites

I worry a little about the ambitions regarding the Xbox Live Marketplace and Playstation Store.

 

Judging from what I have read it is a huge barrier to cross for indie developers. Maybe that has changed, though?

If that really is a must-have requirement you should look into the specifics of publishing for those platforms first ... maybe at Wikipedia ... maybe google it.

Share this post


Link to post
Share on other sites

If you are really looking to plublish on Xbox Live and Playstation Store, you should really look into Monogame in C#. C# is a lot like java, but with some C-like stuff, so kind of a mix of c++ and Java (the two which you seem to be having trouble choosing between). Monogame is an open source variant of the XNA platform which gives you A LOT of customizability, but it further extends it to be supported on pretty much any platform. You can actually code in XNA, and 100% of the code will be transferable to a Monogame project.

 

With the XNA project you can target Xbox/Windows, and then use Monogame to port it over to Linux/Android/IOS/PlaystationStore/Ouya and ore.

Share this post


Link to post
Share on other sites

 

Especially when the article you linked clearly states that C++ does not have a garbage collector, as opposed to Java which does.

Yep, which I agree with. C++ does automatic memory management without requiring a garbage collector.

 

Memory management in C++ may be much improved now, but RAII and C++11's smart pointers are not really automatic. At the very least you have to opt-in, and choosing the wrong smart pointer or creating cyclical references inadvertently can still bite you.

 

I like the design and flexibility inherent in this approach, but its quite different from GC, et all, and I'd not classify it as automatic. Its still easy to screw up, and you're on your own when you do. At least with GC and friends, there's usually some hope of it discovering your mistake and cleaning up after you -- now that's automatic.

Share this post


Link to post
Share on other sites

If you are really looking to plublish on Xbox Live and Playstation Store, you should really look into Monogame in C#. C# is a lot like java, but with some C-like stuff, so kind of a mix of c++ and Java (the two which you seem to be having trouble choosing between). Monogame is an open source variant of the XNA platform which gives you A LOT of customizability, but it further extends it to be supported on pretty much any platform. You can actually code in XNA, and 100% of the code will be transferable to a Monogame project.

 

With the XNA project you can target Xbox/Windows, and then use Monogame to port it over to Linux/Android/IOS/PlaystationStore/Ouya and ore.

 

This sounds like a great option.  I'm going to look into this, probably today.  Thanks!

Share this post


Link to post
Share on other sites

Java means no Xbox Live, no Playstation Store, and IIRC, no iOS either. Porting from PC/Linux/OSX Java VM to Dalvik (Android) is not trivial either.

In any case, I wouldn't try to support that many platforms myself. I'd rather choose a tool I like (I do like Java for example) and try to reap the benefits that go along it (hopefully Linux and Mac support), accepting its shortcomings like the ones I mentioned, and make the most out of it.

 

i usually keep my distance from people/sites that claim that XYZ tool makes multi platform applications "just like that", because multi platform development rarely goes as smooth as you might think.

Share this post


Link to post
Share on other sites

 

 

Especially when the article you linked clearly states that C++ does not have a garbage collector, as opposed to Java which does.

Yep, which I agree with. C++ does automatic memory management without requiring a garbage collector.

 

Memory management in C++ may be much improved now, but RAII and C++11's smart pointers are not really automatic. At the very least you have to opt-in, and choosing the wrong smart pointer or creating cyclical references inadvertently can still bite you.

 

I like the design and flexibility inherent in this approach, but its quite different from GC, et all, and I'd not classify it as automatic. Its still easy to screw up, and you're on your own when you do. At least with GC and friends, there's usually some hope of it discovering your mistake and cleaning up after you -- now that's automatic.

 

 

"Automatic memory management" is one of those things that relies on a very specific definition, and Karsten is technically right.  It's sort of like debating whether Java is pass-by-reference or pass-by-value.  It's one of those arguments where you just roll your eyes and say "whatever", because all parties involved already know the semantics.

 

Anyway, OP:

 

RPG Maker has a ludicrous amount of customization potential -- more than you might think.  The real problem is that you lose most of the benefit in the tool to begin with (like the map editor).  There are also serious performance implications with heavy scripting, or at least there were with earlier versions of RGSS.  I'm going to parrot Ravyne and suggest something like SFML/SDL.  Most heavyweight engines are 3D engines largely because 3D is so much more complicated.  You may have to develop some of your own tooling for 2D stuff (like a map editor), but it's not so bad.

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

Sign in to follow this