Hypothetical Question about Gaming Programming Languages

Anthropoid

Solid State Member
Messages
11
Location
Atlanta
I have a question that I hope some here will have sufficiently deep understanding of programming languages inside game engines to answer:

1. Could a game like Skyrim (meaning one with such exceptionally naturalistic 3d graphics and sophisticated physics) be coded in Java, instead of (as I understand it) in the C++ based engine in which it is coded.

The reverse question I think I already know the answer to, but I suppose it is worth asking too:

2. Could a game like Minecraft (meaning one with relative coarse and abstracted, 'fake' 3d graphics and more rudimentary physics, BUT with truly enormous gameworlds including seemingly infinite capacity for user 'building' changes to the game world) be coded in C++

If I go by the prevailing rhetoric I encounter when I ask about Java for game programming, I'd guess the answer to #1 would be: No, not without severe increases in hardware demands, whereas the answer to #2 I would guess is: Yes, but with much more work to be done from inter-platform configuring and bug fixing.

I'm asking because I'm trying to decide which language to focus on in an upcoming certificate course I will be taking. So far I've leaned toward Java. The games I want to make, I have no desire to have the sort of sophisticated graphics or first-person physics depiction. A fake 3d, adjustable Isometric perspective with fairly simple models for people, plants, and other moving objects (think 'not quite as sophisticated as Civ 5, but with both a tactical level battles map along the lines of Jagged Alliance or Baldur's Gate) is plenty for my purposes (my vision is to make a historical rpg strategy game that is based in real anthropological science, sort of like "Civ but much bigger planets, much more realistic flora and fauna, and more focus on individuals"). I would think Java would be fine for that purpose but I have yet to hear enough advice and feedback that I'm really convinced. Nearly everyone I ask, including game developers who make games not dissimilar to the one I envision suggests either C++ or C#.
 
I have a question that I hope some here will have sufficiently deep understanding of programming languages inside game engines to answer:

1. Could a game like Skyrim (meaning one with such exceptionally naturalistic 3d graphics and sophisticated physics) be coded in Java, instead of (as I understand it) in the C++ based engine in which it is coded.
Yes but you're building on top of an engine...so you'd have to change the engine or change how it works. Generally Java isn't very optimized though and could be quite slow or increase requirements.

The reverse question I think I already know the answer to, but I suppose it is worth asking too:

2. Could a game like Minecraft (meaning one with relative coarse and abstracted, 'fake' 3d graphics and more rudimentary physics, BUT with truly enormous gameworlds including seemingly infinite capacity for user 'building' changes to the game world) be coded in C++
Yes, but would require a different approach - the reason MineCraft is done in Java is because it's widely cross-platform - there's no specific Windows vs Unix libraries to use really, like C++. Java runs in a Java Virtual Machine on the system.

I'm asking because I'm trying to decide which language to focus on in an upcoming certificate course I will be taking. So far I've leaned toward Java. The games I want to make, I have no desire to have the sort of sophisticated graphics or first-person physics depiction. A fake 3d, adjustable Isometric perspective with fairly simple models for people, plants, and other moving objects (think 'not quite as sophisticated as Civ 5, but with both a tactical level battles map along the lines of Jagged Alliance or Baldur's Gate) is plenty for my purposes (my vision is to make a historical rpg strategy game that is based in real anthropological science, sort of like "Civ but much bigger planets, much more realistic flora and fauna, and more focus on individuals"). I would think Java would be fine for that purpose but I have yet to hear enough advice and feedback that I'm really convinced. Nearly everyone I ask, including game developers who make games not dissimilar to the one I envision suggests either C++ or C#.
If you're wanting to go into Game Development... learn C++. Pick and engine (or several engines) and become fluent in it/them (such as Unity, Unreal, Source, CryEngine, etc.). C# isn't really geared towards games as much (besides the XNA game library). It's more of an application language for desktops and such. Though you could program a game in C# theoretically...you'd have to use the proper framework, and with a lack of .NET libraries (besides the Mono framework) on platforms such as Linux, you'd be restricted to Windows for the most part.

Look into what the different game engines use and pick based on popularity for that. When in college, one of my professors that taught a basic Game Programming course had told us based on his research and polling of various game development companies, they preferred people with a background in C++ (presumably because that was the language they used to develop their games in).

i think C++ is old language and for future and make high quality games you must do it C#

Sorry...but 100% wrong. C++ is old, yes...but it's WIDELY used today still (and still updated to this day). What do you think the OS you're using right now is based on? C and C++. C/C++ allow you to get closer to the hardware than C# does since C# is based on .NET Framework. As I said above, game companies still widely use C++, and it's still updated.

That being said, I'm a C# developer...but I work on desktop/web applications rather than game development.
 
Last edited:
Thanks much CarnageX! :D Pretty much everything you've said confirms what I've already heard from at least a half-dozen other online forum respondents.

I think I will be doing my certificate program in C++ and perhaps doing some Java to the extent that I can fit both into my brain at this early stage in my programming career.
 
IMO it's a good idea to start with lower-level languages anyway. That way you get an actual understanding of how things work in higher level languages.

In my college courses, we started with C++. We weren't allowed to use any libraries other than the standard library/iostream/file stream libraries really. Everything else we had to make ourselves (such as Linked Lists, Binary Trees, stacks, queues, etc.). Really taught us how these data structures worked and how to use them/make them perform decently.

Now I'm pretty much soley a C# developer, which is a much higher-level and pure OOPL, but I still understand the underlying objects/structures.

After you get good with C++ and understand it, move over to Java or C# (depending on what you're doing, of course) if you want to do something else.
 
The idea of getting down as close to the brains of zeros and ones as possible is appealing I have to admit :)

I'm coming from a 20 year career in academia (professor of anthropology) which was brought to a premature end by various forces about which I had mixed feelings. Mainly my wife's career, the shortage of positions in academia and a desire to pick where we live instead of living where my job opportunities dictated.

We've been home for nearly a year now and it has taken me some time to decide what I want to do. Wife is a digital marketing person, and most of her consultants are Java junkies. That predisposed me to do a course in HTML5 and CSS last fall. I finished it and it was interesting. It convinced me that I can do this stuff, programming, but I don't want to design web-pages. I want to make computers do amazing things, tell amazing stories and beguile users with syndromes such as the dreaded "one more turn syndrome" = games.

I'm looking forward to it :)
 
The idea of getting down as close to the brains of zeros and ones as possible is appealing I have to admit :)
You won't be getting quite that fair down, unless you dig down into Assembly or hardware-descript languages for programming FPGA's :p.

I'm coming from a 20 year career in academia (professor of anthropology) which was brought to a premature end by various forces about which I had mixed feelings. Mainly my wife's career, the shortage of positions in academia and a desire to pick where we live instead of living where my job opportunities dictated.

We've been home for nearly a year now and it has taken me some time to decide what I want to do. Wife is a digital marketing person, and most of her consultants are Java junkies. That predisposed me to do a course in HTML5 and CSS last fall. I finished it and it was interesting. It convinced me that I can do this stuff, programming, but I don't want to design web-pages. I want to make computers do amazing things, tell amazing stories and beguile users with syndromes such as the dreaded "one more turn syndrome" = games.

I'm looking forward to it :)

Good luck on your future endeavors as a programmer! It's fairly easy, honestly. As long as you're able to think logically to solve problems/situations you'll be good. The hard parts are learning the syntax of the language, as well as learning how to design/structure code easily so that you can maintain it properly in the future.
 
Yep, having done one certificate course in HTML5 and CSS, I can see that the big word is: "Syntax," and the secondary word is "Vocabulary." Related 'skills' or abilities seem to be: Concentration, attention to detail, calm-resilience in the face of problems and methodical problem-solving. I'm trained as a natural scientist and have quite a bit of background in statistical analysis, so while it is all very novel, much of the general skills are familiar and it is refreshing to apply them in new ways.

The other thing that I've found encouraging is my limited experiences in game modding. I did a little mod for Crusader Kings II. I was dissatisifed that, playing as France in the ~1440 start, it was seemingly impossible to "win" the Hundred Years War without invading the British Isles! In order to "fix" this, I think I added about 10 lines of code (to represent the battles that the French had won during the preceding 10 years and thus up the French starting victory points in the ongoing war) and changed about two variables by one digit each so as to set two provinces (Normandy and Caux I believe) to be French "owned" but English "occupied" (meaning that the French could get them back without having a political claim on them but simply by kicking the English out.

Totally changed the game. The balance and general flow of gameplay was overall the same, but it made it possible to win Hundred Years War as French without having to engage in anything ahistorical (such as invading the British isles).

Hard to say why the devs coded the game in the way they did. Maybe just oversight; none of their testers played as French at the early game start or didn't know enough about the resolution of the Hundred Years war to know that the requirements for French to win were out of whack. Or maybe they did it on purpose cause they know that most of their customers are Anglophone if not Anglophile and they wanted to cater to that by making it fairly easy for a player to achieve early game dominance of Western Europe playing as England?

It is not like I got acolades for the mod or anything. As far as I know, it has hardly been downloaded by anyone. But I'm confident it does what it is supposed to do, and if someone else who wants to play French and have a more historical early game finds the vanilla setup unsatisfactory I suspect it will help them out.

I like that, knowing that a little piece of "my work" as inconsequential as it is, is sitting out there in the cloud waiting to be used and appreciated by other users. It is also satisfying to know that, I achieved it in a way that was just about as simple as possible. None of the changes I made are likely to imbalance the game or introduce bugs or problems. It was just about as simple of changes as I could make and achieve the desired outcome. It took me a couple weeks of dialogue with folks on the Paradox forums about the best way to achieve this, and I had to study how that game works a good bit (at a fairly high and rudimentary level) to be able to do it. But I did it.

So I think I have a general sense for how this programming stuff works. You've got be methodical: decide what your goal is, define that goal as precisely as possible, but also recognize that constraints might not allow that goal exactly and be ready and willing to shift your goal slightly (e.g., I originally wanted to implement a much more complex system, but realized it would be much more prone to break and might not even work as desired). Then analyze the structure(s) in which the problem occurs, decide what forces are leading to the problem, change them!

I like that. It is kind of like the full cycle of scientific inquiry and discovery in a can, but without all the political and social nonsense of grant seeking, publishing, peer-reviewing, colleague-ego stroking, politics, etc.
 
Last edited:
I'd say you hit the required skills right on the head.

That's pretty cool that you were able to make a simple mod that changed the way you wanted the game to be.

I did something similar with Skyrim a year or so ago. You have the ability to be a Werewolf or a Master Vampire in the game, but not both. And if you cure yourself of Lycanthropy, turn back into a werewolf, and then cure yourself again, you can't become a werewolf again (because the werewolves are a special 'guild' that you are indicted into). But you can become a Master Vampire as many times as you want. While both are cool in their own ways, I wanted a way to become both, and without any of the negatives (i.e. can't be out in sunlight if you're a Master Vampire).

So I decided to make a mod that allowed me to be both without any of the negative affects. Spent about a week trying to get it right, talking with other people on a Skyrim modding forum, trying to get the script working correctly. Ended up getting it working how I wanted it after some tweaking and issues due to timing of animations and the order events were firing.
 
Back
Top Bottom