Jump to content

  • Log In with Google      Sign In   
  • Create Account

Language Choice


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 trevorchough   Members   -  Reputation: 115

Like
0Likes
Like

Posted 25 May 2014 - 03:46 AM

I'm currently trying to figure out what language I should try to learn in order to start game programming. To be honest, the only game programming experience I have, would be DarkBASIC Pro. I know a lot of people don't even consider that a language, but more or less a framework, used to create simple games or demos. I have web programming skills, such as HTML/CSS, but other than that I'm pretty much starting fresh. Are there any languages you could suggest based on the information I've given? I am a relatively fast learner and difficult tasks do not bother me. Also, I would like to mention, I have fooled around with game engines like Irrlicht, Cube and a few tools like Unity and UDK, but with no real programming knowledge I haven't really gotten very far with any of those. Thanks in advance for any friendly suggestions!



Sponsor:

#2 Karsten_   Members   -  Reputation: 1655

Like
4Likes
Like

Posted 25 May 2014 - 05:12 AM

In the professional world of interactive media and games, C/C++ are the main choice.

However for indie game development, you are very much constrained to what your tool of choice uses. For example with Unity you are going to be looking at .NET languages (C#, UnityScript, Boo). Likewise, the "Indie" version of UDK 3.x would require UnrealScript.

Many of the more open-source engines and tools allow you to use C++ (as well as other languages with bindings) including the very latest UDK 4.x (if you subscribe for source access).

So the question really is. Out of all the engines you have had a play with. Which do you prefer? Then pretty much go with whatever language it best supports.

Edited by Karsten_, 25 May 2014 - 05:13 AM.

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


#3 Kirkkaf13   Members   -  Reputation: 301

Like
6Likes
Like

Posted 25 May 2014 - 05:24 AM

To be honest, the only game programming experience I have, would be DarkBASIC Pro. I know a lot of people don't even consider that a language

 

 

Who ever said this is wrong, DarkBASIC is a dialect of the BASIC programming language but developed for games specifically

 

 

I'm currently trying to figure out what language I should try to learn in order to start game programming.

 

 

Is there any particular reason you would like to move away from DarkBASIC, to "start game programming"? I would of thought this was ideal for the task, unless of course you are looking for something more mainstream or you do not want to be tied down to Windows platform?

 

It does not matter which language you create your games in, it is the concepts and techniques you take away that count.

 

Have you created any games with DarkBASIC? If you don't have any reason to learn a different language then you will be wasting your time.

 

Kirk



#4 trevorchough   Members   -  Reputation: 115

Like
0Likes
Like

Posted 25 May 2014 - 10:04 AM

Kirk,

 

I have created a slew of games in DarkBASIC and I actually enjoy programming in DarkBASIC. The only reason to move away from DB is because of the lack of support for certain file formats and functions. However, after doing some research, it seems there is actually a product developed by The Game Creators (makers of DarkBASIC) called Dark GDK, which allows me to actually use Visual Studio and C++ with DarkBASIC kind of "inside" of it. Simply put, I can still program in DarkBASIC but have the abilities to use C++ programming where/if needed. Now with this, would I be able to implement support for file formats previously unsupported in DarkBASIC? What would the advantages be to have DarkBASIC inside of C++? Also, there is a .NET version of Dark GDK, allowing me to use either C# or Visual BASIC.net, would one of those suite my needs better? Sorry if these questions seem rather unimportant or noobish, but, I have to start somewhere so I might as well ask as many questions as I can now so I don't end up having to ask them later and looking like a fool!



#5 trevorchough   Members   -  Reputation: 115

Like
2Likes
Like

Posted 25 May 2014 - 10:25 AM

I've just discovered some "expansions" for DarkGDK, located here http://www.thegamecreators.com/?m=view_product&id=2128&page=expand, that introduce some desirable features that I no longer have to worry about coding myself. I think I have honestly solved my own question, and found that with previous DarkBASIC Pro experience, Dark GDK might be the next step in my game programming adventures! I'm downloading now and going to give it a try. But I am still open for suggestions and any advice anyone may have!



#6 Kirkkaf13   Members   -  Reputation: 301

Like
2Likes
Like

Posted 26 May 2014 - 12:00 PM

trevorchough,

 

Although I do not know much about DarkGDK, I believe it sounds like a good option for you to learn a new language while still having the methods you are familiar with from creating games in DarkBASIC.

 

I am not sure this will allow you to use different file types, this all depends on how the methods have been designed. VB.NET will be closer to what you are familiar with but if you have a reason to learn a dialect of C I would recommend C#.

 

Good luck with DarkGDK, let us know how you get on.

 

Kirk



#7 trevorchough   Members   -  Reputation: 115

Like
0Likes
Like

Posted 26 May 2014 - 01:04 PM

Well, so far, I am having a couple of problems. I have downloaded Visual Studio Express 2008, the only version that works with DarkGDK, at least from what I've read after various Google searches. My problem is that I don't know how to include the DarkGDK folder, so that when I go to compile, the "include.h" and other files from DarkGDK are detected without manually putting them in the project folder themselves. 

 

My second issue is that, after compiling a simple test program that spins a cube at a very slow rate (I have even tried using the minimum spin rate value), the cube is spinning at the maximum value. Now this can be caused by a few different problems, or so I've read, that can consist of driver problems to DarkBASIC issues with Windows 8.

 

The later issue I will/should be able to resolve on my own, however, I do need help with setting the include/library folders in a Visual Studio project.



#8 Kirkkaf13   Members   -  Reputation: 301

Like
3Likes
Like

Posted 26 May 2014 - 01:45 PM

If you have followed the instructions here http://www.youtube.com/watch?v=6AmJweDUs9c#t=175 you should be able to use the GDK templates within VS.

 

Kirk



#9 trevorchough   Members   -  Reputation: 115

Like
0Likes
Like

Posted 26 May 2014 - 05:29 PM

If you have followed the instructions here http://www.youtube.com/watch?v=6AmJweDUs9c#t=175 you should be able to use the GDK templates within VS.

 

Kirk

 

Thanks, Kirk, I haven't had the time to look for any instructions other than the five minutes I had earlier to tell you the problem and ask for help here on the forums. I appreciate the link, that will save me time, you're a great help!



#10 shinypixel   Members   -  Reputation: 158

Like
0Likes
Like

Posted 27 May 2014 - 07:57 PM

I personally get sick of C++ until it starts working again. Then I love it for a few minutes, then repeat. I think DarkBASIC is a good starting point.



#11 3Ddreamer   Crossbones+   -  Reputation: 3165

Like
4Likes
Like

Posted 27 May 2014 - 09:07 PM

Hi, Trevor

smile.png

 

Some examples of coding languages which are fairly beginner friendly are C#, Python, Ruby, Lua, Java, and high level languages native to game engines (created for a specific game engine). You want to grab a language that is commonly used as a high level language and preferably an auto garbage collection one (meaning automatic memory management).

 

Since you are a raw beginner, stay the [ #*>@%# !!!] away from C++ until you gain at least intermediate level in your first language.  The C++ allows some very bad coding habits from beginners which likely would cause a lot of confusion and frustration later. The C++ is generally tolerant of inferior and inefficient coding.  In the hands of a knowledgeable coder, C++ is very powerful and adaptable. In a beginner's hands it would be like throwing a flight student into a jet fighter on his or her first flights. Do not let anybody convince you otherwise.

 

Choose a game engine which suits your genre of game that you want to make long term. I recommend one with a large online forum community and satellite websites with add-ons and art assets affiliated with it, like Torque3D for instance.  Next, pick either the native language of that game engine or one that is well supported for it (Not C++ !!), such as C# for Unity or Python for Blender Game Engine or Java for jMonkey, etc., as examples.  You should code for about 1-2 years before dipping into low level programming in my humble opinion. 

 

Next use that language that you chose for the game engine that you want and make some non-game applications like "Hello, World!", letter display application, simple indexer, simple sorter, etc., while studying an organized book course or online tutorial for that language. After a couple months, then begin making console application games such as Tic-Tac-Toe, Crossword Puzzle, Word Search, and so forth. Once you have about 8-12 of these applications done, then you are ready for a game engine.

 

With a game engine, the beginner should make 2-3 single person 2D games like a Maze, Space Invaders, Defender, Asteroids, Pac Man, etc.  Next make 2-3 multiplayer 2D games such as Pong, Tank, Orb Eater (for two players), and so forth.  After several of these single person and multiplayer 2D games developed by you in your game engine, then you are ready for single person 3D game development and lastly multiplayer 3D games.

 

Now, if you follow this plan that I outline here, it should take you about 1-3 years, depending on how much time you have available. The benefits are that you will develop good coding habits which will save you thousands of hours of coding compared to the amount of actual project done in coming years. Bad coding habits are the opposite, making you fritter the years with little gain.  Within 1 year you should be programming fundamental class files, jar or dlls, coding interfaces, GUIs, configuration files (.ini or xml or other) and be able to swap executable files with each new iteration of your games. That is about the time that you should have basic version control system which you start to use to manage and document versions of your games. Coding in these modular methods will save you thousands of hours in debugging and allowing you to reuse some coding for future projects or versions of a particular game.

 

So, for now choose a game engine and select a high level language for it, learning in preparation for making games:

 

List of Game Engines

http://en.wikipedia.org/wiki/List_of_game_engines

 

Set reasonable goals and work almost everyday at this.  Above all, make sure to reward yourself with visible progress as you enjoy this.  It is hard work but you can stay motivated by rewarding yourself in reaching nice milestones.

 

Work hard and have fun! biggrin.png


Edited by 3Ddreamer, 27 May 2014 - 09:15 PM.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#12 Saint Retro   Members   -  Reputation: 262

Like
0Likes
Like

Posted 28 May 2014 - 09:28 AM

Great post ^  I'm just getting into encapsulation and inheritance in C# now and although I'm getting to grips quite well with the various keywords, my design and approach to solving a solution is awful.  I'm finding the concepts pretty easy so far to pick up but then I did read a lot about C++ when I was younger and a lot stuck with me.  I find reading source code from others really useful to see how they solve problems and approach design elements.  Once I've finished the book I will try make a few things using WPF forms as I have been throughout (the final chapter builds a space invaders clone) before thinking about moving on to Unity (I can't do the math for 3d) to further my 2D game making skills.

One thing I preferred about C++ over C# is the structure(?) with C++ I wasn't forced to use a class for everything, I didn't have all this auto generated code either.  I was able to have some OOP in there but could also code procedurally is it?  In a way I think that's what I liked about C but then I never made anything complex or big enough to truly appreciate them either way.


Edited by Saint Retro, 28 May 2014 - 09:31 AM.


#13 3Ddreamer   Crossbones+   -  Reputation: 3165

Like
0Likes
Like

Posted 29 May 2014 - 12:52 AM

Yeah, but the problem for beginners is that starting with C++ slips them into spaghetti style coding.  Later they will struggle badly with understanding basic game coding structure which is modularized to help extension, version control, and debugging.

 

Having a good IDE or SDK with excellent code completion is a huge help to the beginner because the software will help teach the programmer.  However when using C++ and code generation, many of the connective relationships are lost because in C++ there is often several ways of achieving similar results.  That's a gigantic source of confusion right there. 

 

On the other hand, C# forces the student to write objectively, so things such as inheritances are clear early in the process.


Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#14 Saint Retro   Members   -  Reputation: 262

Like
0Likes
Like

Posted 29 May 2014 - 02:27 AM

I'm half Italian so I like spaghetti.. Seriously though, I know what you're saying.  I just struggle sometimes to think of something objectively when it isn't.  Like in the betting parlour scenario in my book, I didn't know if PlaceBet() should be part of the person who is betting class or in it's own.  In C++ I would have just written a function.  Maybe I need to read more about OO design, but that's for another topic I think.  Thanks again



#15 3Ddreamer   Crossbones+   -  Reputation: 3165

Like
2Likes
Like

Posted 29 May 2014 - 02:48 AM

The object can be the bet, so you can make an algorithm which the class uses regardless of which gambler is making the bet. This can potentially save many coding lines and spare you the work in each class, even avoiding the task of having to code each gambler to place a bet.  It is possible to make the class inherit the object, in this case PlaceBet(). For C++ that's a function that you prefer, but in C# that might be best as an inheritance. http://www.dotnetperls.com/inheritance

 

This is a good example of how a beginner using a C++ function will slip right into spaghetti coding, whereas using the C# inheritance of the object would allow modularization and also serve to clarify the relationships. The benefit is also fewer lines of coding.


Edited by 3Ddreamer, 29 May 2014 - 02:53 AM.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#16 ngbeslhang   Members   -  Reputation: 170

Like
2Likes
Like

Posted 04 June 2014 - 06:36 AM

Likewise, the "Indie" version of UDK 3.x would require UnrealScript.Many of the more open-source engines and tools allow you to use C++ (as well as other languages with bindings) including the very latest UDK 4.x (if you subscribe for source access).

Well, I should mention that now both Unreal Engine 4 and CryENGINE are cheaper than most commercial game engines (Better than Unity Pro's 30,000 dollars), which are 19$ and 9.90$ per month each. (CryENGINE was available on Steam last month, but according to the Steam reviews and CryDev, most people suscribed to the service were dissapointed to such things due to it's just a free SDK with an added feature)

EDIT: So after checking the official site, there were two kind of licenses available to the CryENGINE. The one which is on Steam was just a suscription. The other one was a full license, which you need to contact CryTek for it.
A C++ programming beginner from Malaysia.

#17 Karsten_   Members   -  Reputation: 1655

Like
1Likes
Like

Posted 04 June 2014 - 07:14 AM

Well, I should mention that now both Unreal Engine 4 and CryENGINE are cheaper than most commercial game engines (Better than Unity Pro's 30,000 dollars)

 

Agreed. Epic Games in particular has done a very impressive thing by opening up their Unreal engine to the masses. Frankly I am very happy to pay their subscription costs more as a donation and pledge of support even if I am not currently using their engine for a recent project.

 

Last time I looked at CryENGINE however, it required me to log onto their servers in order to use the main tool. This is called DRM and for this reason, it should not get our support. Similar to why Unity should not get our support.

 

I really am hoping that Epic Games benefits from their decision. They really deserve it. I am also noticing a massive improvement in portability to platforms like Emscripten, Linux and even BSD because of this so again, great job!


Edited by Karsten_, 04 June 2014 - 07:16 AM.

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


#18 ngbeslhang   Members   -  Reputation: 170

Like
0Likes
Like

Posted 04 June 2014 - 02:04 PM

1. Agreed. Epic Games in particular has done a very impressive thing by opening up their Unreal engine to the masses. Frankly I am very happy to pay their subscription costs more as a donation and pledge of support even if I am not currently using their engine for a recent project.

2. Last time I looked at CryENGINE however, it required me to log onto their servers in order to use the main tool. This is called DRM and for this reason, it should not get our support. Similar to why Unity should not get our support.

3. I really am hoping that Epic Games benefits from their decision. They really deserve it. I am also noticing a massive improvement in portability to platforms like Emscripten, Linux and even BSD because of this so again, great job!

1. Especially the price gives you a full license, including have the access to the engine's full source code. Also I forgot to mention that if your games were using the engine you'll need to give them 5% of your royalities, which is quite good.

2. I guess it has been a few years ago?

3. Agreed.

Sorry for the late reply, of course you know we were from different timezones. (My signature says all)

EDIT FOR THE OP: Well, I also forgot to tell you that UE4 (if you don't know what's this means, it's Unreal Engine 4) have a new feature called Blueprint, which is a visual scripting system. Which means you can create the entire game without even needing to know how to code AT ALL!

Tappy Chicken (of course it's based on Flappy Bird), which is available on iOS, Android and HTML for free, was an example created with UE4 by one of Epic Games' artists (one person) who did not even have experience on programming with Blueprint in a weekend (one day?).

I should mention that I did not own an UE4 license at all. I tried the example and it's not quite bad.
A C++ programming beginner from Malaysia.

#19 Karsten_   Members   -  Reputation: 1655

Like
0Likes
Like

Posted 05 June 2014 - 05:20 AM

2. I guess it has been a few years ago?

 

Yes, It was but looking now, they have simply moved over from their own DRM to the DRM provided by Steam. Either way, I personally would still not be using it as a development tool for this reason ;)


Edited by Karsten_, 05 June 2014 - 05:20 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