Programming launguage to start off?

So i am a guy who likes 3D modeling and i am working with it for 2 months now. I have made some stuff and i am proud of myself for what I am doing.
But i am looking forward to create a small game ( Maybe something for phones) and i have no knowledge in programming( Absolute 0 ).

So some people are recommending to go with Python or C# and recommending to stay away from C++.

What would you recommend? Why and what that language is good for?

My first contact with game programming was with “BlitzBasic” when I was a kid.
It’s still the simplest stuff you’ll find out there to have a first contact with scripting, and is now open source:

http://www.blitzbasic.com/Community/posts.php?topic=102907

After that I had learned Borland’s Delphi with Pascal language, then moved to .NET C#, Unity, Python, and now learning C++ with Unreal :slight_smile:

When I first tried programming, I used C++. Quite a bad idea but it gave me some basic understanding of variables and stuff. Then in school we learned Python which I recommend for most beginners.
Its easy and allows you to do a lot of things. When you’re feeling skilled in Python, move to Java, C# or if you have balls, C/C++.

i started with c++, took 1000 pages book, done it in 2 months and knew nothing :smiley: so i can’t recommend c++. but then i moved to unreal blueprints, learned how programming works and now after year I’m learning again c++. one good tutorial is on udemy.com, 50 hours c++ ue4 tutorial, I’m on 40% and its good, its more friendly to me now so i hope one day i will be able to do some serious c++ programming with ue4. anyway learning c++ with unreal imo is better than learning from scratch, you have a lot of functions in ue4 already so they might help you understanding c++… GL

I wouldn’t recommend python if you are interested in game development. It’s a relatively easy one but you will have a hard time switching over to the better languages C++, C# and Java for game development later. C++ is the hardest one of them to learn but the basics (variables, if, loops, functions, classes, inheritance, …) are very similar in each of the 3 languages anyway so I would just choose the one used in the engine you want to develop with.

Start with Blueprint, at least if you are interested in UE4. It uses most of the same principles as C# and C++, you just express them a bit different. You can then expand into some C++ or try Unity/C#.

Another cool thing I used to do to learn programming:

Scripting Age of Empires 2 or 3 game maps.
I was author of that “Land Nomad” map ppl used to play.

Games like Age of Empires has also some pretty cool events and AI scripting tools for modding where you can learn a lot by making your own player AI.

A short story of how I got into programming. If you don’t want to read a boring, poorly written story, just skip to the end of my post :slight_smile:

When I first started programming in the late 90s I was really into the game Ultima Online. I was very poor at this time so I couldn’t play on the official pay servers and instead played on one of the free servers (they reverse engineered the netcode used for the game and built servers around it). The free server I played on was ran on the Sphereserver (Ultima Online emulator). I later found out that you could download the server files and mod the game using their own scripting language. The language was very odd, but I did what I could to learn it and it wasn’t THAT hard because I was already familiar with the game and the language was rather limiting on what you could do with it. This “scripting” language, called SphereScript, was my first language.

A few months later I found another Ultima Online emulator called, UOXC (short for UOX Classic), which was based off of several previous open source UO Emu servers and was very, very primitive. You couldn’t really change very much at all about the game, but it was open source. It was coded in C++, so I downloaded the source … studied it for a few days, barely understood anything past the basic concepts, then downloaded some free C/C++ compiler. With in a few days I could wrote a very short text based game that was an amazing 30ish lines of code. After my making my 30 lines of goblin slaying action, I went back to the UOXC source code and started toying around, changing variables, adding / removing small lines of code, etc… After 3 - 4 weeks of doing this I added code for one of the player based housing subsystems that wasn’t implemented in UOXC … mostly it just made a UI widget pop up on the client’s screen when they mouse clicked on their house sign and gave them info about the house and also let you set who could or could not enter the house. It was exciting because (1) I made something and (2) I had to also learn a little bit about doing TCP/IP netcode and had to research UO’s packet structures. There were a “few” bugs, but it did what I wanted … I felt smart :slight_smile:

Since I felt like the smartest kid on the planet at that moment (I was 18 or 19) I decided to give up playing with the server code and “write my own custom UO client”. I hadn’t done anything graphical yet at this time so I had to learn opengl as best as I could. After a few weeks I had a character that could log into a server and walk around. It was “amazing” lol … but really I was so lost with the OpenGL code that I decided 3D was not for me. At this time I decided that I should just learn 2D stuff because it was simple and didn’t require me to learn whatever a matrix or a vertex thingy-ma-bob was.

So I downloaded a 2d library created by Sam Lantinga called SDL or libSDL. It was a very low level 2D graphical library and it was cross platform (so I didn’t have to learn any of that scary windows programming). I started working on a remake of Final Fantasy 1 (the NES game) and I also bought a C++ book called “Sam’s Teach Yourself C++ in 24 Hours”. I was already familiar with most of the basic concepts of C++, but I still went through each of the 24 chapters and coded them out to make sure I knew what I was doing. I did learn quite a few things though I forget exactly how useful it was to me as I did it all in a few days.

But yeah that Final Fantasy remake … this is where I learned that making things from scratch was very, very time consuming. After a year or two I once again had a game that I could log into, pick a character, and walk around lol. Really during this time I somehow kept getting sidetracked, mostly from researching and learning how FF1 was made, how the 6502 (processor) and it’s assembly language worked, how x86 assembly worked (this is what made programming “click” for me honestly lol), and tons of other funny techie things that no one wants to hear about. Anyways … my computer died … I didn’t back up any of my files. I was frustrated and I quite programming for about 10 years.

A few years ago my brother bought me Ark: Survival Evolved. I love that game and somehow racked up 4k hours in a year and a half (while working 40 - 80 hours a week, and sleeping 1 - 3 hours a night … hoowww??). I eventually downloaded UE4 and the Ark Devkit used to mod Ark. After playing with that for a month, I figured out how UE4’s blueprint system worked, but got frustrated and started working with regular UE4 so I could use C++.


Now for the moral of that long, boring story (of which I left out a lot of other programming things that I learned):
What got me into programming was my familiarity of what game I was modding or “remaking”. This helped me a lot, because all the details are already laid out and very quickly allowed me to figure out if things were coded (semi) correctly. It also allowed me to open up code and quickly familiarize myself with what was going on even though I didn’t understand the actual “code” at that very moment.

So my suggestion is do something similar if possible. Just try to learn something that’s applicable to “you”, else you may have trouble staying interested in it. Whatever language you choose doesn’t really matter as pretty much every language follows the same logic, so after you learn one, the others are a thousand times easier to learn. I would suggest going with C++, but there is a lot to learn there. You can pick up the basics rather quickly, but since it’s a very, very broad language it’s near impossible to ever “master”.

Though it sounds like your focus is the art side of things, and you can do a lot with UE4’s blueprints as well so perhaps even learn that first. The blueprint node scripting is a little weird though, as it doesn’t always follow the same logical flow that text based languages follow and sometimes behavior in complicated blueprints will be unexpected and a little harder to figure out what’s causing that unexpected behavior. Still blueprints should be a lot quicker to learn well enough to make them applicable to your projects / ideas. Once you become comfortable with blueprints, you could then have a much easier transition into learning C++, which you really only have to use for certain things…

How is any of that short? lol

To start off? C++ is great, it depends what are your goals with programming for years to come.

A proper introduction and solid foundation in C++ is very useful and while the language is wildly used, it opens a lot of possibilities.

Definitely Processing!!

It’s super easy to learn and has great easy to follow tutorials. It’ll have you making great creative apps and even games in no time. It’ll introduce you to the concepts of programming and you can use it to write PC, Mac, Linux and Android apps.

I fail to see how the first word being void makes it a backwards language. It’s a function that returns nothing and exist in almost every programming language.
Being a Java library has the benefit to allow programers to mix processing and Java code and therefore progress into full blown Java development when processing no longer meets their requirements.

Ultimately, I feel it is a great language to learn the principles of software development on, especially for creative types as it is art focused.

I personally advise people to learn the principles in Unity’s C# (loops, branching etc.) if they really have to, then just dive cold turkey into UE4 C++. It’s not user-friendly and it will take longer to get up and running, but the long-term benefits can’t be overstated.

That article is rubbish. As long as Android is around Java will be around, no matter how much everyone hates it.

What I see there is “CS professor misguidedly switches to the worst possible programming language to ensure introductory course doesn’t teach any good practices”.

I’d argue that the downward trend is strictly on desktop platforms. As I said, as long as Android’s around, Java will be around. I doubt that trend will change any time soon.

I’d advise going into HLSL/CG. :o

Sure https://www.openprocessing.org/

All of these have source code too…

The reason I recommended processing was the ease of use. C++ is a lot to take in as a first language and requires a lot of work to get any satisfying output. Having to learn pointers and memory management would be a daunting task for anyone learning the basics of coding.

With processing, one line of hand written code will have you drawing on a canvas with your mouse…it is really rewarding, easy to pick up and encourages people to go off and learn more about coding.

This isn’t really a thread to argue which language is the most popular etc… but the fact is that Java is still top of the charts in popularity, has been for a while and hundreds of thousands of businesses rely on it. It’s not going to disappear any time soon.

For UE4 I would suggest blueprints and when you’re comfortable with that something like Skookumscript: http://skookumscript.com

Limiting yourself to “only Unreal” or “only Unity”, etc, won’t really teach you programming;
It’s really important to experiment with the general picture, instead of stay enclosed inside game making environment. The thing is games isn’t the best place to start learning programming, one willing to be programmer should go learn it somewhere else first and later begin applying his acquired knowledge into game developing… starting right into game dev most likely ends up as a pile of unfinished game projects.