Page 1 of 1
Porting to C++ Request (Please read)
Posted: Thu Feb 18, 2021 8:28 pm
by CMDR_JohnJameson
Hello! I LOVE Elite and Oolite and I am trying to learn C++ and want to make a space game like Oolite!
I am a beginner (and a kid) and know nothing about porting a game or anything.
I would like if someone can make Oolite only in C++ and make a video tutorial explaining EVERYTHING like the code so I can learn how make a space game in C++ myself and change small parts to make it my own special game! (with proper credit to Oolite) I do not plan to do anything with this program but play it on my own computer.
Sorry if I don't make any sense, I am a stup*d kid that knows nothing trying to learn how to code C++ for a good job and to impress my other space game loving friends.
If you have any questions I will try to look when I am not in class.
Re: Porting to C++ Request (Please read)
Posted: Thu Feb 18, 2021 10:20 pm
by tsoj
Porting Objective-C (which is the language Oolite is mainly written in) to C++ is not a trivial task. That starts with the issue that C++ has not 100% the same functionality as Objective-C.
Even if it doesn't seem like at the first glance, Oolite has quite a lot of code. So the C++ porting project would take really long (for a single person at least).
If you want to modify a C++ space game you could take a look at Pioneerspacesim. However, if you're just learning how to code in C++ I would suggest you start by writing your own projects, because understanding the code that other people wrote is arguably the hardest part of mastering a programming language.
If you want to write your own 3D space game it might be easier to use a game engine, so that you don't have to write your own graphics stuff. Because if you start from scratch with writing your own graphics engine in OpenGL or DirectX you only can start programming your actual game in a year. For example, I also once wanted to write my own space game, but I wanted to do everything by myself, including graphics. Well, I didn't get much further than displaying simple 3D objects with simple lightning.
A popular game engine would be Unity for example, or if you want to use an open-source engine, you can take a look at Godot.
If you want to modify Oolite you can create a mod/addon/OXP. This way you can use javascript to change many parts of the game.
Re: Porting to C++ Request (Please read)
Posted: Thu Feb 18, 2021 10:20 pm
by phkb
G'day, CMDR_JohnJameson, and welcome to the boards.
I also grew up wanting to write my own space game, with Elite as the prime source material.
Porting a game to another language is not a trivial task, and writing a space game as your entry point into the world of C++ programming is quite ambitious. I do programming as part of my day job, and I can say, with some experience, that setting yourself such a tall goal to aim for will inevitably end in failure. To learn programming you need a lot of smaller goals, and easier projects.
And as one of the developers on the Oolite team, I can say that our time is pretty limited. A project to rewrite Oolite in C++, coupled with video tutorials of how everything is done, is not something any of us is up for. I, for one, don't know C++ myself (I normally code in C# and JS), so it would be a tough learning curve to start with. Leaving aside the intricacies of the Obj-C code-base, there is the matter of all those OXP's that players would want to include. Rewriting Oolite into any other language (not just C++) would most likely mean many OXP's would not be compatible (most likely because a rewrite would mean using more recent JS engines, which will likely break a lot of OXP JS code).
I don't want to dampen your obvious enthusiasm, or to put you off doing a C++ port. But for the current dev team, this isn't something we'll be able to take on.
Re: Porting to C++ Request (Please read)
Posted: Thu Feb 18, 2021 10:57 pm
by CMDR_JohnJameson
Porting Objective-C (which is the language Oolite is mainly written in) to C++ is not a trivial task. That starts with the issue that C++ has not 100% the same functionality as Objective-C.
Even if it doesn't seem like at the first glance, Oolite has quite a lot of code. So the C++ porting project would take really long (for a single person at least).
Hmmm, I knew it would be hard to 'code for code' translate Obj-C to C++ but I will look at tutorials and try.
I do programming as part of my day job, and I can say, with some experience, that setting yourself such a tall goal to aim for will inevitably end in failure
I should try to set smaller goals as it probably will end in failure.
If you want to modify a C++ space game you could take a look at Pioneerspacesim. However, if you're just learning how to code in C++ I would suggest you start by writing your own projects, because understanding the code that other people wrote is arguably the hardest part of mastering a programming language
I don't want to modify a game (I do like Pioneer Space Sim!) I want to make my own using some of Oolite's code for my friends and I to play.
I have made some small C++ (and C#) console programs and am looking for new things to make, I have used Unity recently and am now looking at Unreal Engine, Unreal uses C++ and has amazing graphics, so I think I will look up some Unreal Engine tutorials and try to make my own Oolite that way.
Also, when I look at the Github nothing makes sense, for example, where is the main .c program? Main as in the file called program.cs that says stuff like
Code: Select all
Console.WriteLine("Hello World!");
Console.Write("How are you?: ");
Answer = Console.ReadLine();
that you compile? (Sorry if I am annoying)
Thank you for responding and really nice to talk to a developer of Oolite! o7! If you know of any tutorials or resources I can use, please let me know!
EDIT: Oops, I mean the .c program, idk why I have C# in my head..
Re: Porting to C++ Request (Please read)
Posted: Fri Feb 19, 2021 2:46 am
by Commander_X
CMDR_JohnJameson wrote: ↑Thu Feb 18, 2021 10:57 pm
[...] Also, when I look at the Github nothing makes sense, for example, where is the main .c program? [...]
I know this, let me: you won't find a "main .c" program, because Objective-C has a "main.m" program
For Oolite you'll find it in src/Core/SDL folder of the source code.
Welcome to the boards!
Re: Porting to C++ Request (Please read)
Posted: Fri Feb 19, 2021 1:39 pm
by CMDR_JohnJameson
Commander_X wrote: ↑Fri Feb 19, 2021 2:46 am
CMDR_JohnJameson wrote: ↑Thu Feb 18, 2021 10:57 pm
[...] Also, when I look at the Github nothing makes sense, for example, where is the main .c program? [...]
I know this, let me: you won't find a "main .c" program, because Objective-C has a "main.m" program
For Oolite you'll find it in src/Core/SDL folder of the source code.
Welcome to the boards!
Ah! Thank you so much!
Re: Porting to C++ Request (Please read)
Posted: Fri Feb 19, 2021 3:48 pm
by another_commander
@CMDR_JohnJameson: If you are interested in the source code's documentation, you can obtain it using the
Doxygen program. It reads through the source and generates a very detailed description for it, including flow diagrams showing how every function and class is related to everything else. The generated documentation weighs around 650 MB and is in HTML format, i.e. viewable using a standard web browser. I have the documentation corresponding to what we had at around 2018 here and can make it available for you (or anyone else who might be interested) to have a look next week if you want.
And a minor correction, the game's entry point main function is in main.m which is in src/SDL (not src/Core/SDL).
Re: Porting to C++ Request (Please read)
Posted: Fri Feb 19, 2021 4:15 pm
by CMDR_JohnJameson
Ah! Thank you! This will really help!
When I went in to the src I saw a Core and SDK and looked in both, found a main.m in the SDK one but still good to know that I am looking in the right one. Thanks everyone!
Re: Porting to C++ Request (Please read)
Posted: Sat Feb 20, 2021 8:29 am
by another_commander
I managed to get me a few moments to set this up, so here is the download link for the Widows port source code documentation:
http://wiki.alioth.net/img_auth.php/8/8 ... Source.oxz
Once you download it, just change the file extension from .oxz to .zip, then unzip the contents in any folder you want. You can launch the documentation by running the file
index.html found inside the html folder.
While I was there, I added this information to the wiki as well (page:
Developing Oolite, Documentation section) for future reference.
Hope this helps.
Re: Porting to C++ Request (Please read)
Posted: Sat Feb 20, 2021 5:28 pm
by CMDR_JohnJameson
Thank you so much!