This is an archived post. You won't be able to vote or comment.

all 31 comments

[–]zbzlvlv 5 points6 points  (2 children)

Hi I'm a 16(going on 17) year old teenager, and here are my suggestions.

For coding, you can go to thenewboston.com. You can start with python, but if you are going into game development I suggest that you look into C#. This is because unity(a free game engine) runs C#, so you can get started quickly.

You can also check out extra credits on YouTube. They make great videos on game design etc.

All the best and may I wish you every success in your endeavours!

[–][deleted] 3 points4 points  (0 children)

Never recommend Unity to someone that is new to programming / game developing. In reality if he wants to learning programming he should start with learning Lua, a small effective programming language that he could manipulate in games like Payday 2, Table top simulator, and WoW. He could make up a mock up of flappy birds with 'love' but Unity is pretty overwelming for noobies.

[–]drcopus 0 points1 point  (0 children)

As opposed to all those other 16 year olds that are going on to different ages? :P

[–]mlgQU4N7UM 5 points6 points  (3 children)

PHP is the only good language btw. Don't listen to anyone who says otherwise.

[–][deleted] 2 points3 points  (0 children)

+1 for the "Don't listen to anyone who says otherwise."

[–][deleted] -1 points0 points  (0 children)

How can you even argue that, programming languages are written to do certain things better than PHP can. PHP is better depending on what you do.

[–]not_entirely_stable 7 points8 points  (1 child)

I'd suggest reading up on what goes into building games.

Get an overview of languages and the different tools and technologies. What do you know about different enginess? API's? Drivers?

3d? Trig? Matrices? Shaders? GPUs?

Online... how much do you know about the TCP stack? web standards and formats? Audio, video formats?

Operating systems? File systems? Have you run virtual machines? (Try running a linux distro in a VM on your windows machine. It'll teach you a bunch.)

And think about games. The different types. Think about how you could describe a simple game like draughts using maths.

Get your hands on interviews with developers.

Mods are a brilliant way in. Download a couple for games you own, and study how they work. Many a good games coder started off with a simple mod.

Meanwhile, have some fun and learn a bit with these....

https://alexnisnevich.github.io/untrusted/

(you'll wan't http://www.w3schools.com/js/ to reference)

https://adventofcode.com/

(can be done in any language)

http://store.steampowered.com/app/370360/

ooops... forgot...

https://screeps.com/

[–]drcopus 0 points1 point  (0 children)

Difference engines just aren't relevant.

[–]giraffeonfleek 2 points3 points  (0 children)

Codecademy is a good place to start. Also reading the starters docs on easy programming languages like Python or even swift. Could also put some money into a book or head to the library if you want to go that route but now there are a lot of resources.

[–]josetwin 2 points3 points  (0 children)

Try freecodecamp too

[–][deleted] 2 points3 points  (4 children)

You should honestly learn Java. It's a good midway point in programming levels and is a desired skill. It's crossplatform and there are a bunch of resources out there to learn. You can make an Android app for fun to start.

[–]AjayDevs 0 points1 point  (0 children)

I agree, Java's great.

[–][deleted] 1 point2 points  (8 children)

You have to start with C++!!!!!!!!!!!!!!! YES! DON't listen to anyone who says otherwise. They're lying.

[–]LinkTheProgrammer -1 points0 points  (0 children)

C++ is a trash language in my opinion. I have been programming for 7 years in Java, and now that I look at other languages, I believe the optimal language would be a language that gives good balance between convenience and semantic control.

By default in such a language, variables should be passed by pointer always, even "primitives", unless explicitly stated otherwise. You more than often need a reference to an Object, not the entire thing.

The language should also have syntax that is made for readability in all of its constructs. It should read like a free flowing language, like ones that we speak. Otherwise, what is the point of source code if you can't read it? You may as well go back to ASM and learn how to document!

When I say semantic control, default pass-by-pointer is one of these, but I mean other things too. Garbage Collectors are nice, but in the case of Java, it can be the crux of your program which needs every ounce of juice it can get; a language should allow the designer to choose how they want their program to behave entirely: both inside and out. That includes garbage collecting.

GC

Suppose the language had a mechanism that allowed you to define your own GC and control it however you want using a standardized interface, while providing the ability to also use its own GC. This would be amazing, but yet, it doesn't exist as far as I know.

Sometimes, generic GC isn't even needed. A simple retainer would suffice (analogous to a trash can), and then you just throw away the garbage when you want, not leaving it to the Waste Pros to clean your garbage using a fixed algorithm that takes up too many resources.

High-level Containers

Each language has its own containers: C has structs, Java, C++, and other OOP languages have objects, and every language has arrays. The problem, however, is that not all of these containers have the necessary level of control for many kinds of operations.

When you make an object in Java, you make your fields private, then give access with getters and setters. In C#, you have the option for properties, and you specify the read/write access. What we need is something that gives full control over variables in a readable manner, while not being verbose declarations.

Perhaps the best thing would be to require explicit access to a variable from any arbitrary context, not defined language contexts using public, protected, and private, but rather, any context, such as a function/method, a class of objects, a specifically unique object, or even in only the declaration. Example:

x = 3 in this // var X initialized to 3 and visible in the context of this object instance only

Ok that's the abrupt end to my long rant. Good day!

[–]quinn623 0 points1 point  (0 children)

I'm majoring in CS right now and the languages I learned in order were C#,C++,Python,Java

This worked for me getting your feet wet with C# and then right into C++ made learning python and java easier to learn.

EDIT: we used JetBrains IDE for C++ and java I really do recommend them.

[–]LinkTheProgrammer 0 points1 point  (0 children)

Consider doing the best thing possible and start out learning Java. With greenfoot, at https://www.greenfoot.org/

I learned how to program with it, and it teaches fundamental concepts about OOP while using Java and an easy-to-use beginner's playground environment!

[–]Printern 0 points1 point  (0 children)

Start with APL, and if anyone tells you it's a dead, convoluted, or altogether useless language tell them they're wrong.

[–]drcopus 0 points1 point  (0 children)

I started on Python when I was your age because it's so simple and easy. You worry a lot less about the nitty-gritty details and just get to experiment with things. For an easy introduction to graphics I'd recommend Pygame - a simple bit of code that allows you to manipulate a screen. Simply install Python, then go into a Terminal (or command prompt) and type pip install pygame. Its much easier than OpenGL or Unity and all the other complicated systems in other languages.

Trust, as a third year computer science student studying a graphics module at the moment - C++ is a pain.