Jump to content
  • Advertisement
Sign in to follow this  
Leonardo Ferraz Zaraya

Help me change my life and career.

This topic is 2149 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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. smile.png

Thanks!

Share this post


Link to post
Share on other sites
Advertisement
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 :-)

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!