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.


Help me change my life and career.


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
31 replies to this topic

#1 The Croaker   Members   -  Reputation: 134

Like
2Likes
Like

Posted 03 July 2012 - 05:56 AM

Hello guys!

In the last two and a half years and specially this last semester I have come to the realization that I hate my life. I'm studying something I don't like and working in a field I don't care about.

This past month I decided to react. I'm you average gamer/geek guy. Always been found of technology and well, I work in the finances department of a car factory and I'm recognised more by my tech skills than my accounting/administrative skills, so that's got to be an indicative.

I'm going to graduate in economics this year and I'm considering applying for a computer science or engineering course next year.

You are probably wondering why I'm writing this here. Here is the deal, me and a friend decided to start developing a game. We are focusing on learning java and doing an android/iOS app. I decide to do this because since I don't know anything (except the thins I've learned by curiosity) I think the experience is going to be good to start learning and picking up some experience.

The thing is, as I said, I don't know anything practical about this stuff. I downloaded the JDK and eclipse, then I downloaded the android SDK. My plan was to learn trough the internet (videos, ebooks, forums).

Just want to know what you guys think about this. Is java a good introductory language? Should I learn it in a more formal way? Should I just go for the C++? Should I focus on a platform different from android/iOS? Should I travel to the Himalayas and become a monk?

I know there are a lot of FAQs about this and a lot a people have made the same questions, but I want a more personal opinion from you guys. And, if possible, some links or information you guys thinks might me useful for me.

Any reply is appreciated. Posted Image

Thanks!

Sponsor:

#2 Zoomulator   Members   -  Reputation: 273

Like
1Likes
Like

Posted 03 July 2012 - 06:37 AM

Java has a huge standard library.. I mean, it's humongous! If you're the kind of guy who thinks 'more is better', then go for java. Personally, I hate the language. It's pure mess in so many ways, and oracle is just in it for the money. I really don't know why anyone wants to willingly use java.

So, enough about that.. C++ is my forté and while it has its own set of issues, I think it's a great language. It's low level while still being manageable and it's extremely versatile. This comes at the price of being fairly complex, but the features are well thought through (in most cases anyway) and it doesn't jump on what ever is all the rage at the moment. If you learn it now you should find out what's special about the latest specification, C++11. It introduces smart pointers in the standard, and many other things which makes a world of difference to manage your objects.

C++11 isn't fully supported by any compilers yet though. It's simply too soon since its release. But a good few things are already implemented in pretty much every compiler, which includes: smart pointers, the auto keyword, lambdas.. which I find the most useful anyway.. you won't need the rest for a year or so while learning the language anyway.

I started with python actually, but I was so put off by its performance. A year programming python and I moved on to C++. The problem with going from a managed language to C++ is to learn the differences about object lifetimes. Python, java and C# runs garbage collection, which sucks a lot of performance at unspecific times. C++ has scope lifetimes. When an object reaches the end of a scope, it destructs. Simple as that really. You exactly control the lifetime of your objects this way. Old C++ had some issues with this, but the new smart pointers makes it so easy even a beginner will be unlikely to have much problems with it (exceptions to this rule may apply).

I've been programming for some.. 5 years I think, in a semi-serious way. I've had a few jobs and some education along side it, but I've learned the trade solely via the internet. So it's quite achievable to learn to program with just the net as a tutor. You'll probably find out more up-to-date knowledge by actively reading on the net (and books!) than going to any school. Collage/uni has a great merit value though, and for someone who's never programmed it may be fitting. I'll be trying to get a computer science degree, starting this fall. It's mostly a way for me to get some income (living in Sweden, I get paid to educate myself), and to get a job after if I don't manage to pull off releasing a successful game before I'm done!

But hear this: Don't expect to make a game in a year from now if you're just starting out. You'll be able to make something very simple and maybe only a proof of concept demo.

Learning a language is merely a fraction of what it takes to build a game. You need to be a good code designer, and learning how to be that takes years. You got to get accustomed to different development tools to be effective, such as version controls, your IDE and debugger, documentation generators, repository sites. Not to mention getting to know the libraries you'll use for your games for the graphics, sound and even logic and system structures.

It's daunting! It's difficult and plain frustrating.

Is it worth it? Hell yes

Edited by Zoomulator, 03 July 2012 - 06:44 AM.


#3 kcrik   Members   -  Reputation: 127

Like
1Likes
Like

Posted 03 July 2012 - 07:36 AM

Well,

Zoomulator, we can see by what you're saying that you REALLY need to go to proper programming jobs, and really need a degree in computer science too.

First of all, Java is a great language to start with, for learning programming. You don't have to worry about the memory, so it lets you learn the OOP, Design Patterns, and the logic of programming easily. You don't see why any body would learn that, well it's because you don't have any solid knowledge about its uses....Java is used in many websites, big companies that have databases, etc...because you got the magic J2EE that lets you do all of that easily. How do you think the big supermarket manages their resources, etc...They have software using J2EE and Database.

Second, Python is a good language, and it seems obvious you don't have any clue how to use it. Python is great for pre-processing datas in games (and probably more in general). Python is also incorporated in Blender, and lets you write your own script to export datas from Blender...which can be quite usefull for games development.
You can combine Python and C# when writing such tools.

C# is used a lot for writing Tools, such as Level Editor, Sprite Editor, because it incorporates Windows Main Forms, and it's really easy to learn and use. I know really good and experienced programmers who use C# for their tools, Python as the scripting language of their C++ game.

C++ is the main language for games, although android uses java, and the mobile games were developed in java using the J2ME template a few years back.

When Zoomulator puts Python, Java and C# in the same bag, it just shows he doesn't know the difference in terms of how/when to use those languages. I bet he would put Lua in the same bag.

Python/Lua are scripting language, you can make games with them, it's true, but it's not designed for that. And FYI Zoomulator, Sony uses Lua (yeah a scripting language with a shit Garbage Collector, My God), for programming gameplay state in one of their last game...so you see The croaker, even such a language is used by a big games company.

I have worked for 4 games companies in 4 years, first one was making Java games on mobile...they were Konami, the 3 other ones were using Lua and C++. the last one was using C# for Tools, and Python for pre-processing datas.

So Yeah, the thing is it all depends on what you want to do. I recommand reading books, etc...and create programme on your own to learn. If you want to do C++, it's a big step, but You need to really download games example, etc...study the code to see how they do it.

#4 L. Spiro   Crossbones+   -  Reputation: 13953

Like
6Likes
Like

Posted 03 July 2012 - 07:38 AM

Your post focuses on Java with other languages just being some kind of alternative learning experience, but you claim to want to make a game on both Android and iOS.

So I am a little confused. If you focus on just Java, what do you plan to use on iOS? iOS is 99% C++, 1% Objective-C++, and 0% Java.
If you are planning to learn a language based on what works with both Android and iOS, then C++ is basically the only answer.


And if so, then I have to question your sanity if you want to make games for Android.
Google dislikes people who develop for Android, and provides them with terrible tools for programming. All people I have known who have worked on Android NDK have gone mad except one, and that is just because he is a “special” person who likes debugging with sprintf() and #if 0 instead of using breakpoints and watchpoints.

It really isn’t a joke. One of my coworkers confessed yesterday that since he got tasked with Android programming it is the first time in 5 or 6 years at this company that he has considered quitting. The other one literally has some kind of addiction to debugging, and so he is happy with Android programming.
Because that is basically all you are doing when working with the NDK. Pure raw unabridged debugging, and nothing else. Not moving forward, just debugging.


And in the end, the Android market just makes it a waste of your time.
They have only 20% of the share and you have to code tons of special cases for all kinds of devices with different capabilities, as apposed to iOS in which there are basically only 3 classes of devices (none of which require any special coding to handle), 3 total resolutions to handle, etc. So not only are you reaching the larger share, you are also saving yourself from a large pain in the ass, multiplied by a larger pain in the ass.


So your choices are to code in Java and drop any notion of iOS, code in Objective-C and drop any notion of Android, or code in C++ in order to keep both on the table.
Since the obvious choice is C++, you then have to decide between the pain of supporting both Android and iOS, or the easy feeling of just supporting iOS.

Ultimately the choice is fairly clear, and you can save yourself hundreds of dollars by not having to buy a wide variety of Android devices too!


L. Spiro

Edited by L. Spiro, 03 July 2012 - 07:40 AM.

It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#5 kcrik   Members   -  Reputation: 127

Like
0Likes
Like

Posted 03 July 2012 - 07:52 AM

Just want to know what you guys think about this. Is java a good introductory language? Should I learn it in a more formal way? Should I just go for the C++? Should I focus on a platform different from android/iOS? Should I travel to the Himalayas and become a monk?


Java is a good introductory language. If you learn java, move on C# afterwards, cause it's used with Xna, and you can release game on the Xbox Live using that. The thing with C++ is that companies like to know you understand pointers, references, and some basic libraries used in common C++ development. But you should probably develop a PC game in Java using a 2d engine, and know what are the mechanics of Game Development, and Design Patterns.

More over, if you want to develop a game for Android and IOS, use Unity, you can develop in it using C# or Javascript.

You should Focus on PC, cause first you can develop in most of the languages on PC :P, you can use XNA and Unity as well. Developing for Android/IOS is usefull for knowing how to optimize your code, because the devices have limited memories and generally capacities. Most of the time, companies want you to have knowledge of such platforms for optimisation reasons and the fact that as I said, you will be aware of the devices limitations, unlike on a PC :-)

#6 Zoomulator   Members   -  Reputation: 273

Like
0Likes
Like

Posted 03 July 2012 - 08:01 AM

kcrik,
of course each language has its use and I merely stated what I didn't like about it. I didn't say they're all awful for every purpose and that you should never use them. I'm not such a C++ bigot that I can't see that.

Scripting is great for productivity. Most games doesn't need blazing performance for their logic or general structure, and puts most of its effort into the graphics engine. Those engines are low level and handles those things where the scripting doesn't have to.

Tools and pre-processing data is part of a production tool chain, which is naturally part of making a game, but my post was about the core language making the heavy lifting. I didn't crack down on scripting languages, so ease down.

Yes, java is used largely in server applications, search engines and management software, and it is mainly the standard there. It doesn't mean people using it actually enjoys working with it, even though it gives reasonable production value. As for learning via Java, I have no say other than that I found learning C++ and it's "memory management" less difficult than it's made out to be. How ever, learning java is a top down approach to learning how to program. It shields a programmer much like you said, from more low level operations. There's a lot to unlearn when going to lower level languages after and I think it's more benefiting to go bottom up. Just my opinion.

My post was about my experiences, which was what the OP asked for. Make an objective case instead next time.

#7 wicked357   Members   -  Reputation: 1174

Like
1Likes
Like

Posted 03 July 2012 - 08:08 AM

I'm just going to throw this out there because it is hardly ever given as an option to do, Web development is pretty fun and you see results very quickly. With that said you could always learn PHP but I wouldn't recommend it as your first lang. You can make mobile apps as well using something like Phonegap. The only thing with Web is you have to know HTML, CSS, Javascript (Not the same a Java) and PHP is a plus in this area but not required. If you are dead set on learning standard application development, I would start with C# it is a very easy to understand and you don't have to worry about garbage collection and all that other stuff that is in C/C++. My language of choice is actually C/C++ though that is what my school taught me out the gates.

#8 BoboStein   Members   -  Reputation: 101

Like
0Likes
Like

Posted 03 July 2012 - 08:26 AM

Croacker, Travel to Himalayas and become a monk it's far less stressful than coding:)

#9 BitMaster   Crossbones+   -  Reputation: 4227

Like
0Likes
Like

Posted 03 July 2012 - 08:26 AM

I like Java. I like C++. Both are interesting languages with a different underlying philosophy which require different mind sets. Both can (and are) used for game development. Both have unfortunately (but expectedly) their own group of extremist fanboys and haters, but that is the Internet we live with.

If your goal is to get a game done and you are fluent in neither Java nor C++, then my advice is to work with Java (or C#. Or Python. Or <continue list>). The huge drawback of C++ is not that it is more difficult to learn, the really big issue is that it allows you to do some really horribly wrong things while still appearing to work fine. You can be one very tiny poke away from disaster and the poke that makes everything blow up has nothing obvious to do with what is actually wrong.
You can still get weird problems in Java or the other languages but C++ really stands out here because it takes "the programmer knows what he is doing" to the extreme. People often start to believe they know what they are doing, especially after their first (apparent) successes with the language. From both my retrospective experience and also working with other people's code (who are generally not completely incompetent, despite what some of the curses during debugging sessions might suggest), I can say that is not as much the case as it often should. I now have 15+ years of hobbyist and professional experience with C++ and only very recently I would have said "I *really* know what I'm doing" and still think that is true. I still encounter or read a few gotchas. They just don't happen that often anymore and tend to be in the more obscure corners of the language.

To make a long story short: if your aim is the game, don't try learning C++ at the same time. Learning any language while trying The Game is probably not a good idea, but the worst idea in C++. Also, whatever the language I would stay away from mobiles until you are reasonably proficient in a more forgiving environment.

#10 kcrik   Members   -  Reputation: 127

Like
0Likes
Like

Posted 03 July 2012 - 08:28 AM

My post was about my experiences, which was what the OP asked for. Make an objective case instead next time.


So it's not objective, why should I be objective ?

Java is great to start learning...because it's high-level as you said, and so you can get easily into programming. That will help to get into more low-level stuff later on. Really important stuff, is to learn as I said games mechanics/fundamentals of development, and Design Patterns. You will be often asked about design patterns in games interviews. That's probably more important than learning a specific language.

If you have good knowledge of mechanics, design patterns and have a demo in C#, I can tell you, your chance to get a job over a guy who only knows C++, are much bigger.
Making, even a small game from start to finish is, as well, much more important than the language, cause it shows you've managed to do it, and it's great value for companies.

You don't have to unlearn stuff, you have to learn how to manage other stuff, that's different.

I think I made a more objective case than you did, I explained what some languages are used for, so he will know if he wants to get into those languages or not.

#11 Pash   Members   -  Reputation: 246

Like
0Likes
Like

Posted 03 July 2012 - 09:28 AM

Well maybe look into C# with XNA instead? You can create games for pc and xbox fairly easily and c# is useable in popular indie game engines such as unity3d. For those saying java is a poor choice.....don't listen to them, it is a top notch OOP/OOD language to start with and you can learn most important programming concepts with it. Infact, learning the niceities and the pragmatic good programming practices couldnt come from a better language than Java.

With two of you, you have to be realistic, creating games is a tough job and something I didnt even realise is.....you have to really put the hours in to become a good programmer. Just to give you a little story I am not so different from you except I come from IT. I do a lot of windows and linux bash scripting (some python also) for my job (I used to do a lot of php as a freelance web designer prior to that). I started with Java as a learning experience and have been doing so for a year. I feel quiet happy to move onto C# and xna at the moment. I think some devs are arguing that its a dead fish now (XNA that is) with the arrival of metro and windows 8, but in my eyes any framework that allows me quick and safe development for two and more platforms is a good thing. I doubt very much that C# is going anywhere and the fact its useable in unity3d like I mentioned....is a good thing.

Writing a game in Java alone, from scratch, could be a little daunting for a first project. Check out different free java game engines though (might be a good stepping stone) Some guy called notch from Mojang made a game called Minecraft with Java, on his own. So it is possible, but not recommended for a first outing.
Please Add Rep if I helped // Working on untitled 2D platformer (more to come soon)
Twitter - @MarkPashby

#12 BCullis   Crossbones+   -  Reputation: 1813

Like
0Likes
Like

Posted 03 July 2012 - 10:32 AM

I think some devs are arguing that its a dead fish now (XNA that is) with the arrival of metro and windows 8

Just to tack this on if OP is thinking about XNA: I'm biased of course (using XNA now) but SlimDX and SharpDX provide two refactor targets should XNA truly become a deprecation problem in your game code. If you design your components and interfaces wisely, at the drop-dead point of XNA you could rewrite the XNA-reliant portions for either of these two alternate libraries. Or if you're not going to bother targeting Windows 8 / Metro, you'll be fine.
Hazard Pay :: FPS/RTS in SharpDX
DeviantArt :: Because right-brain needs love too

#13 Jay Taoko   Members   -  Reputation: 317

Like
0Likes
Like

Posted 03 July 2012 - 12:04 PM

  • Choose a platform to focus on. I recommend iOS. Android is too fragmented and given where you are right now, you don't want to deal with that.
  • Then the language comes naturally for the platform: C++, Objective C. You can't go wrong with C++ for game development or many other things for that matter.
If you focus on iOS you will have a wealth of information and a big community to help you as you go. You will not be alone and you will be motivated.
As you go, do not neglect web developement. Have an healthy interrest in HTML, CSS, Javascrip, PHP. At one point or another, you will need them. And follow Microsoft platform (XNA) developement and Android as well. You need to know what is going on there.

Disclaimer: I have never developped for Android. I have done a bit of Objective C. I am a heavy C/C++ developper. I have worked for EA and Ubisoft (they are heavy on C/C++).

I think Android, and Microsoft have good platforms as well. But if you need to focus right now, go with iOS.
Good luck!

#14 Fredericvo   Members   -  Reputation: 419

Like
2Likes
Like

Posted 03 July 2012 - 03:56 PM

People seem to make it sound like in C/C++ you could potentially blow your PC up in a puff of purple smoke. Don't let the word "dangerous" scare you forever into higher level languages such as python or java. Dangerous simply means if your program compiles fine but behaves wrong you'll get a little popup telling you the program hung. Big deal. It used to be worse with blue screen of death (even that wasn't lethal to HW) but that currently requires bad kernel code (drivers)

#15 DevLiquidKnight   Members   -  Reputation: 834

Like
1Likes
Like

Posted 03 July 2012 - 04:24 PM

I'm going to go out on the limb and say learn C++ first. Java can be easier for some people, but the transition from Java to C++ is a rather bad one. Many may suggest C# while its very elegant, I wouldn't considering the primary tool used to develop games unless you intend to use XNA, its better used for tool development. Languages like C# tend to wrap everything up for you in nice easy to use objects that you don't have to think too much about.

I don't like the idea of people suggesting that C# is a stepping stone to what they perceive as harder languages, you can easily learn C++ right away if you want. It is not conceptually harder to learn C++, its just like any other language, plus its very powerful. Once you know C++ you will begin to understand a lot of lower level coding going on, and be able to truly understand what a computer is doing. Especially if you eventually take up assembly. This in return makes you a better programmer within all languages.

Plus you will never get anywhere in life, yet alone game programming if you shy away from what is hard.

However if your planning on focusing on android you need to know java, if you prefer to do iOS you need to know Objective-C.

Edited by DevLiquidKnight, 03 July 2012 - 05:14 PM.


#16 mhagain   Crossbones+   -  Reputation: 8135

Like
0Likes
Like

Posted 03 July 2012 - 04:55 PM

Irrespective of whether or not XNA is dead (I can personally see XNA and DirectX converging under a new name in the future - a neat way to avoid internet "pleasantness" around the time of DirectX 13 too...) it still remains a great platform for getting the fundamentals down. Concepts that you learn with it will be transferrable to other platforms, even if code itself won't.

I have no experience with Android but L. Spiro's answer got a good laugh here (not so funny for those on the other side, I would imagine).

It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#17 Fredericvo   Members   -  Reputation: 419

Like
0Likes
Like

Posted 03 July 2012 - 06:04 PM

I'm not a big android fan either. I'm very anxious to know how Surface will fare. Think about what exposure your programs would get and how easy it'd be to port from pc to mobile using plain C++/DX

#18 pulpfist   Members   -  Reputation: 528

Like
0Likes
Like

Posted 03 July 2012 - 06:30 PM

Should I travel to the Himalayas and become a monk?


Nobody has commented on this yet so I might as well do it...

I consider doing something similar to this myself after a couple of decades as a software engineer.
I love writing software and create systems and I have done so against all odds all this time so I might as well be a monk doing it

#19 Pash   Members   -  Reputation: 246

Like
1Likes
Like

Posted 04 July 2012 - 12:12 AM

I'm going to go out on the limb and say learn C++ first. Java can be easier for some people, but the transition from Java to C++ is a rather bad one. Many may suggest C# while its very elegant, I wouldn't considering the primary tool used to develop games unless you intend to use XNA, its better used for tool development. Languages like C# tend to wrap everything up for you in nice easy to use objects that you don't have to think too much about.

I don't like the idea of people suggesting that C# is a stepping stone to what they perceive as harder languages, you can easily learn C++ right away if you want. It is not conceptually harder to learn C++, its just like any other language, plus its very powerful. Once you know C++ you will begin to understand a lot of lower level coding going on, and be able to truly understand what a computer is doing. Especially if you eventually take up assembly. This in return makes you a better programmer within all languages.

Plus you will never get anywhere in life, yet alone game programming if you shy away from what is hard.

However if your planning on focusing on android you need to know java, if you prefer to do iOS you need to know Objective-C.


I completely respect your opinion of course. I was just mentioning C# is a very useable/used language for game development. I wasnt suggesting that it's a a stepping stone to a harder language, I am saying it was a good choice for me to do this and offered it as a suggestion to the OP. I have some good sources from Rob Miles (c# Yellow book, which is free I might add and his XNA 4.0 book, which is not free but so far I have found it a very good introduction into using the XNA framework).

Of course in an ideal world you would go from bare metal assembly up the ropes to C/C++ and then to the managed languages with frameworks. However, in a world with two friends making a game part time.....you will want to see results fast from a motivational point of view, so maybe a managed language with some pre-defined frameworks are a better choice to start with?
Please Add Rep if I helped // Working on untitled 2D platformer (more to come soon)
Twitter - @MarkPashby

#20 abcdef44   Banned   -  Reputation: 2

Like
-1Likes
Like

Posted 04 July 2012 - 12:57 AM

And in the end, the Android market just makes it a waste of your time.
They have only 20% of the share and you have to code tons of special cases for all kinds of devices with different capabilities, as apposed to iOS in which there are basically only 3 classes of devices (none of which require any special coding to handle), 3 total resolutions to handle, etc. So not only are you reaching the larger share, you are also saving yourself from a large pain in the ass, multiplied by a larger pain in the ass.


So your choices are to code in Java and drop any notion of iOS, code in Objective-C and drop any notion of Android, or code in C++ in order to keep both on the table.
Since the obvious choice is C++, you then have to decide between the pain of supporting both Android and iOS, or the easy feeling of just supporting iOS.

Ultimately the choice is fairly clear, and you can save yourself hundreds of dollars by not having to buy a wide variety of Android devices too!


L. Spiro


Hmm seems to me that you don't understand what you're talking about. For ex. with:

http://code.google.com/p/libgdx/

you can code in Java for ALL mobile devices. Or if you prefer C++ like me, use for ex. Gamekit.

Also already today Android market share is higher than Mac.- Furthermore it doesn't need to pay a fee for the market use.
On Android all you have to do is get the resolution and keyboard. Hence nearly as simple as on IOS. And without risk of getting sued for your nose :-)

Edited by mike4, 04 July 2012 - 09:14 AM.





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