Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


A simple 3D game library compatible with Linux?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
18 replies to this topic

#1 argoneus   Members   -  Reputation: 115

Like
0Likes
Like

Posted 05 July 2012 - 02:52 PM

So far I have my eyes on jMonkeyEngine because it seems both easy and powerful (and works on Lee-Nukes), but, is there anything else? I'm trying to avoid C++ for now as I am a beginner >.>

Also, the game isn't first person, it's more a top-down strategy view only, so if that changes anything..

Edited by argoneus, 05 July 2012 - 02:53 PM.


Sponsor:

#2 Narf the Mouse   Members   -  Reputation: 318

Like
0Likes
Like

Posted 05 July 2012 - 03:01 PM

Being a beginner is no reason to avoid C++. If C++ really grabs you as a language, learn it.

Learn the language you like first, not the one(s) people recommend to you. Once you've learnt one programming language, additional languages are about a month for competence, three for proficiency.

So, just learn the one you like the most first.

#3 argoneus   Members   -  Reputation: 115

Like
0Likes
Like

Posted 05 July 2012 - 03:17 PM

Alright, let me rephrase it.

I don't want to deal with pointers just yet. And even if I did, I still don't know what library to go for.

Edited by argoneus, 05 July 2012 - 03:18 PM.


#4 Fredericvo   Members   -  Reputation: 419

Like
0Likes
Like

Posted 05 July 2012 - 07:11 PM

Alright, let me rephrase it.

I don't want to deal with pointers just yet. And even if I did, I still don't know what library to go for.

What's so hard about pointers? They are just numbers that say where something is in memory.

#5 DevLiquidKnight   Members   -  Reputation: 834

Like
0Likes
Like

Posted 05 July 2012 - 07:20 PM

I'm trying to avoid C++ for now as I am a beginner >.>

I don't want to deal with pointers just yet. And even if I did, I still don't know what library to go for.

Your going to have to deal with pointers in all computer science, they are a very fundamental part of how computers operate. I suggest you get over this fear. If you use C# which would be another good alternative while running mono on Linux your going to have to deal with delegates which is similar to pointers. Most Linux users I know, learn C or C++ though, most even know assembly.

If you like jMonkeyEngine go ahead and use it, you could even try using python with pygames.

Edited by DevLiquidKnight, 05 July 2012 - 07:37 PM.


#6 argoneus   Members   -  Reputation: 115

Like
0Likes
Like

Posted 06 July 2012 - 04:44 AM

I never said I didn't understand how pointers work, but for me it's a hassle that increases the time until I see any progress on my game, so I want something easier but powerful to begin with. If I indeed decided to go with C++, what library should I go for?

#7 6510   Members   -  Reputation: 151

Like
0Likes
Like

Posted 06 July 2012 - 04:51 AM

So far I have my eyes on jMonkeyEngine because it seems both easy and powerful (and works on Lee-Nukes), but, is there anything else?

There is LibGdx for example.

I'm trying to avoid C++ for now as I am a beginner >.>

Good decision.

#8 Karsten_   Members   -  Reputation: 1635

Like
-1Likes
Like

Posted 06 July 2012 - 05:38 AM

For unix there is the open-source Irrlicht 3D engine which provides almost everything required to build a game without requiring developing or finding your own stuff (i.e model libraries).

There are multiple bindings for it if you want to use less common / exotic languages but it obviously works best using C++ (like most games developers should be using regardless of what the Unity / XNA salesmen tell you).

Irrlicht with c++ also doesn't require any memory management because it is all reference counted whereas java for example still requires resource management with things like files and threads etc...

Really.. for linux (and everything else), use C++ or you are going to be shooting yourself in the foot. most distributions dont even provide java in their repos. Just learn C++ and then you will never need to learn any other language.

Edited by Karsten_, 06 July 2012 - 05:41 AM.

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.


#9 Radikalizm   Crossbones+   -  Reputation: 2925

Like
0Likes
Like

Posted 06 July 2012 - 05:52 AM

For unix there is the open-source Irrlicht 3D engine which provides almost everything required to build a game without requiring developing or finding your own stuff (i.e model libraries).

There are multiple bindings for it if you want to use less common / exotic languages but it obviously works best using C++ (like most games developers should be using regardless of what the Unity / XNA salesmen tell you).

Irrlicht with c++ also doesn't require any memory management because it is all reference counted whereas java for example still requires resource management with things like files and threads etc...

Really.. for linux (and everything else), use C++ or you are going to be shooting yourself in the foot. most distributions dont even provide java in their repos. Just learn C++ and then you will never need to learn any other language.


It's true that irrlicht provides a lot of features, but in the end it's only a rendering engine with some very basic collision detection built in. Irrlicht does not provide any general solutions for physics, audio, etc. and it does not support any modern features of current graphics APIs.

This doesn't mean that irrlicht is not a good choice, it definitely is a good choice for those wanting to get into game/graphics development since it pretty much has the simplest API I've ever seen in these kind of libraries, but it does suffer from some bad design decisions IMO (there's a good amount of god-classes to be found in there), and as I said, it's not a complete solution for developing games.

I gets all your texture budgets!


#10 Karsten_   Members   -  Reputation: 1635

Like
0Likes
Like

Posted 06 July 2012 - 06:40 AM

Agreed, (though jmonkey, and libgdx examples above also have the same issue when it comes to complete solutions).

The great thing again about C++ though is it is generally the universally accepted language for libraries so you can pick the best physics engine to add to your game, you can pick the best sound library / api for your game without needing to worry about finding a (usually less supported) binding or writing your own wrapper.
It is less likely that you will find a generic library written in java or C# directly.

So with regards to physics and collision, the Irrlicht tutorials give good examples of using newton and ODE physics in a game.

If you do want much more flexibility (which you may not want as a beginner) then I highly recommend just using raw OpenGL and some seperate libraries.

What I do find a really dumb idea is to use large engines like unreal, source or crytek's offering since not only are these closed-source but there is no way in hell a beginner can keep up with the development of them. Not to mention the massive likelyhood that they wont even exist in the next 5 years. My suggestion is to only use an engine that you know you can personally maintain from the src level and upwards.

Edited by Karsten_, 06 July 2012 - 06:47 AM.

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.


#11 6510   Members   -  Reputation: 151

Like
0Likes
Like

Posted 06 July 2012 - 07:40 AM

Some LibGdx features:
  • sprites
  • particles
  • OpenGL bindings
  • integrated bindings to the C++ physics library Box2D
  • bitmap fonts
  • UI widgets
  • support for tile maps
  • various target platforms like Windows, Linux, OSX, Android and soon iOS
  • audio
  • input
  • Open Source


#12 Karsten_   Members   -  Reputation: 1635

Like
0Likes
Like

Posted 06 July 2012 - 09:01 AM

LibGdx looks good but I would have a slight issue with my game requiring a whole .NET framework to be installed for it to work.
Not saying it is a bad thing and I have seen a couple of the games in the humble indie bundle doing it, but I guess if it can be avoided, I definately would.
Remember Linux doesn't come with as many libraries as Windows by default and it is just such a pain to have to drag so much stuff in just to run a game.

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.


#13 6510   Members   -  Reputation: 151

Like
0Likes
Like

Posted 06 July 2012 - 09:36 AM

It sucks that you are not allowed to strip down the runtime by yourself when you bundle it. At least that will change with project Jigsaw.
On the other hand, big titles take several giga bytes meanwhile, so what are 40MB compressed runtime for an Indie game compared to that ?
About 8 minutes of OGG-compressed music take up about 30MB as well.
That is just the natural evolution.

#14 argoneus   Members   -  Reputation: 115

Like
0Likes
Like

Posted 06 July 2012 - 12:26 PM

LibGDX seems nice. But I still don't know. It runs on .NET but it's Java? What is this sorcery.

#15 armornick   Members   -  Reputation: 108

Like
0Likes
Like

Posted 06 July 2012 - 01:02 PM

libgdx runs on the Java platform and can cross-compile to JavaScript.
Also, you don't actually have to use pointers in C++. Using 'new' to instantiate a class is actively discouraged when you can use stack objects and pass by reference.

#16 boogyman19946   Members   -  Reputation: 1071

Like
0Likes
Like

Posted 06 July 2012 - 03:02 PM

Irrlicht with c++ also doesn't require any memory management because it is all reference counted whereas java for example still requires resource management with things like files and threads etc...


I'm sorry that I'm off topic as far as OP, but I'm not sure if this is quite right. As far as I can see, there is no way to close an actual File object and if I recall correctly, when threads reach the end of their execution, they die and get recycled.
"If highly skilled generalists are rare, though, then highly skilled innovators are priceless." - ApochPiQ

My personal links :)
- Khan Academy - For all your math needs
- Java API Documentation - For all your Java info needs :D
- C++ Standard Library Reference - For some of your C++ needs ^.^

#17 jeph   Members   -  Reputation: 229

Like
0Likes
Like

Posted 07 July 2012 - 07:11 AM

If you are more interested in working on the GAME than learning the language technology,. perhaps try the opensource ZGameEditor. It uses a C like scripting and lets you preview stuff in real-time from within the editor. This speeds up development of the game.
iterationgames.com remember when we used to play ?

#18 6677   Members   -  Reputation: 1058

Like
0Likes
Like

Posted 08 July 2012 - 04:46 PM

LibGDX seems nice. But I still don't know. It runs on .NET but it's Java? What is this sorcery.

IKVM. Java classes loaded into mono or .net. No java runtime required.

It actually only requires java. However iOS doesnt support java which is where IKVM comes in as IKVM will run on iOS and can load the java classes required to use LibGDX on iOS. Theoretically you could choose to use it with IKVM on the other platforms aswell but for mac, windows and linux support you don't need IKVM or .net or mono.

#19 Karsten_   Members   -  Reputation: 1635

Like
0Likes
Like

Posted 09 July 2012 - 06:53 AM

Yes, sorry. My fault for causing this chaos. I meant a Java VM not a .NET VM. :/

That said, it is often even more awkward to get Java installed on a less known version of Linux (or BSD) than it is Mono due to licensing and bootstrapping issues.

As far as I can see, there is no way to close an actual File object and if I recall correctly, when threads reach the end of their execution, they die and get recycled.


In C#, to make sure an open file has been closed, I am quite sure that you need to call Close() on it whereas in C++ (std::iostream), you just let it go out of scope and it will close immediately.

As for threads, it is quite common that they go on forever (such as a polling server) and it is up to the main thread to signal them to close. If some random exception is thrown, so long as the thread is correctly wrapped in C++, it will all clean up perfectly with no extra hassle, however in C#, I have seen some really messy hacks to get round this, usually involving the singleton pattern and a shedload of try catch, finallys.

To bring this slightly back on topic, since the OP did mention JMonkeyEngine he is probably quite interested in using java, in which case I did come across an engine called JCPT (http://www.jpct.net/) which looks extremely easy to use and has good example projects.

Edited by Karsten_, 09 July 2012 - 06:53 AM.

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS