Author Topic: Picking The Right Language/Game Engine For My Idea  (Read 20547 times)

JDRL

  • Newcomer
  • Posts: 6
  • Karma: +0/-0
    • View Profile
Picking The Right Language/Game Engine For My Idea
« on: April 23, 2013, 12:31:48 PM »
Greetings All!

Quick background: I've dabbled in programming in the past. Little bits of C++ and Java but that was long enough ago not to really count. I want to pick up programming again but this time not for work, but as a hobby. Specifically game development. Right now I'm learning Python with the Invent Your Own Game with python series. It's really fun so far.

My Idea: I have a bunch of super crappy ideas but the one I can't get out of my head right now is a survival roguelike. Something akin to Cataclysm, Rogue Survivor, or even Unreal World. Possibly with more of an emphasis on basebuilding(So really it's like RS but more focus on gathering supplies/survivors and setting up a fort). I can get into more detail if needed but this should be enough background for my question.

My Question: Is Python enough for this? I've seen roguelike tutorials for python but they seem to be just for a simple more traditional roguelike where my idea seems to be heading away from traditional RL and more towards being a blend of a few genres. I'm asking if I'd be better off working in an engine like Game Maker or Unity for example or going with another language such as C Sharp or Java. Although I'm enjoying python right now, I'd rather learn programming with a language that I can at least start working towards this idea with. I think it'd be easier to keep myself motivated.

My main goal right now is just trying to get started on this game, see how much I enjoy it and whether it's something I want to keep pursuing. Then after that I can start learning more languages and becoming a better programmer. I'd hate to spend months learning a language only to start programming my game ideas and realize I don't care much for this.

Any and all input is greatly appreciated. Thanks!

Nymphaea

  • Rogueliker
  • ***
  • Posts: 74
  • Karma: +0/-0
  • Maria Fox
    • View Profile
    • Nymphaea.ca
Re: Picking The Right Language/Game Engine For My Idea
« Reply #1 on: April 23, 2013, 01:10:58 PM »
You can basically do anything with any language, it's all down to preference. Me personally am not a fan of python, so I avoid it :P

For positives and negatives though:
C/C++:
+'s: Flexible, powerful, can be used on anything. Large amount of tutorials/resources available.
-'s: Requires learning of third party libraries, low level coding means more chances for memory problems and strange bugs.

Java:
+'s: Single binary works on multiple platforms, many useful standard libraries. Memory handled for you.
-'s: Platforms may handle small details differently, causing platform specific bugs.

C#:
+'s: Quite popular, good game making libraries (XNA, MonoGame). Can be multiplatform.
-'s: Biggest game library is being abandoned by Microsoft (XNA), Many libraries and functions are Windows only

There's lots more, but there is some I know about, not as good with scripting languages. Gamemaker I hear is good for making games quickly, and comes with it's own language. If you go with C/C++, I suggest the Allegro library, which is multiplatform and has plenty of features. Java has LWJGL, which lets you use opengl and openal in Java.

requerent

  • Rogueliker
  • ***
  • Posts: 355
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #2 on: April 23, 2013, 01:22:11 PM »
Implementations of the Python language have lackluster performance. Some algorithms that take a few seconds in C can take minutes in Python. Python's expressiveness makes it ridiculously easy to whip up applications very quickly, but if you want any polish you'll need to create a C library and call it from python so that your performance sensitive code can run native. Libtcod already has a lot of the C rogue work done http://doryen.eptalys.net/libtcod/ and has Python bindings.


JDRL

  • Newcomer
  • Posts: 6
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #3 on: April 23, 2013, 01:51:18 PM »
You can basically do anything with any language, it's all down to preference. Me personally am not a fan of python, so I avoid it :P

For positives and negatives though:
C/C++:
+'s: Flexible, powerful, can be used on anything. Large amount of tutorials/resources available.
-'s: Requires learning of third party libraries, low level coding means more chances for memory problems and strange bugs.

Java:
+'s: Single binary works on multiple platforms, many useful standard libraries. Memory handled for you.
-'s: Platforms may handle small details differently, causing platform specific bugs.

C#:
+'s: Quite popular, good game making libraries (XNA, MonoGame). Can be multiplatform.
-'s: Biggest game library is being abandoned by Microsoft (XNA), Many libraries and functions are Windows only

There's lots more, but there is some I know about, not as good with scripting languages. Gamemaker I hear is good for making games quickly, and comes with it's own language. If you go with C/C++, I suggest the Allegro library, which is multiplatform and has plenty of features. Java has LWJGL, which lets you use opengl and openal in Java.

Thanks for the breakdown. I only used those as examples by the way, I'm open to learning any language as long as it helps me towards my goal of actually getting my game done. My only issues with learning C++ and Java are that from what I've read(please correct me if I'm wrong), I'd spend a lot of time learning before even beginning to start working towards my game. Maybe I'm just spoiled by Python right now.  And the very first thing you said is the biggest issue for me, since my options are pretty much limitless, it's a bit overwhelming.

Implementations of the Python language have lackluster performance. Some algorithms that take a few seconds in C can take minutes in Python. Python's expressiveness makes it ridiculously easy to whip up applications very quickly, but if you want any polish you'll need to create a C library and call it from python so that your performance sensitive code can run native. Libtcod already has a lot of the C rogue work done http://doryen.eptalys.net/libtcod/ and has Python bindings.

Reading about python's lackluster performance is what made me begin my search for another language to learn. I'd hate to spend all of my free time learning python only to abandon it months later because it's not the most suitable language for the task.

Thanks for the quick replies!

ExtremoPenguin

  • Newcomer
  • Posts: 19
  • Karma: +0/-0
    • View Profile
    • Entropy Interactive
Re: Picking The Right Language/Game Engine For My Idea
« Reply #4 on: April 23, 2013, 01:53:32 PM »
While I am not personally a big fan of Python, it is a perfectly viable language to make a roguelike in. I wouldn't worry about the performance issues to much as there are plenty of ways to work around any problems (there are compilers for python or you could wrap native libraries).

If you want to try out an idea quickly, Python could work for simpler ideas. If your prototype is going to include a lot of graphics though, I would say go for one of the existing engines, as they will save you a lot of time in that regard.

JDRL

  • Newcomer
  • Posts: 6
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #5 on: April 23, 2013, 02:45:06 PM »
While I am not personally a big fan of Python, it is a perfectly viable language to make a roguelike in. I wouldn't worry about the performance issues to much as there are plenty of ways to work around any problems (there are compilers for python or you could wrap native libraries).

If you want to try out an idea quickly, Python could work for simpler ideas. If your prototype is going to include a lot of graphics though, I would say go for one of the existing engines, as they will save you a lot of time in that regard.

That's probably my favorite thing about python right now. You see the results or your efforts so quickly. It's pretty motivating.

By existing engine, you mean like game maker or unity right? As far as graphics go, I'm not gonna make this 3d or anything(I'll leave that for another project! :) ) I'll probably have it in ASCII while working on the initial game mechanics and then implement a simple tile set or something. I'm not too concerned about graphics at this point,  I'm more focused on gameplay right now.

The one thing that worries me, and you said it yourself, is that python works for simple idea. While I'll definitely start my game simple, I want this to be something I keep working on and adding to over time, ala dwarf fortress and unreal world. This is my main concern.
Thanks for your input.

Nymphaea

  • Rogueliker
  • ***
  • Posts: 74
  • Karma: +0/-0
  • Maria Fox
    • View Profile
    • Nymphaea.ca
Re: Picking The Right Language/Game Engine For My Idea
« Reply #6 on: April 23, 2013, 02:56:33 PM »
You could always use Python as a starting point to learn the basics of programming games, and then move on to another language. Once you know how to program, you can generally learn any language pretty quickly. For instance, you could make this first project with python, while at the same time learning C/C++/C#/Java, so that when you want to move onto another project, you will have the background in the language to do so.

A good way of learning a language, by the way, is to make yourself some simple tools. I was in school while learning, so I would program study aids, and little games for distractions. Also setting simple goals to learn new things is good too. Want to learn networking? Make a simple LAN instant messanger, using IP addresses to talk to others. Small projects are usually the best learning tools :P

AgingMinotaur

  • Rogueliker
  • ***
  • Posts: 805
  • Karma: +2/-0
  • Original Discriminating Buffalo Man
    • View Profile
    • Land of Strangers
Re: Picking The Right Language/Game Engine For My Idea
« Reply #7 on: April 23, 2013, 04:51:14 PM »
There's nothing wrong with Python, I would say. After all, some of the most ambitious RLs currently in development use Python with libtcod. (Thinking of Ultima Ratio Regum and Cult, of course). It's true that you may need to optimize stuff like map building and AI for speed. Learn some tricks, like how to avoid for-loops (use map instead) and making sure no references remain to unused instances (leads to memory leaks in a language with garbage collection).

As always,
Minotauros
This matir, as laborintus, Dedalus hous, hath many halkes and hurnes ... wyndynges and wrynkelynges.

JDRL

  • Newcomer
  • Posts: 6
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #8 on: April 23, 2013, 05:12:41 PM »
You could always use Python as a starting point to learn the basics of programming games, and then move on to another language. Once you know how to program, you can generally learn any language pretty quickly. For instance, you could make this first project with python, while at the same time learning C/C++/C#/Java, so that when you want to move onto another project, you will have the background in the language to do so.

A good way of learning a language, by the way, is to make yourself some simple tools. I was in school while learning, so I would program study aids, and little games for distractions. Also setting simple goals to learn new things is good too. Want to learn networking? Make a simple LAN instant messanger, using IP addresses to talk to others. Small projects are usually the best learning tools :P

My initial reason for picking up python was that it came highly recommended as a first language to learn programming in.  It's looking like this is what I'll do.

There's nothing wrong with Python, I would say. After all, some of the most ambitious RLs currently in development use Python with libtcod. (Thinking of Ultima Ratio Regum and Cult, of course). It's true that you may need to optimize stuff like map building and AI for speed. Learn some tricks, like how to avoid for-loops (use map instead) and making sure no references remain to unused instances (leads to memory leaks in a language with garbage collection).

As always,
Minotauros

Oh wow, didn't realize URR was written in python. Cult looks amazing as well. I did some searching and also found another roguelike-like written in Python called 100 Heroes. All of these are way more ambitious than what I'm attempting right now so that's very reassuring. By the way Minotauros, got any good places for tips and tricks for Python(kind of like what you already suggested)? I've got both books from http://inventwithpython.com/ to get me started and I also know about the RL tutorial at the basin.

A BIG THANK YOU to all of the input you guys have provided. I'm feeling much better about my decision in picking up python and I'll definitely be sticking with it. Thank you for putting my doubts to rest.

+1 giant internet hug for you all.

/too much coffee

Krice

  • (Banned)
  • Rogueliker
  • ***
  • Posts: 2316
  • Karma: +0/-2
    • View Profile
    • Email
Re: Picking The Right Language/Game Engine For My Idea
« Reply #9 on: April 23, 2013, 08:55:44 PM »
There is no way to know what is the right language or game engine for you. The learning process to understand programming (outside any language which are just different ways to implement things) can be difficult and long.. or not.

guest509

  • Guest
Re: Picking The Right Language/Game Engine For My Idea
« Reply #10 on: April 23, 2013, 09:37:39 PM »
Python will do. Or any other language you know.

Some people write simple roguelikes to help learn a language. Looks like you have a complex project in mind, so go with what you know.

Codex_SQ

  • Newcomer
  • Posts: 8
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #11 on: April 23, 2013, 11:22:11 PM »
I thought I would drop this here, but Lua and Love2D are good choices to work with as well.

 :)

requerent

  • Rogueliker
  • ***
  • Posts: 355
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #12 on: April 23, 2013, 11:26:12 PM »
I thought I would drop this here, but Lua and Love2D are good choices to work with as well.

 :)

LOL- I was just looking into that-- I really like the look of it. Very smooth, clean, and succinct- with all the power of Lua right there.

Ex

  • IRC Communications Delegate
  • Rogueliker
  • ***
  • Posts: 313
  • Karma: +0/-0
    • View Profile
Re: Picking The Right Language/Game Engine For My Idea
« Reply #13 on: April 24, 2013, 02:12:13 AM »
There is no way to know what is the right language or game engine for you.
I pretty much agree with this. It's really ultimately a matter of personal preference. I've seen good roguelikes in almost every language.

For example, I develop in C++ because I really enjoy programming in C++. I've tried lots of other methods of game development, but it comes down to the fact that I enjoy programming in C++ the most, so that's what I use. I would say develop in whatever you most enjoy developing in. That's what I do.

tuturto

  • Rogueliker
  • ***
  • Posts: 259
  • Karma: +0/-0
    • View Profile
    • pyherc
Re: Picking The Right Language/Game Engine For My Idea
« Reply #14 on: April 24, 2013, 09:53:40 AM »
You can always first write the game with Python and see if the performance is enough. If there are problems with performance, you can see if switching to C/C++ in bottlenecks would help. This way you get to develop with Python which is fast and fun and only worry about C/C++ where it actually matters.
Everyone you will ever meet knows something you don't.
 - Bill Nye