I aspire to be an app developer

Started by
7 comments, last by Gian-Reto 7 years, 11 months ago

Like the title says, i want to develop apps, for android more specifically and then in the future for iOS and who knows maybe even for consoles in a distant future.

I've been studying programming and i had decided to start with python about 2 years ago. I've been though ups and downs of life and its taken me longer than it should have to learn what i have so far. I have learned mostly from the books by Al Sweigart "Invent with python" and "making games with python and pygame"; They are good books and teach the basics very well to total amateurs but they also lack certain things that have made it hard for me to keep interest and motivation in continuing on.

I've completed reading and learning all the material in "invent with python", and i am half way through with the other one. However, i feel like what i am interested in learning is how to use classes, how to create pixel art, how to make RPGs like the early final fantasy, game logic in those kind of games, how to save a game, how to use multiple files for one program so all of my functions/calsses arent all mixed up in one large file, etc..

Does this make sense?

6 months ago i made a plan. I joined the US Army and thought to myself, i will have 4 years, 3 of which i will use to get my associates in Computer Science, and with all that time i will study game development. My goal in mind is to have gotten really good with python and learned all the basics and practicalities of programming through that language and then move on to Java and learn to develop apps with it. I want to be making money, to be trying at least, before my 4 years are up. I want to be able to get out and chase my goals.

Right now i have a lot of studying material i can run to, and perhaps this is procrastinating, but i just wanted to hear some wisdom. I need to use this time and stay productive. Any advice?

Advertisement

Moved to For Beginners.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
However, i feel like what i am interested in learning is how to use classes, how to create pixel art, how to make RPGs like the early final fantasy, game logic in those kind of games, how to save a game, how to use multiple files for one program so all of my functions/calsses arent all mixed up in one large file, etc..

Hello,

You can do most if not all of that in Python (except making pixel art). I don't know if you've done this already, but Python is very beginner-friendly, and gives you guides to things you can study https://www.python.org/about/gettingstarted/ Browse around for a while to see what it offers you.

I am sure there is something about learning classes there. Since it's a big topic, I won't go into that here now, as it wouldn't fit in one post.

Multiple files is however very simple:

a.py:


def f(x):
    print(x)

b.py:


import a # Import entire "a.py".
a.f("hello")  # In "a", call the "f" function

This works however only in one direction. Here "b.py" imports "a.py". You cannot import "b.py" into "a.py" as well, since that would lead to a import cycle. (a needs a complete b, and b needs a complete b)

This allows you to split into several files in 1 directory. You can also do this with directories (maps). Make a new directory "stuff", and an empty file with the special name "__init__.py" in it. Move a.py above into it to, and modify b.py to


from stuff import a # Import entire "a.py".
a.f("hello")  # In "a", call the "f" function

The mechanic is quite easy, the big puzzle is to decide what to move to where, but try it, and ask questions about it if it's unclear.

For pixelart, there is a forum here about "visual design" (hope I got its name correct). There are few pinned threads there with information about art in all forms, I'd suggest you read that.

As for games, I don't know what things you have made with pygame already (please tell us!), but perhaps a sliding puzzle game like 2048 or the sixteen puzzle could be a start. It would also need some tile graphics. You'll find a lot of game-things in such a small game already.

In case you're worried about Java, Python and Java are much alike, except Java is more clunky, more limiting. The step from Python to Java is not so big, you'll have to get used to not being able to use some nice Python tricks, and write a lot more boilerplate.

odds are you can get father than just python and java in 4 years, with a combo of standard CS associate degree studies + individual study on topics of interest (such as game development).

if you want to be making money in 4 years,it will be easier doing so with apps (non-game programs) than with games. you say you want to make apps (which to me means business apps - which made me wonder why this thread was even on gamedev at all), but you sound like you want to make games (game apps?). i'll assume you mean you want to make games, not business apps for smartfones.

you'll have three types of useful resources, info on languages/programing in general, such as books on python programming, info on how to write games (often available in a few choices of language), and info on the math and physics used in games.

overall, your plan sounds quite solid. you've secured a position that will maintain you while you learn. you will also be receiving formal training. free time for individual study may be an issue. a career, school, and learning game development will leave little time for anything else. and of course there are the hazards of military duty. so do us all a favor and don't get shot, or we'll never get to play any of the cool games you're going to write. Ok? <g>.

exactly what to learn will depend on what kind of games you want to build. the game type(s) will determine your language options. a good basic knowledge of algos and data structures will be required, and should be part of your 2nd year CS courses. you'll also want to know Cartesian coordinates and basic trig (and linear algebra if you want to do 3D). none of that will be covered in a CS degree. on the physics side, you'll want to learn basic physics and mechanics - at least enough to use a physics engine library correctly. this too will not be found in a CS degree. graphics programming may or may not be part of your formal training, if so it may just be 2d vector graphics. so math, physics, and graphics will be areas for individual study along side your formal CS courses.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Thank you for the replies guys, it is very much appreciated. I will heed your advice and use the resources and study into the topics you mentioned.

I want to create 2D and 3D games, but for now i think i'll stick to 2D. And yes it was part of my plan to fine something that can sustain me meanwhile i study towards my real goals. I am aware that it will require a lot of me, but this is what i want to do and i will follow it through because my goals are somewhere on the other side of that fence.

I have made almost all of the games in the books i mentioned reading, understanding all the programming used, and also made my own little changes to them. I have not however made my own games. i feel as if i waste too much time when i try to make my own games; time i could be using learning more. I am aware that making your first few games are a priceless learning experience but i feel as if i must first learn all the things i mentioned "how to use classes, how to create pixel art, how to make RPGs like the early final fantasy," etc.

My plan is to make a real attempt at creating my own game and completing it using python once i feel i am very good with the language and have been through many tutorials etc..

But my attempt at going commercial with any games i create are reserved for once i learn to develop "game apps" using Java.

This is my game plan. I won't start school for another 6 months, so i am trying to look up if there are any coding boot camps or public groups i can attend to where i'd learn from others. I am also switching between all the books and tutorials i have gathered (on the internet mostly; bookmarked) so that i don't get bored reading what seems to be the same material. This might help. I want to clear all this studying material asap, so that i can move on.

Thanks again. Oh and i won't get shot! Haha

Just because you know how to program, and even if you're very good at it and know most of the ins and outs of game programming, doesn't mean you'll be able to make a living with "going commercial with any games i create". There's a HUGE difference between knowing how to write games, and creating a good game that makes a sizable amount of money.

I'm not telling you this to get you down; rather, you might want to think about finding a career working for a company (making games if you can, else a typical programming job), and maybe work on your game making on the side. Assuming you'll be able to make a living making games by yourself isn't a good long term plan (especially since you've just started learning to program).

Either way, good luck, and have fun.

My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

The pitfall of reading and doing tutorials is that they do not tell you where the pitfalls are, and how to recognize and avoid them. No tutorial ever shows you how it fails if you start at a different point. In my experience, you always start at the wrong end. How to recognize that, and understand what you need to do different is something no book will ever tell you.

Reading and doing is complementary, they teach you different things, yet enhance each other, since they are closely related.

- Reading is about general principles, it gives you a more global picture.

- Doing is case by case, in small details, where in each of these details you have make a decision to go left or right.

The theory gives you an overview of the overall direction, so you get less easily lost. You learn about general properties, and how to reason with them.

The practice takes weeks where the theory does a single step in 5 minutes. There are huge gaps between the ideas in theory and how you make them work in practice, in terms of lines of code. Making coding hours with your own problems gives you understanding how to deal with these gaps, how to recognize patterns and problems, how to avoid and deal with them, and how to creatively find a nifty solution that the theory skipped, but it works in your practical case.

The strongest form of enhancement for me, is when you have seen a problem before, and later you read about it in the theory (or vice versa). Since you "lived" the problem, it hits some immediately, and becomes really a part of you.

I recommend you take the plonge and start writing a game, maybe only once a week, maybe twice a week, it doesn't matter, do practice by yourself, get stuck, and find ways around them.

You can postpone writing your first game, but learning more is not making it easier.

On the contrary, it's making it harder, as you have to understand more deeply what to use, and what not to use. In addition, there is so much to learn, unless you practice with it (and learn to understand it deeply), it won't stick in your mind, it doesn't become part of you.

Your first games are just learning experiences. Some will fail somewhere halfway, others just get stuck before you start, and some will get finished for some value of "finished". These games are just the means to learn things.

>> I am aware that making your first few games are a priceless learning experience but i feel as if i must first learn all the things i mentioned "how to use classes, how to create pixel art, how to make RPGs like the early final fantasy," etc.

you think that's bad?

in my zeal to learn how to write software, i used to write operating environments (OS shells) and integrated packages. i went so far as to write a windows 95 shell and MS office suite for dos 5 and dos 6. and THEN i discovered game programming. <g>.

i used to say "learn how to write every other kind of software first, and then you'll be qualified to take on games".

fact is that's not really necessary. games are so specialized, they have little in common with 90% of the other types of software apps out there. in fact, many of the standard principles for traditional programming are based on entirely different assumptions than hold for games. one must sometimes unlearn the conventional way, and learn the game way to do things.

>> I want to clear all this studying material asap, so that i can move on.

that will never happen. learning game design and development is a never ending process. continual sharpening of the saw. if its not implementation techniques, its design related questions - you'll always be researching something.

continue to learn until the amount you've learned, and the idea for a game come together to inspire you to try one of your own. and don't worry about language, start with whats comfortable. it will be obvious when what you want to do calls for a more powerful language. until then there's no need. if you get inspired to do a title in python, and python can do it, don't worry about java, in the long run, odds are you will go the python/java/c# type route and end up at C++ like most folks do who get serious about making games. so python vs java vs C# is sort of irrelevant. for those going the distance, almost all roads (python, java, c#) eventually lead to Rome (C++). and any path you choose will get you there in good stead.

>> Oh and i won't get shot! Haha

ok, remember - you promised us! we'll hold you to it! <g>
good luck and keep at it - you'll get there.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php


I have made almost all of the games in the books i mentioned reading, understanding all the programming used, and also made my own little changes to them. I have not however made my own games. i feel as if i waste too much time when i try to make my own games; time i could be using learning more. I am aware that making your first few games are a priceless learning experience but i feel as if i must first learn all the things i mentioned "how to use classes, how to create pixel art, how to make RPGs like the early final fantasy," etc.

What you need to do is to try and error. Not only copy existing games, but also try to come up with your own stuff. At some point you will run into the really interesting stuff, deadends, stupid mistakes, spectacular failures, whatever.

You will learn far more than what any book or tutorial or school in the world can tell if you got there by making your own mistakes.

Small example from my own expierience: I have had a classical CS education, so I knew about Object pools pretty well... like thousands of other concepts that I learned but never applied in my own work, it sank to the deeper levels of my mind.

Until I ran into severe performance problems with my Unity project, were a lot of instantiate/destroy operations of gameobjects would really drag down the performance of the game. Well, lucky I did remember object pools... with some crude implementation of it, I was able to precreate my gameobjects and never destroy them until unloading the level...

And at the same time I learned to never, ever instantiate or destroy at runtime in Unity again.

A book could have told me that. Might even have brought me clever anecdotes like mine up there... wouldn't have been quiet the same as I wouldn't have expierienced how severe a problem it fixed. I think I learned way more by just doing, failing, and looking for solutions than just reading books.

Don't get me wrong, reading books and tutorials is a good way to grow your skillset. But try to apply what you learned, else it will always stay something abstract.

And as others have said before, stay realistic about your ability to ever pay the bills with game development. Have a plan B, because that plan A is a quite risky endeavour.

Most games fail, and even the ones that make it to the finish line and are generating revenue often are not generating enough. Being able to do something else for a living (game dev contracting, business app dev, or if nothing else, flipping burgers parttime) will be needed for most game developers.

This topic is closed to new replies.

Advertisement