13 Replies - 1172 Views - Last Post: 19 June 2015 - 06:20 PM Rate Topic: -----

#1 mateo226  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 19-June 15

C++ or Java

Posted 19 June 2015 - 11:01 AM

Hello everyone!
Alright, so I have a question THAT CANNOT BE ANSWERED like, go with Java, or go with C++...
I am interested in game programming. I have been using Java for the past couple of years, and know a decent amount of it.
I've been creating games with Java without using extra libaries, and using them. I am currently learning OPENGL...
So my question is, what is better for me to program games? Preferably 2d games, maybe even some 3d games.
C++ OR Java ?
Once again, I have DECENT Java knowledge, and poorly and C++ knowledge. I once started learning C++ because It seemed like a "dumb" language to me.. I mean... You had to pre initalise a method for C++ to recognize it, but that's not the point.


GAME PROGRAMMING FOR ME: Java / C++
Will your opinion change if I told you I might want to use some libraries like OPENGL, and that I don't want to make anything too complicated in the beginning, but my games get better?


Thank you very much! Any ANSWER is APPRECIATED! Short or long, it's an answer, and that is what I really need, so THANK YOU ALL IN ADVANCE!

Is This A Good Question/Topic? 0
  • +

Replies To: C++ or Java

#2 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 13752
  • View blog
  • Posts: 54,912
  • Joined: 12-June 08

Re: C++ or Java

Posted 19 June 2015 - 11:47 AM

Simple - java is a sandbox and c++ is not.

I am of the opinion you should probably start using a free engine versus building your own with opengl. For me it's about making the actual game and less the engine building. I would like to know the end to end working versus thumping around in the mire and getting no where. I know others enjoy the engine challenge and that's cool.
Was This Post Helpful? 1
  • +
  • -

#3 mateo226  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 19-June 15

Re: C++ or Java

Posted 19 June 2015 - 11:51 AM

Alright! Thanks for your answer! So what do you recommend? c++ or Java? :)
Was This Post Helpful? 0
  • +
  • -

#4 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 13752
  • View blog
  • Posts: 54,912
  • Joined: 12-June 08

Re: C++ or Java

Posted 19 June 2015 - 11:58 AM

Again - java is in a sandbox while c++ is not. Being in a sandbox puts limitations while being out of a sandbox does not have said limitations.
Was This Post Helpful? 1
  • +
  • -

#5 macosxnerd101  Icon User is offline

  • Games, Graphs, and Auctions
  • member icon




Reputation: 12223
  • View blog
  • Posts: 45,299
  • Joined: 27-December 08

Re: C++ or Java

Posted 19 June 2015 - 12:04 PM

If you know Java and aren't comfortable with C++, I'd say stick with Java. Game Programming is hard. Don't learn a language by making a game. Learn the language first, then make the game.

For that reason, if you want to learn C++, start by learning C++ before you get into game programming. If you want to jump right into game programming, pick Java.

Honestly, the "which language" question gets asked so much. The right language for you will depend on some of the points outlined here. You need to be the one to make the decision, not us.
Was This Post Helpful? 1
  • +
  • -

#6 mateo226  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 19-June 15

Re: C++ or Java

Posted 19 June 2015 - 12:18 PM

Thank you modi and macosx for your answers! I have already been doing Java game programming, ACTUALLY I was just playing a game of mine with my sister, that is the reason I didn't answer you two earlier. But anyways... Everyone seems to say: C++ IS SO MUCH better, there is no limitations. ANd I agree on the limitations part, but is it really better? I mean, expending my knowledge isn't a bad thing, even though C++ is ALOT different from Java, so I know alot of people suggest C++, but is it that better?
I have also read somewhere that with Java you pretty much tell the computer: DO THIS, but in C++ you have to do THIS = THAT, now do THAT, if you know what I mean. What I am trying to say, in Java everything KINDA comes of the the box. But let's stick to the question, is C++ really better for games? Because I can customize it more? Apparently games run better with it? That's the stuff I've been reading all over the internet, should I give C++ a go, and if it doesn't work out stick to Java? Let me know what you two think! :)
Was This Post Helpful? 0
  • +
  • -

#7 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 13752
  • View blog
  • Posts: 54,912
  • Joined: 12-June 08

Re: C++ or Java

Posted 19 June 2015 - 12:24 PM

Quote

I mean, expending my knowledge isn't a bad thing, even though C++ is ALOT different from Java, so I know alot of people suggest C++, but is it that better?

In the larger world of professional game design, yes. There are substantially more games developed in c/c++ than java.
Was This Post Helpful? 1
  • +
  • -

#8 mateo226  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 19-June 15

Re: C++ or Java

Posted 19 June 2015 - 12:35 PM

I agree with that, there is ALOT more games made with it, in fact, some popular engines are written in C++. If you were in my position, would you try to learn C++ and give games a go after some time of learning even though it might not work out? Or would you stay safe and stick with Java? I know this isn't really up to you, but I want to know, what someone else would do.
Was This Post Helpful? 0
  • +
  • -

#9 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 13752
  • View blog
  • Posts: 54,912
  • Joined: 12-June 08

Re: C++ or Java

Posted 19 June 2015 - 12:45 PM

Quote

would you try to learn C++ and give games a go after some time of learning even though it might not work out?

Why wouldn't it work out? If I was content dinking around with hobby games then it's your coin flip. I would eventually know both. If I was serious on a career I would make a concerted effort to know what the majority of studios are using.

Quote

Or would you stay safe and stick with Java?

Again - I would use an existing engine and make... a... game. End to end to see the moving parts before trying to make an engine or what not.
Was This Post Helpful? 1
  • +
  • -

#10 mateo226  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 19-June 15

Re: C++ or Java

Posted 19 June 2015 - 12:50 PM

View Postmodi123_1, on 19 June 2015 - 12:45 PM, said:

Quote

would you try to learn C++ and give games a go after some time of learning even though it might not work out?

Why wouldn't it work out? If I was content dinking around with hobby games then it's your coin flip. I would eventually know both. If I was serious on a career I would make a concerted effort to know what the majority of studios are using.

Quote

Or would you stay safe and stick with Java?

Again - I would use an existing engine and make... a... game. End to end to see the moving parts before trying to make an engine or what not.

That helps (not being sarcastic, even though it might sound like it). So if I understood you correctly, you think I should start C++ if I want to, but make C++ games with an existing engine???
Was This Post Helpful? 0
  • +
  • -

#11 modi123_1  Icon User is offline

  • Suitor #2
  • member icon



Reputation: 13752
  • View blog
  • Posts: 54,912
  • Joined: 12-June 08

Re: C++ or Java

Posted 19 June 2015 - 12:57 PM

Look sport, I know you are desperately looking for someone to make the hard choices for you but you better start making some now.

If I were to be pursuing a career in game design I would start learning the language used by the majority.
If I were to be using a language I would typically use the one that provide no sandboxed walls or artificial limitations.
If I were to be just puttering around as a hobby I would evaluate if I care to spend to the time to pickup another language.
If I were to be puttering around with programming for a long term hobby I would take care to ask why I would limit myself to one language.
If I were to be starting out I would work through an end to end game concept to version one product in an existing engine before heading off and thinking I could build an engine myself before I even knew what questions to ask to make a right engine.
Was This Post Helpful? 1
  • +
  • -

#12 mateo226  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 19
  • Joined: 19-June 15

Re: C++ or Java

Posted 19 June 2015 - 01:00 PM

Thank you for your answer, sorry for being annoying :) That's just how I am. But, yes, thanks, this helped me out alot, I think I might start learning C++.
Once again, thank you very much :)
Was This Post Helpful? 0
  • +
  • -

#13 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 792
  • View blog
  • Posts: 1,886
  • Joined: 24-April 12

Re: C++ or Java

Posted 19 June 2015 - 03:30 PM

I like working on the low level stuff and understanding it. So, I'm basically starting from scratch doing the engine stuff in C++/DirectX. I agree that an engine lets you see results significantly faster. The primary reason I can think of that you might want to go the low level route is if you are looking at becoming a professional one day, or like me - that's just simply what you prefer to do.

Unity uses Java script. So that's a consideration.

You really are going to have to dig in, get some experience, and make up your own mind about what you think is best for you. The important thing is to get started in something because that's how you will figure out what is right for you.

One of the primary advantages that I can think of of C++ over Java is that if you are going the low level route everything in the books and whatnot is in C++ or C. I don't know if you can do OpenGL in Java, since I don't do Java, but if you can... why not? If I could do DirectX in C# easily (it can be done but there's not a lot of info on it or a lot of people doing it) I might. On the other hand, if I've chosen the low level route, why compromise that? You can go with Unity or some other engine if you don't want to get into the low level stuff and see stuff on the screen a lot faster. But if you make the decision to go low level, I'm of the opinion that you might as well go all the way which means getting into the OS and the lowest levels with C++.

I'm a big fan of Assembly Language and even learned to do very basic Windows (Win32) apps in Assembler. But C++ is basically the same thing for all practical purposes. I've had people in the know tell me that the VS C++ compiler is so efficient you would be very hard pressed to write more efficient machine code than it can. At best, you might want to optimize a function or two that gets called so many times it would make a difference, but they say even that is exceedingly rare these days. The only reason to study Assembler anymore is pretty much to get a better idea of how C++ works under the hood. C++, for all practical purposes, is the same as Assembler but easier. It just doesn't get any more low level than that and that also has the downside of forcing you to get into very low level things like directly dealing with the operating system (OS). At least with DirectX, there is pointers and memory management all over the place just as par for the course.

If you can get Unity, or some other engine, or some other framework, to do the job, why not use that? On the other hand, I've got a lot of low level game programming books written for DX or OGL (and HLSL or GLSL) that are usually using C++ as the base for that.

But for the most part, using DirectX or OpenGL should be "roughly" the same whether you use Java, C#, or C++ or even VB6. Both are libraries where you call functions (actually DX is a COM object where you call its functions) so that part is pretty much the same regardless of where you call it from. The pieces in between will be the difference.

But if you want to just do game programming, you don't necessarily have to go the low level route. XNA, now MonoGame, with C# is very powerful and gets low level without getting so low level that you have to get into OS and memory issues. I'm not sure what the Java equivalent for that is but it would not surprise me if there is one.

Or you could go even more high level and use an engine like Unity or Unreal SDK or something. Unity is so high level you can't use it with a computer language like a library. But it uses C# or Javascript to allow you to code the game. It's kind of backwards from OGL with C++ where C++ is the outer layer that calls into OGL. Unity is the outer layer that allows you control by running Javascript.

But a lot of the concepts are identical in most environments. A terrain works on the same algorithms no matter the language or framework. Collision also works the same regardless of the language or framework. Then there's a game engine like Unity where the terrain is pretty much handled entirely for you and you just specify some parameters to create the terrain saving massive amounts of time in learning how a terrain works... until the day you decide you need the terrain to work differently or don't understand why it works the way it does. I "think" Unity allows you to code the whole thing from scratch and do it the low level way although I've never got into Unity that deep. But I think very few ever do that and there's not likely a book that shows you how to do that. So, it may turn out the best way to figure out how to do that in Unity is to go learn C++ and OGL or DX.

But I think it mostly depends on what your personal goals are and what you like. There are a lot of different ways to make computer games and at the end of the day, all the players are going to care about is whether it runs without glitches and whether it's fun or not.

And come back with lots of 3D questions. I love answering 3D questions. ;-)
Was This Post Helpful? 0
  • +
  • -

#14 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 792
  • View blog
  • Posts: 1,886
  • Joined: 24-April 12

Re: C++ or Java

Posted 19 June 2015 - 06:20 PM

Ok. I came up with an analogy I like.

Let me start by saying I know very little about 2D. If you want to do 2D, you're probably better off asking someone besides me about it because I don't know that much about it since I almost never do it.

I have however played with 2D a little in Unity, XNA, and DirectX11. So, from that experience I think this analogy still mostly applies even to 2D. Unity gives you a lot of really cool tools for 2D; DX11 requires you to learn 3D so that you can build a 3D quad and use matrices and HLSL just to make your own sprite class to do even the most simple of things in 2D. But I think the end results are more similar between all levels in 2D because it's mostly all about putting sprites on the screen.

So, what I'm really talking about is 3D here. There are 4 levels in my analogy comparing game programming to making a ship go somewhere.

Let me also start by saying there is another option here, which is working with a level editor. The Elder Scrolls, the Sims, Fallout, and many other games have tools to mod the game. Some have very extensive level editors like the Never Winter Nights editor that allows you to basically build your own RPG level for the game to work just about any way you like. There is much to be learned from good level editors about how games are constructed, but this is not really game programming, this is level designing.

Unity is kind of like a level designer on steroids. It is a level designer that is so powerful it earns the title "game engine". It's so powerful that you can design not just one type of game or a level for a type of game, but an entire game of most any type you can imagine. It works basically just like a good level designer, but it has so much capability it can rightly be called an engine instead of a level designer.

Torque3D is also an engine that has a level design element, but with Torque you are expected to pop open the hood and deal with the C++/DirectX source code. In Unity, I don't think you can even look at the source code.

So, the zero level is the game player. In my analogy, this is the person who buys a ticket and gets on the ship and goes wherever it takes him.

The other 4 levels I will represent with Unity, XNA, Torque 3D, and DirectX since those are what I have experience with for 3D game making.

So the first level is Unity which I say has 3 sub levels. The first is buying components to make a game. This is like hiring people to build you a ship and operate it. You have the ability to get more "hands-on" if you like or need to, but you're mostly just directing other people to put the journey together. You hire a captain to hire the crew and tell them what to do. You hire a navigator to figure out how to get from point A to point B. You buy a hull or ship. You buy someone's sails and someone's ropes. You are merely bringing together the work of others. This is the high level experience in Unity. You can buy almost anything in the Unity store from code to just about every art asset and animation. There is almost nothing that can't be bought in the Unity Asset store as long as you don't get very specific about how it works since that's for the most part out of your control.

Pros
This is probably the fastest way to get from point A to point B without just buying a ticket.
This allows you to leverage the hundreds of hours of other peoples' labor to create your game saving you that time.
You can focus on what you want to learn and buy the other pieces until you are ready to learn how they are made.
You can get much better art assets than you are likely ever to be able to create yourself.
It's maybe the easiest way to get into game programming since you can buy anything you are not ready to learn about yet.

Cons
This can get really expensive really fast even if you have a pretty good sized budget.
Single assets can run as high as $100 and you may need hundreds or probably thousands of assets.
If you buy an asset, you probably have not learned anything about how that asset was made or how to program that in a game.
This can become a crutch where you find that you buy everything and learn nothing.
When you buy components like this, they quite often don't play nice together and you need to debug them which you are not going to be able to do if you don't pretty much know how to build these from scratch yourself.
At any layer of Unity it is difficult to learn to be a good programmer. I already knew C# before doing Unity which made it not so difficult, but I think Unity is a terrible place to learn C# and probably encourages bad habits. You really need to learn your scripting language outside of Unity and I'm not sure it really helps you become a better programmer since it's all very Unity specific scripting.

I bought a really great First Person Shooter component from the Unity store. It took a team of 3 people a year to build this thing. I highly recommend it. It's the camera, and guns, and shooting, and inventory, and just almost everything that makes up the core of an FPS. But you have to bring the environment and the stuff to shoot at (bad guys/monsters, etc.). How many hours does that save you as one person from having to write, debug, and optimize that code? And it worked great... except when I brought in another component that it had no way of knowing about. (I believe the other component was either a weather component or more likely a day/night 24 hour sky dome for a sky. It wasn't anything off the wall or unusual.) It would be impossible for it to know how this other component worked and they stepped on one anothers' toes. This is not a deal breaker though. I was able to spend a day or two debugging it until I found the code conflict and rewrote a few lines of code to fix it, problem solved. Which is great... except I was able to do that because I have several years of experience in programming and game programming along with very solid debugging skills from debugging code in several different computer languages over more than a decade. How is some teenager who is just starting to learn to code scripts going to manage to do this? I don't know, but I don't think it's going to go well and that is going to be par for the course when buying components like this.

More often than not, you have to do some serious work yourself to make these components work and make them work together. So, it helps tremendously if you know how to do all this from scratch when trouble shooting the many problems you are likely to encounter along the way.

I'm afraid this may be very discouraging for those new to game programming having the initial elation of how they can do so much with components and then giving up once they realize they don't have the skill to debug the components they spent hundreds of dollars on.

I believe you are far less likely to have this problem in 2D with Unity because you are much less likely to buy as many components for as many things in 2D it seems to me.

Anyway, the second way of this first level which is Unity is to build the components yourself using Unity's built in tools and scripting. This is maybe more akin to ordering specific sails from the sail maker. Hiring an architect to make the ship you design. Hiring the crew yourself instead of hiring a captain to do it for you. Hiring your own navigator and working with him to plot the course. You're doing things much more hands on and this is really the highest level where I think you can honestly call yourself a game programmer. You're starting to make the key decisions even though others are still doing a lot of the work for you.

Really, this in my opinion should be your main goal in Unity if you are serious about it. The more you can learn about building your own stuff the more likely you are to be successful with this long term. And this doesn't have to cost you a penny since Unity itself is free and you are not buying things from the Asset Store. You are now the captain of the ship, calling the shots of how things will be done.

Pros
Probably the best approach for Unity.
You'll learn how to do things.
Faster and more powerful than going to a lower level, although since you are now doing your own art assets, maybe you aren't saving as much time and effort as one might think because that's going to require about the same level of effort until you get to the bottom level. Writing a theme song is just as hard at this level as it is at any other level. 3D modeling doesn't get easier or much harder either.
A lot is done for you like Unity's massively powerful terrain engine, lighting/shadow engine, collision detection system, physics system, etc.

Cons
It takes a lot more work to do stuff yourself than to hire someone to do it for you.
This can be massively overwhelming because we're talking about doing it all here (sound effects, music, 3D modeling, model animation, collision detection, just to name a few of the hundreds of things you'll be becoming an expert in).
You have to have a better understanding of how Unity likes to do things.
A lot is done for you like Unity's massively powerful terrain engine, lighting/shadow engine, collision detection system, physics system, etc. (Which means that you don't learn how any of this stuff actually works and may have difficulty knowing how to best use it, solve problems, or debug/troubleshoot.)

Which brings us to the next part of our first level in Unity which is building things from scratch. I haven't tried this but I've seen some YouTube tutorials on it and have heard Unity is pretty powerful with this. This is like kind of micro-managing your ship. Now you're not only hiring the crew but training them yourself. You're making the decisions on how to design the hull of the ship using the timbers. You're telling the sail makers how to design your custom sails. You're going over every detail of the course with the navigator you hired.

This is getting very close to level 2 which is what XNA does at this point which starts begging the question of why you are not just going to level 2. XNA may be able to handle this level of detail better since that's what it was designed for.

Pros
The greatest level of control in Unity.
Allows you to do things that you would not otherwise be able to do in Unity.
Allows for a deeper understanding of game programming.
If you want to sell assets in the Asset Store, you may be able to build assets that are otherwise unavailable.

Cons
Who does this? I've only seen a few tutorials on specific things that go this low level for Unity. Most everything is geared for not going this low in Unity especially tutorials and books and stuff.
Which means you are going to be somewhat on your own teaching yourself how to do this stuff.
It's a lot more work than going the direction Unity mostly wants you to go in.
You may be reinventing the wheel if Unity already does what you are trying to do or you can cheaply buy it.
This requires a much deeper knowledge of game programming that I'm not sure anyone is going to teach you in Unity. Hopefully, you can find some good tutorials somewhere, but I'm skeptical.

By the time you get to this lowest level of Unity, you kind of need to ask yourself why you are using an engine? The advantage is that you can mix and match with Unity and buy some components, make some components the normal way, and then make some components yourself from scratch the hard way. That's one of the amazingly wonderful and powerful things about Unity. But I'm skeptical that you are going to learn this lowest level of Unity in Unity. I imagine most doing it have previous experience somewhere else.

And really, if you do everything at this lowest level, I think you are better off going to an actual lower level like XNA since building your art assets will be equally difficult in either environment.

Ok. So XNA is level 2 which is maybe just a little lower than the lowest level of Unity. Here again you are micro-managing the ship all the way down to blue-printing your own hull. See the third layer of level 1 for an analogy and then take it a little deeper. You're buying specific timber for the planks of the hull. You're doing in depth training of the crew to tell them exactly how to do things your way. You may even have more control over things than the lowest level of Unity because you are starting to approach level 3 now with some overlap. For example, you tend to get a little deeper into HLSL with XNA than you would with Unity (Unity primarily used Cg instead of HLSL or GLSL last time I looked). Shader programming is definitely delving into that bottom layer of Unity. I think shader programming in XNA goes a little deeper.

XNA also has layers like Unity where game programming can go from a beginner level to an advanced level. But the beginner level tends to start where the advanced level in Unity ended. There's probably quite a bit of overlap with that bottom layer of Unity that people will rarely use in Unity and that is not really the heart of the way Unity is expected to be used. There's also a little overlap with the DirectX level. But I think the layers within XNA tend to flow into one another more smoothly and in some ways from beginner to advanced in XNA it all feels like part of the same thing. You can start out at that lowest level and gradually work your way up to the most advanced levels of XNA pretty smoothly one step at a time. The highest level and lowest level of XNA don't seem that far apart but just seem like adding more and more knowledge. It's a pretty consistent difficulty level in learning it all the way through whereas in Unity the three layers seem very distinct and huge learning curves between them.

The key difference is that you can't easily buy components for XNA. You have to make everything and do everything yourself. You're learning real game programming now and getting much deeper into the subject. There is no "physics engine"; you need to learn real world physics. There is no "collision detection"; you need to learn the vector math of collision detection. There is no "lighting/shadow" engine; there is BasicEffect which will help you get started but to do anything beyond the basics means writing your own shaders in HLSL like the pros. There is no "terrain engine"; if you want a terrain in your game you are going to have to study and code terrain algorithms into your game like the pros. It's similar to that lowest level of Unity except everything must be done at this level with no real options to have someone else do the work for you. And even then you are probably getting much deeper into the subject of game programming. Almost nothing is done for you and you truly have to begin learning the craft of game programming.

Pros
A much deeper understanding of game programming that will take you a long ways no matter what tools you choose to work with in the future.
You are well on your way to level 3 in DX/OGL. You are never in a million years going to be able to go from Unity to OGL/DX without it being almost like just learning OGL/DX in the first place.
You'll learn about 75% of what it takes to make a game in DX/OGL and have a much easier time learning OGL/DX when you do get there.
I think this will make you a better programmer. In XNA you'll get a lot better as a C# programmer.

Cons
This is a lot of work and years and years of learning.
You can start doing some pretty cool stuff if you just learn how to use matrices and XNA's built in model class. But this isn't Unity, if you want to do most of the stuff that Unity makes so easy, you're going to have to learn to do it pretty much from scratch.

In short, this XNA level is a great path to get ready for the next level, but it's a lot more time, work, and effort to do things this way. Plus, you don't have the Asset Store and have to do everything yourself.

One thing I have to say about the Unity Asset Store though is that in my experience, you spend a lot of money and then find out that no amount of money is going to buy half the assets you need to make a 3D game because the assets you want/need are just simply not available in the Unity Asset Store. To make a fully functional and sellable 3D game in Unity, I tend to think you need to hire a team of artists for models, sound, and so forth because someone is going to have to create a lot of custom assets for you. And if you do that, aren't you pretty much defeating a lot of the purpose of Unity?

I mean, if you have a team with artists who can crank out the assets, you can import those into XNA just as easily pretty much and it's not a whole lot more work to bring them into DX. Getting someone to make the art assets is most of the work.

Then there's the "other" second level which is Torque3D. It has some similarities to Unity although it's almost entirely Unity's second layer. There was an asset store, but it was far more limited in what it had especially with scripting and shaders and such. It was mostly just 3D models. One the biggest differences was that it's level editor was a lot less powerful than Unity. And it very much expected you to pop open the hood and get into the C++/DX code which requires an understanding of how to build the code from scratch in the first place. This saves time from coding all this stuff yourself, but you really kind of at least know how to code all this yourself from scratch to get full use out of it and make a game. So, it's a time saver from the 3rd level and has some built in tools and a sparse asset store, but you might want to learn C++ and DX before going this route, which defeats the purpose unless you are a major studio that has people who know how to do this stuff from scratch, but just want to save time and money.

Fallout New Vegas was built on the Havoc engine which I believe is similar. Pro games are usually built on engines like this when they are built using engines although Unity is growing in popularity.

I put it on the same level as XNA because it falls between Unity and DirectX. But it's really a totally different experience than XNA and not at all the same. XNA is much closer to DX and a much better tool for working your way up to DX.

Pros
This is kind of the uber powerful game engine because you have the source code and anything that you don't like about the engine is yours to change at the lowest level. Of course doing this somewhat defeats the purpose of buying an engine.
Art assets/models you can buy. At least there is something of an Asset Store which XNA completely lacks.
An enormous time saver from coding all this yourself with code to handle all the basic stuff like physics, lighting, collisions, etc.

Cons
Pretty much entirely useless unless you could have built this engine yourself anyway.
You need to have pretty much mastered C++ and DirectX before going this route.
I found it to be very poorly documented.

And then level 3 which is DirectX programming with C++. In my analogy, this is raising and harvesting the trees to mill your own timber to make your own planks to build the hull of the ship with. This is raising the cotton, to make your thread so you can weave the canvas, to make your sails with. This is navigating the ship yourself including designing your own navigational instruments; you now are the navigator. This is building robots to crew the ship that do exactly what you tell them to do and nothing more or less. It just doesn't get any more low level than this. It's ridiculously low level. It's painfully low level. But if you want the fastest route from point A to point B, no one is going to have more control over how to get there than at this level. You are also going to know how to do things from scratch to the point where there will never be an environment for game programming you can't handle. You're literally telling the graphics card how it needs to do its job. You would have to start wiring circuit boards to get any lower level. But your level of understanding is going to be as deep as possible.

Pros
No one can deny you are a game programmer or that you know what you are doing.
You really understand how this stuff works even to the point of being able to predict how Unity is doing things in code you've never seen.
Everything is done exactly the way you want it done, because you coded every last piece of it yourself at the lowest level possible. And you can tell people off the top of your head exactly how and why that works because you designed it and built it.
Right now this is probably the only way to get a job in the game programming industry.
You can optimize code to run just a little bit faster than any engine could.
You can take advantage of the latest features of the graphics card and the latest technology.
If the computer and graphics card are capable of doing it, you can do it.
You'll start sounding like John Carmack.

Cons
Do you really need to grow your own cotton, make your own string, and weave your own canvas just to get from point A to point B?
Time. How many lives did you say you had?
Effort. It doesn't get any harder than this and you are going to have to write mountains of code to do what other environments can do with a trivial amount of code.
The level of knowledge here is astounding. And I'm not just talking game programming. You can work up to this in XNA, but when you get here you're going to have to know it.
Not a lot of "beginner" books for this. In fact, pretty much NO beginner books on this.
This is hardcore C++ programming working with the OS, pointers, memory management, multi-threading, and so forth.

I don't want to make learning DX sound impossible. It's doable. I've figured out a lot of it and am willing to share pretty much anything I know freely. It's a lot when you really sit down and thing about it. In fact, I'm inclined to think I should maybe play down the vast amounts of knowledge required so that you don't feel overwhelmed. But, pretty much anyone can learn this stuff if you have the right teachers. If you can learn to speak a language, you're smart enough to do this. It's just a lot of work and you need someone to guide you through or if you're like me and had to do it with few guides for most of the journey it takes forever.

I think understanding things at this lower level may help spark more ideas for more unique games too since you have a better understanding of what's possible.

Now how does Java fit into all this? Well first of all these are just examples. I think there are other engines similar to Unity like maybe Unreal SDK. There's probably something similar to XNA/MonoGame. I believe Havoc is like Torque3D. And of course, OpenGL is basically the same as DirectX as far as I understand.

And all of these are SDK's, engines, or frame works. None of them are computer languages. XNA/MonoGame was really designed for C#.Net but people have done it in VB.Net. You might find something similar for Java or some other computer language. XNA just happens to be what I'm familiar with. DX and OGL are usually done with C++ but there are probably several options for using other languages with them, although I think most everyone choses to do C++ with them.

Anyway, maybe that will give you some understanding of what the difference between an engine like Unity, a framework like XNA, and an SDK like DirectX are.

This post has been edited by BBeck: 19 June 2015 - 06:53 PM

Was This Post Helpful? 0
  • +
  • -

Page 1 of 1