Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

Do I need a serious knowledge in programming to be able to script?

Discussion in 'General Discussion' started by GTHell, May 12, 2016.

  1. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    ... This, is nothing even close...

    I give up.
     
  2. JasonBricco

    JasonBricco

    Joined:
    Jul 15, 2013
    Posts:
    956
    Do we have to pick one? I don't like any of them. B could be close depending on what 'big' and 'small' are referring to and the context... C could be right in some situations. A and D are out unless D is constrained to a specific situation, at which point it would depend on what that situation is. A is absolutely out.
     
    Ryiah likes this.
  3. dogzerx2

    dogzerx2

    Joined:
    Dec 27, 2009
    Posts:
    3,960
    OP's question is like asking if you need to know how combustion engine works before knowing how to drive!
     
  4. Master-Frog

    Master-Frog

    Joined:
    Jun 22, 2015
    Posts:
    2,302
    ...
     
  5. JasonBricco

    JasonBricco

    Joined:
    Jul 15, 2013
    Posts:
    956
    What's wrong? Errors in your ability to communicate? I don't have time to solve your puzzles, if that's what you're going for. I would rather spend my time programming my game. If you're trying to hide some abstract meaning behind your posts, I won't pick up on it. I'd personally appreciate a different communication method, but maybe that's just me.
     
    AcidArrow, GTHell, QFSW and 2 others like this.
  6. TheSniperFan

    TheSniperFan

    Joined:
    Jul 18, 2013
    Posts:
    712
    No, because "programming" is the act of writing code and "scripting" (in this context) is the act of writing code for a Unity game. Your analogy would be fitting, if OP had asked us whether you need to be able to write your own game engine in order to work with Unity.
    His question is phrased poorly. What he's trying to find out is how good he should be at programming before starting to work with Unity specifically. (Ignoring - for a moment - that what qualifies as "serious programming knowledge" is entirely up to interpretation)

    @GTHell :
    With what I said above in mind, here's my opinion:
    Do you need to be able to program in order to be able to script? Well, let me rephrase that question. Do you need to be able to write code, in order to be able to write code for Unity?
    Of course. One implies the other.

    The real question is what I mentioned earlier. How good a programmer should you be, before you start working on your game in Unity? This depends on a variety of factors, two of which are what kind of game you're planning to make and your will/determination.
    Back before I learned how to program properly, I wrote a game of battleships in C. The only things I knew where how to call functions, global/local variables, if/else/for/while/switch/goto, printf (function to print something on the console) and scanf (function to read input from the console). I wrote a complete game, including AI, parsing whether the input was correct (input was in the syntax of "x;y" so I had to parse it) and a nice output showing the playing field. With enough determination you can do amazing things. What you have to understand is that, now that I know programming, I could write the same game and it would be far more efficient, have much easier to read/maintain code and it wouldn't take me anywhere near as long.

    What I'm getting at with this tangent is that the amount of time you're going to spend on your game's code, directly correlates with your programming skill. There is the danger that you spend too little time practicing the fundamentals. What good is it if you "save" a couple of weeks of pure programming practice, if your game suddenly takes a couple of weeks longer because you have to do things in the most roundabout ways on account of being a S***ty programmer?

    That's the gist of it, but I can take it a step further, explaining how exactly I think people should approach Unity development, if anyone is interested. It's going to be a slightly longer read then, but it's the advice I gave lots of other interested people on platforms outside this forum already.
     
    frosted likes this.
  7. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    This thread is still going on? There really is no right or wrong answer here. Different people have different learning styles.

    I for one am a fan of just-in-time learning, especially for programming. I learn a language or an API or a concept as I need it. Its a great way to reduce the up front learning burden of a task. But its coupled with the fact that you must be always learning.

    Spending years doing a degree to learn the fundamentals is also valid. I did that with chemical engineering. They don't even teach you what a chemical engineer does all day until you are into your fourth year, the first three years are pure fundamentals.

    Now that we have established that we are all pretty, can we go home now?
     
  8. tiggus

    tiggus

    Joined:
    Sep 2, 2010
    Posts:
    1,240
    Are you kidding, this thread is the epitome of General discussion Unity :p Anything for us to avoid doing real work and wane philosophical.
     
  9. zombiegorilla

    zombiegorilla

    Moderator

    Joined:
    May 8, 2012
    Posts:
    8,986
    Same here. I really want to learn Python, but the need hasn't arisen for me yet. I don't absorb well unless I have an application.
     
    Dave-Carlile, frosted, Ryiah and 3 others like this.
  10. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    That's a good one. :D

    @JasonBricco @computertech

    I'm actually not a beginner. I made this post because I have troublesome with the right way to learn Unity.
    The Youtube thing and Learn section is really distracting. I always type in FB.COM instead of Search the material I need to learn.

    Now I'm good with that book, Unity in action. And also I'm happily now that I can really quit facebook.

    You seem like to have a confident within yourself. You should write a book to teach Unity or anything you're really good at.
    Why someone with a great knowledge like you wasting time and argue with people on the internet?
     
    Dave-Carlile and jhocking like this.
  11. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    Share your advice and let it heard and we're going to read it all. Bad or Good it doesn't matter.
    My post was to get as much opinion from different people. We all learn new thing everyday.
     
  12. Aiursrage2k

    Aiursrage2k

    Joined:
    Nov 1, 2009
    Posts:
    4,835
    You might as well take a programming course or two.
     
  13. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,142
    Just keep in mind that not every instructor will be good at teaching. I took a few college classes and one of my instructors was absolutely terrible at the subject (VB .NET) whereas the other two were fantastic (Programming 101 better known as an easy boost to your GPA, and Java).

    I recommend meeting the programming instructors prior to taking a course. If possible you may want to go one step further and ask previous students which instructors they thought did a good job of teaching the courses.
     
    KnightsHouseGames and Kiwasi like this.
  14. Aiursrage2k

    Aiursrage2k

    Joined:
    Nov 1, 2009
    Posts:
    4,835
    My first class was also VB in highschool then c in college, etc
     
    Braineeee likes this.
  15. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    It was already 6 month that the professor still teaching Loop, Array. And this semester I got to study a new language calls C# (ROFL) and the professor start to teach us again from to ground up.

    I've teach myself C#/C++ beyond OOP and other advance stuff. I just go to school to get A in every subject and of course to get a high GPA and make everyone think that I'm born smart. (But actually I'm not because no one born smart, just work hard)
     
    computertech and Aiursrage2k like this.
  16. KnightsHouseGames

    KnightsHouseGames

    Joined:
    Jun 25, 2015
    Posts:
    850
    Yeah, that is extremely true. My programming professor was clearly very knowledgeable about programming and very passionate, and as a person he was great to talk to, a very nice guy, but man, I didn't learn anything from him. It take a certain kind of individual to explain concepts as abstract as some of the ones in programming, and he just didn't have that for me. I could never really understand what the programs we were writing in class were supposed to do, or how to visualize them. By comparison, everything my Unity professor told me didn't take long to understand because I could see obvious visible results from the program.

    Except events and delegates.....I still have only a rough understanding of that.

    Anyway, I didn't do that until I was into the later part of my degree, and my programming courses were already over, and I regret that, as I might understand programming better if I had.

    Still better than my friend's programming professor who made them write code on paper on tests.....cause thats how code works?
     
  17. TheSniperFan

    TheSniperFan

    Joined:
    Jul 18, 2013
    Posts:
    712
    @GTHell : I was asking because I don't want to waste my time, if no one's interested in the first place. There are plenty of answers to the original question already.

    Background:

    I am going to start off with telling you a little bit about myself, just so you can see where I'm coming from. The world of game development is no small one after all. Games range from small, experimental games for mobile devices up to AAA projects with a huge workforce that cost hundreds of millions of dollars to make. So I think it's important that, when you guys judge my views, you do so with my and not your own goals in mind. This is not supposed to be a one size fits all approach; No such thing exists.

    I am an (almost) 24 years old computer science student from Germany, currently working on his first game. Without going into too much detail, I did my first steps towards game development many years ago when I started taking interest in how games work from a technical side and altered things here and there (also known as "modding"). I am the kind of person who works like that: I want to understand things. Merely using them doesn't satisfy me.
    Up until now I have programmed in a variety of languages. Not counting toys like HTML, JavaScript and all the other primarily web-development related ones, there ones I spent the most time with were PAWN, C, Java, C++, C# and, most recently, x86 assembly.

    The game I'm working on is a first person survival horror game, which I haven't posted in the WiP section yet (something, something leaving a good first impression). Sadly it turned into a one-man project some time ago, since my ex-partner had to bail out due to events beyond our control. I haven't checked the actual numbers, but I can say it's more sophisticated than the average Unity game, based on my subjective experience with the WiP section and Unity releases (and I don't mean that in a narcissistic way). What I am getting at is that the casual games (typically for iOS and Android), the cheap productions (think of what the forums looked like around the time of the Slender and Flappy Bird hypes) and all the "baby's first games" (aka. all the S*** that gets dumped on Steam Greenlight) make up the majority of Unity games. The indie games aimed at the core audience, at least in my experience, typically start with an UDK (and now UE4) splash screen. Times are changing, but we're not quite there yet. From what I can tell, Unity's home-turf still is the mobile gaming sector.

    In case you haven't got it from the implication: My game is targeted at the core gaming sector. Those games are far more complex and, on top of that, I always set myself high standards. When somebody asks, I want to be able to say "I did that" without having to be ashamed.​

    My PERSONAL views on how one should approach getting started with Unity (the programming part):
    Let's start at zero: You want to be a gamedev, but don't have any substantial programming experience. Where to start?
    Besides being the wrong question, it's also typically the first question newbies ask, probably assuming it works like with "normal languages". After all, if you want to learn Polish you just learn the Polish language, so if you want to learn programming, you just learn a programming language, right? If taken literally, yes, but that way of thinking shows a lack of understanding what creating a piece of software (a game other something else) means.

    Programming is just the act of writing code. There is more to developing software than just writing code, in the same way that there is more to communication than just speaking words.
    I always say that the most important part is to learn to think like a programmer. Logic, abstraction and, most importantly, breaking down a single problem into a set problems. If you learn that, you'll be able to pick up any programming language you'd like to learn easily. They are, after all, just the tool with which you do your job and not more.

    You choose a programming language.

    No, what I said was that you aren't "learning a programming language", but "learning how to think like a programmer". You still have to choose one, because you still have to practice. It is an important differentiation for a simple reason:
    Keeping in mind what I said earlier (about how easy it is to learn new ones after you can already program), your first choice should not be based on whether you want to use Unity or Unreal for your game.
    I point that out, because in my honest opinion neither C++ (Unreal) nor C# (Unity) are good languages to get started with, IF you have NO prior experience with programming.

    If you want to make the kind of game I am making (core gaming/serious/not a simple flappy bird) you better understand what you're doing. And when I say "understand", I mean exactly that: U-N-D-E-R-S-T-A-N-D. Writing the code will be the easiest part. If, a couple weeks down the line, some other newbie asks you what that specific word in your code means, you better be able to tell him what it does exactly and why you put it there.

    Learning programming can be a very frustrating experience. Since your first step is to get accustomed to thinking about problems on an abstract, logical level, breaking them down and generally get a feeling for how computers work, you should choose a language that allows you to practice that without forcing you to learn a million other things as well.

    After what I said earlier, I would recommend C as a starting language. Allow me to make a case for C, by comparing it to C# (what Unity uses).

    Code (csharp):
    1. class Program {
    2.     static void Main() {
    3.         System.Console.WriteLine("Hello World!");
    4.     }
    5. }
    Code (csharp):
    1. #include <stdio.h>
    2. void main() {
    3.     printf("Hello World!\n");
    4. }

    Both pieces of code do the same thing: They make your PC say "Hello World!" and then end. The upper one is written in C#, while the lower one is written in C. They look very similar, but there is one important difference.
    Depending on how fast a learner you are, it is entirely possible that you'll fully understand every single line of the code written in C in an hour or two. The C# one is going to take you a couple of days at the very least. To understand its first two keywords ("static" and "class"), you'll have to dive into the depths of something called "Object Oriented Programming" (OOP). Understanding this programming paradigm is going to take some time. You'll have to learn it eventually, but I think that it's better to tackle these tasks one step at a time, if you ask me.

    The short version is that I think you should do your first steps in C, since it allows you to learn the basics of programming easily. You'll be able to write code and have a complete understanding of it from day one. With C# (and C++) you'll be able to write code or understand what exactly it does, if we're going to check after the first day.

    I see where you're coming from, but no (for a couple of reasons).
    1. There are huge similarities between C, C# and C++ (as their names kind of imply). The code from earlier shows you something that is referred to as "C-like syntax". It means that C# has a syntax that is based on C's. The code you write looks extremely similar. Since you aren't going to become a C programmer, but just use C as a starting point to get accustomed to the very basics, you'll have a 100% carry over. Literally everything you're going to learn with C, you're going to use with C# (or C++). If you plan on using UE4, you're going to spend even more time with C, because C++ is almost a superset of C (look at this graph).
    2. You want to create a serious game. That's a commitment for a year or two (maybe even more). Even if you don't practice daily, you're probably going to move on to C# within the first month.
    3. As Benjamin Franklin said: "An investment in knowledge pays the best interest." Aside from the fact that what you're going to learn is directly relevant for your game, it's always better to know a little bit to much, than the opposite. If you want to move on to C#, having experience in C helps because...
    4. C is very good at teaching you a couple of things C# doesn't. The two languages, while looking similar, work completely different on a technical level. The gist of it is that C# does a lot of things for you, while C doesn't. As such, C is very good at teaching you how to program efficiently, because it doesn't hide anything from you. It's very "close to the machine", if you wish.
    Regarding point 4: There are a lot of programmers who don't really care about performance. You'll have to decide for yourself whether you're going to care about whether the code you write runs like arse or not. At the end of the day, learning how to make your code run better cannot be a "waste of time" though. It is, after all, practical knowledge.

    C:
    1. General structure of the code (scopes)
    2. Datatypes, local variables
    3. Basic control structures (if, else, switch, goto)
    4. Arrays
    5. Loops (for, while, do while)
    6. Functions, global variables
    If you want to learn C#, you practice this until you can do it in your sleep, then move on.

    C#:
    1. OOP concepts (objects, classes, instances, encapsulation, interfaces and all the other stuff, one by one)
    2. Practice
    3. Simple game(s) with Unity
    4. Learn new things then either go on or go back to 3 (for example language specific features)
    5. Your game
    If you want to learn C++ instead, stay with C for a bit longer.

    C:
    1. Basics of memory (pointers)
    2. Manual memory management (malloc(), free(), memory leaks)
    3. Pointer arithmetic (nothing fancy, just some playing around with arrays)
    C++:
    1. OOP concepts (same as earlier)
    2. Practice
    3. Simple game(s) with UE4, CryEngine or whatever
    4. Learn new things then either go on or go back to 3 (for example language specific features)
    5. Your game
    At this point you should be a somewhat competent programmer. "Somewhat" because becoming a truly competent one requires experience and there's no shortcut to getting it. Besides that there are lots of important things I haven't covered. Concurrency is one such thing. It would also fall under the fourth points ("Learn new things").

    The first question is easy to answer.
    If you want to use Unity, you move on to C# when you're able to write something simple like an array-based stack and queue in C. Just a stack and queue of characters or numbers. Nothing fancy.
    If you want to use a C++, you'll have learned memory management in C, so you should do something like a doubly linked list in C. A list of strings of varying length for example.
    After you've learned what OOP is and got a grasp of how it works in your language of choice, you shouldn't spend the same amount you spend with C earlier, working on "boring" applications in your new language. Once you get the syntax and understand the design principles of OOP, you can practice by making simple games like pong or snake in the respective engine.

    I don't know how long this will take you, since this depends on so many factors. How intuitive is programming to you? How fast a learner are you? How much time can you spend? How much time are you willing to spend? How much time are you actually going to spend?
    I think it's perfectly possible to go from "Never programmed in my entire life" to writing a game like pong in Unity (with OOP code and everything) within less than two months. If you have the time and practice for a couple of hours daily, it's probably going to be more around one month.

    That's not a whole lot to get a solid foundation, is it?​

    Jesus, that took a while to write. Again, those are my personal views and not some "universal truths".
     
    frosted and Azmar like this.
  18. computertech

    computertech

    Joined:
    Feb 17, 2015
    Posts:
    208
    @TheSniperFan , is C a too low level language for beginners? I heard of the other schools usually taught Javascript first, because Javascript can draw stuff directly. I think drawing something by coding should be the best type of the first lesson and practices. Javascript can draw stuff because it is a frontend language to code stuff directly into a interface or user side.
    https://www.khanacademy.org/computing/hour-of-code/hour-of-drawing-code/v/welcome-hour-of-code
    Then, they should learn C# for a backend language to program a server or system side.
    Then, they should learn C++ a low level language to be able to do more complex and small detail programming. I do not suggest C low level language yet, because my friend from computer science said the C++ with the object oriented programming will be more for game programming than C. A lower level language will be harder for beginners to program.

    I am still a programmer beginner, but this is my plans of learning programming by myself. Although there is no specific way of learning coding.
     
    Last edited: May 16, 2016
  19. Aiursrage2k

    Aiursrage2k

    Joined:
    Nov 1, 2009
    Posts:
    4,835
    Yeah might as well get a slam dunk
     
  20. Deleted User

    Deleted User

    Guest

    Not necessarily "C" as such, I'd highly recommend learning HLSL / GLSL though, which is a "high level" varation of C for GPU programming. The less time you spend avoiding it, the easier game dev will become..
     
  21. Aiursrage2k

    Aiursrage2k

    Joined:
    Nov 1, 2009
    Posts:
    4,835
    Mike explained of prime31 fame explained it pretty well.
     
  22. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,142
    That said though, if you don't mind slightly worse performance, you can get away with a visual material editor. Unity is practically the only commercial engine out there that seems to be lacking one these days.
     
    Deleted User likes this.
  23. Deleted User

    Deleted User

    Guest

    Sure, still need to know a bit about shaders n' stuff though..! Although I definatley prefer mat editors though.
     
  24. computertech

    computertech

    Joined:
    Feb 17, 2015
    Posts:
    208
    @ShadowK , oh wait I forgot all the frontend and backend languages can have the similar keyword commands. Therefore, frontend and backend learning process have not much difference. To be honest I only know MEL scripting for rigging a character. And I only have learned Javascript so far. I am just a animation person proceeding to programming. I am learning programming a bit too slow, because of my bad schedule. But, I am good at university physics and math to think logically and solving a puzzle to learn programming quickly.
     
  25. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    @TheSniperFan
    What you have describe is lessons that I'm going to learn in my Data Structure class.
    I'm glad that my C# book, The C# Player's Guide, cover the different between C and C# and there a technical part in book talking about memory and how is it different from C++.
    My school did actually taught me about C/C++ basic and this semester they move on to C# because they think that student aren't going to make most of it with C++ much(Usually no job offer with C++ here in my country). Only Java/C# is the hottest language around here for database and other kind of thing.

    And I also have another question. Is a solid understanding of OOP is enough to be a competent programmer?
    I'm actually finished part 3 of the book last 1.5 month which is Object Oriented Programming and take a 2,3 week break before moving on to Advanced topics (Namespaces and Using Directives, Method revisited....etc). But after the break, I also break my promise by getting a book call Unity in action because somewhat I really want to learn the Unity API in a non distracting way.

    Can I get most of the it without needing to know the Advanced Topics?
     
  26. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,327
    First, you'll get solid understanding only after you've been using the principles in practice for couple of months, if not a year.

    Also, I'd say that solid understanding of OOP is definitely not enough. You need algorithms, data structures and you need a good idea of what happens behind the scenes + what kind of quirks your language of choice has. OOP is just one tool out of many, and it is not perfect. There are people that dislike or reject OOP and have good reasons. With OOP alone it'll be easy to write a lot of junk code.

    You need to program A LOT. Asking questions like "will it be enough" will not get you very far.
     
    Kiwasi and Ryiah like this.
  27. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,142
    Being a competent programmer is less about memorizing concepts and more about being able to learn new ones as needed. Just as one example I wasn't familiar with component-based design prior to learning Unity but once I understood that Unity used it I went and did some research and I'm familiar enough with the concept now that I can use it elsewhere.
     
    Kiwasi likes this.
  28. Azmar

    Azmar

    Joined:
    Feb 23, 2015
    Posts:
    246
    You deserve way more likes on this post. Too bad no new person that wants to learn will never do this lol. I 100% agree with you, I took that path mostly because school forced me to take this path. I also agree with @MasterFrog even though the way he presents it makes people want to hate him.

    I know maybe 20% of Unity stuff, but I know many languages and I just keep to standard programming practices and make a game that way. Anything I need to know on Unity is on a youtube click away, but when I want to know how to do a programming task that is something Unity tutorials cannot offer. People don't realize making a completed game is a difficult task, but making it memory free, 60fps, not burn through your battery, etc is the real task.

    People can argue days on end about Unity tutorials, Udemy Unity tutorials, Youtube tutorials on Unity, etc but I have watched them and I would say most of them are self-taught game dev people trying to make some money. What I mean is, they only know Unity or whatever they taught themselves and lack any experience in low level languages like C. I watch these tutorials that people desperately follow and spend their lives learning from and I see stuff like foreach and scary programming practices that would literally not exist in languages like C for a reason and people have no clue the bad practices they are learning. Heck I joined teams where "break" is a common keyword used in code, coroutines are used for EVERYTHING, and list goes on. Even the scariest part was the asset's I got from asset store on simple stuff like HP bars that people blindly use on every project and it leaked insane amount of memory every second. Practically voodoo trying to talk about code performance with game dev's, even articles on how to improve performance all give the same exact generic tips.

    A famous computer scientist once said "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg.". C# allows you to shoot yourself in the foot and hides away the wounds which is why C# is amazing, but not when you only knowledge base is unity tutorials or books. Accept it or not, the people that don't understand will at one point of game development.
     
  29. Braineeee

    Braineeee

    Joined:
    Nov 9, 2014
    Posts:
    1,211
    @computertech I started programming in high school. My first class was either VB .net or C++, I don't recall which anymore.

    I was pretty good at VB .net, to which I have always attributed to the rigorous text book we were given to learn that language. It had a number of required and optional practice problems. I've searched for something like that ever since, but since I've plateaued in my programming skills I haven't had the need.

    The C++ class had no textbook. Instead the teach gave out these colored packets with instructions and information on the language (basically a tutorial). I was good at those classes, and the teacher actually gave me his textbook! Well I spent all summer that year reading that textbook, thinking that I hadn't picked up much. It actually turned out to be a pretty terrible thing to learn from. Very little to learn from, nothing practical you could apply, just a bunch of nonsense examples and very dry material about datatype value ranges and things like that.

    Now this whole process would have been easier if I hadn't been ill this entire time.

    By the time I'd finished the book I still didn't know how to make anything useful. Command line programs which could use file I/O were about as much as I could achieve. The book (and the class) never really explained any of that. I didn't know what a library was (which was exactly what I needed), a static library vs a dynamic one or any of that ya know really useful important stuff.

    The bottom line is I thought it would be cool and fun to try my hands at learning a language as difficult as C++. I knew from before I took the two classes that C++ was not an easy language to learn. People online had mentioned that fact, and I kind of ignored that piece of advice. I've always been hard-headed and head-strong, I do what I want regardless of how difficult it can be.

    I think that beginning with a language like Java (not JavaSCRIPT) would be a great place to begin. Its very similar to C++in most respects, but much simpler. What will get most beginners is understanding binary, memory, and memory management. Java manages memory for you. It has this thing called a "garbage collector" which destroys anything with no references to them. If you want to create a new object you don't need to use a special keyword, operator or function to reserve memory for it, and then deal with the headaches like memory leaks, security holes, and managing all that memory!

    Java is OOP and so is C++.

    I've not used an interpreted language like Python or Lua very much at all but it can be a bad place to start, though they are easier for the average person to understand because they are so abstract. You don't need to juggle variable's when swapping values like in C, C++, or Java, because the interpreter handles that for you.

    Those languages can teach bad practices and concepts. Start with an intermediate language (I'm not talking difficulty) like Java.

    edit: I wanted to mention there is no bias in what I'm saying. Lots of people will ask "Whats the best language right now?". Unscrupulous people will tell them whatever language happens to their favorite. That's not fair, and it can burn people out if they aren't already geared for this type of thing. With that said, I don't endorse any one language (in fact I find Java distasteful but honestly its growing on me). I merely mention java because you aren't required to deal with so much all at once (memory, architecture stuff etc.). The Java VM handle's all the memory management and portability for you. Being sick for years really made it hard for me to understand those concepts.
     
  30. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    You're wrong on so many levels. You said "Too bad no new person that wants to learn will never do this lol" and you should know that I'm only 5 month in and I've teach myself so much. Ask yourself what did you learn after a year in college before making any assumption that you are not so sure about.

    The people you're talking about probably the people who do not commit enough to their work.
    You're confusing something. When people doing what they love, they don't even think about making money out of it and when you say "most of them are self-taught game dev people trying to make some money.", you clearly can't differentiate between people with passion and people who grab new skill just because they think Flappy bird could made them a millionaire.

    I'm sorry that I had to completely 100% disagree with what you have said. Additionally, forgive my Grammar.

    .
     
  31. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,142
    Yet what have you done over the course of those five months if you're having to ask us if you need serious knowledge of programming in order to be able to write code? Practically everyone I knew in real life who was learning programming was writing code outside of tutorials and documentation within the first week.

    Do you know what else a person who loves a subject does? They practically jump head first into it. An artist will grab a brush, some paint, a canvas and start drawing. A writer will grab pen, paper and start writing. And so on.

    You're right in that there is a big difference between someone with passion and someone who is learning for other reasons. If you're taking this long to get started then perhaps you need to analyze your own reasons for learning and whether this is truly the right course for you.
     
    Last edited: May 17, 2016
    Kiwasi likes this.
  32. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    The question was to make sure about all this thing. And the fact that I made a post is more than to get answer but opinion from different people. Don't you think it a great relieve to see different opinion from different people?

    Writing code is nothing the hardest part is to solve a specific problems that was given.
    You still want to give me a definition of algorithm?
     
  33. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,142
    What's the easiest way to learn if you have enough knowledge in order to write code? Isn't it simply to try writing code?

    I gave you the definition in another thread. Either you choose to ignore my definition or you decided it didn't suite you.
     
  34. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    I didn't say that I disagree with your definition. There are so many definition for anything and I have to accept that.
     
  35. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,327
    Dude, you're seriously wasting your time at this point. Start writing already.

    No. There are 7500000000+ opinions. At some point you need to stop listening to opinions and start working on your task.

    One big issue I often see on forums is that people talk too much, contemplate too much, wait too much, think too much and research too much when all they need is DO something NOW.

    Often people just need to make a step. ONE step. Instead of making the step NOW they waste 6 months researching the best way to make the step, thinking it is somehow very important to ensure that "everything is perfect". In the end some of them never make the step, turn around and walk away.

    Seeing this is frustrating.

    There's no perfect book, no perfect way to learn X, no perfect tutorial and no perfect language. if you don't know something, just get your hands dirty and learn by tinkering. You'll eventually pick up all the knowledge you're missing.

     
  36. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    @neginfinity
    Thank for the advice, I will remember that :)

    But I like learning new thing that why I like reading. I didn't waste my time actually. I learn programming for 5 month and now pause it and pick up Unity.
    You and Ryiah think that I'm wasting too much time asking question but actually I'm just taking a break during learning and go to youtube to listen to some music and browse to Unity to read some post.

    I just understand some code on Raycasting and now I reward myself by taking a quick break and that why I'm here to reply to your comment and listen to some Metallica music.

    Thing only become frustrating when you see no progress. but for me I do make a lot of progress. From nothing to know what is programming and now taking a big step to learning Unity. I can't wait what I am going to learn in the next few year. :D

    If you think that I'm going to turn around and walk away then keep track on me (And you will get bored) and you will see that I'm not going anywhere.;)
     
  37. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    Doing stuff doesn't mean you stop learning stuff. You should be doing both, all the time. "I'm learning" is not a good excuse for doing nothing.

    Here's my advice: Stop caring about "doing things right" and start working on "getting things done".

    My biggest boost at everything (I was going to say "programming", but it really isn't just that) came when I decided to stop caring about getting it right. Before that I'd take ages "planning" things before starting them, and usually not get around to starting because there was always some problem I wanted to solve first. At some point I just decided "whatever, I'll build an imperfect thing as well as time and knowledge permits now, and it'll probably suck, but that's ok because afterwards I'll build another thing, and as long as it's better than the first thing I'll be happy".

    And I did build a thing. And it wasn't great. But I was already happy because I'd already learned so much. And then I did build another thing. And it was better then the first. And I was even happier, because I knew I'd hit on how to actually get good at this thing. I knew it'd still take ages and lots of work, but I was on the path instead of thinking about being on a path later if only I could find the right one.

    Which brings me to my second bit of advice: Don't worry about making something that's perfect, just as long as it's better than the last thing you made.
     
    Ryiah, GarBenjamin and neginfinity like this.
  38. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,327
    Good advice and a good idea.

    "I have not failed. I've just found 10,000 ways that won't work."

    Making mistakes is an important part of learning process.
     
    frosted likes this.
  39. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    There's always a room to improve. I'm glad that I have come this far but some people seem to not appreciate my hard work at all.

    This is not the first time I teach myself thing. I've been a self taught for a long time that make my relative think that I'm genius but actually I'm not, I'm just a hard working person.

    I'm going to quote that. My project keep improving time over time and I see that there are a ton of thing that I need to learn. Just thinking about making bullet spray would give me a reason that there are thing that actually harder than making a character to move.
     
  40. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,327
    "Not going anywhere" means not making any progress.
    Regarding youtube, I think there was a procrastination thread recently.
    And speaking of music, you can listen to it while programming. (I have couple of playlists for when I work - they range from dungeon synth/dark ambient to death metal. Whichever works for current mood/energy level).

    It is just I saw at least few hundred of questions askin "what is the best book", "what is the best way to learn x". People always want "the best", "the fastest", "the easiest" way to do something. The time they spend searching for "the best" in the end is the time they wasted not learning. It is frustrating because I see a wasted opportunity - every time the person could've been programming instead of looking for a miracle.
     
    Kiwasi and JasonBricco like this.
  41. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    That why I pick Unity in action without thinking too much about its quality.

    I used to come up with the idea that want something best, fastest and easiest then I realize there is none.
    Then there is one word that spark in my head all the time, Just commit and you will be succeed and that why I have come this far. I know wandering around is not going to improve anything but feeding the ego and wasting time. All I can do is to commit.

    I want to dedicate all my time to learning Unity but I can only spend 3-4 hour a day with Unity and other 8 hour for college study. I don't want to say it again but I'm a hard working person. I only sleep 5 hour a day and spend my time practicing and learning.
     
  42. TheSniperFan

    TheSniperFan

    Joined:
    Jul 18, 2013
    Posts:
    712
    Yes, C is a low level language. However, you aren't touching any of the low level stuff, if you want to move on to C#.
    I recommended programming something like array-based stacks and queues in C before moving on; Just so you know for yourself that you're ready. When I translated mine to C#, it took three steps:
    • Create an empty C# class
    • Copy & paste the C code inside
    • Update if-statements*
    *C doesn't know booleans, so you use numbers for your logic. It might sound strange, but it's due to the choices of Intel's engineers when designing the x86 architecture (a very clever way btw.). So this step is either making your functions return true/false instead of numbers or changing your if-statements like from "if(function())" to "if(function() != 0)".

    That was it.
    It's what I meant when I said that your goal isn't to become a C-programmer. You're just supposed to use C as a first step, because it is a good, simple language that allows you to learn what's important at the beginning without having to deal with anything else.
    You learn basic logic, controlling the program's flow (if/else,...), writing reusable (functions) and generally get a feeling for how to use a computer to solve a real-world problem by abstracting it and breaking it down.
    After that, you move on.

    Those languages have different strengths and weaknesses which is why they are used in different places.
    C# and Java are used a lot in enterprise environments. The situation there is that, to paraphrase one of my professors, "writing good code (i.e. efficient one) isn't a requirement". You can just tell your client to get an extra-server and be done with it.
    C/C++ are used a lot in restricted areas, where you can't just tell your customers to get an upgrade. From embedded devices where you're restricted in both, memory and CPU power, all the way up to the current consoles where you have to develop games that look better and better on the same hardware. Realtime applications (which games count to) in particular, are those languages' home-turf. Then there are also areas where efficient code simply does matter a lot (think about kernels and drivers).

    I cannot answer that question accurately, because there are too many things I don't know about you, your books, etc.
    But if "namespaces and using directives" are considered "advanced", then you might want to hold off for a bit longer. Those are some REALLY basic concepts I would never consider to be "advanced".
    Also you should know that programming your game in Unity is not what one would call "clean OOP". Unity works with components and your code's design will reflect that. (That is, if you don't make the same mistake I did when writing the "init-system" for my game which was supposed to load all the data like keyboard-configuration and other stuff that is constantly being reused. I wrote this system in a way that made perfect sense, but didn't play nice with the way Unity handles things. Needless to say I wasted hours and eventually rewrote the damn thing to play nice with Unity, rather than trying to make Unity play nice with my design.)

    Blender is the same. The amount of incomplete and simply bad tutorials is staggering. I cannot put a number on "how much I know Unity", but everything I do know about it specifically is from the official documentation. Thanks to the employees who keep it up to date, because a good documentation is not something that can be taken for granted.
     
    Kiwasi and computertech like this.
  43. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,142
    Do you know why that is? It's because your "hard work" has yielded you zero results. You said it yourself in your initial post that you have "made no progress in learning unity".

    No, you're simply stubborn and refuse to listen to what anyone tells you. What you define as "hard work" we define as a complete waste of time. There is no point to simply reading or watching learning resources without following along and completing their exercises. There is nothing hard about that approach. It's a lazy approach.

    What project would that be? Once again I remind you that you said you have "made no progress in learning unity".
     
    Last edited: May 17, 2016
    KnightsHouseGames likes this.
  44. Mattyy

    Mattyy

    Joined:
    Jun 12, 2013
    Posts:
    42
    I believe I can answer this question correctly. You seem to be having difficulty remembering the API. I was also like you when I first started. The first month was really difficult, I followed tons of tutorials but yet I couldn't do it on my own. I even asked here if there is a way by which I can remember the API. The replies I got were make games, just do it!. I did exactly that, I made a pong game. It was very difficult, it took me more than a week and that's because I wan't following any tutorials. I was excited, and I challenged myself to make a breakout game in 3 hours. I was able to do it! And that's how I finally realized I can make games. I didn't know much programming. Variables, loops, functions, classes, and arrays, only were the things I knew. I still don't know many concepts like interfaces and reflection. Yet I was able to make a random maze generator that can generate a maze of any size and a procedural generated roller coaster infinite ride. So do you need advanced programming concepts? Not at all. Also, stop reading books (specially the one you are reading right now), and get something done already on your own.
     
    Kiwasi and Ryiah like this.
  45. tiggus

    tiggus

    Joined:
    Sep 2, 2010
    Posts:
    1,240
    My first Unity game which I released on the appstore has pretty much nothing advanced in it. I barely learned anything about Unity before starting on it but at the end I started to grok the Unity way for my next project.

    I wrote it like a procedural C program in fact with a giant main loop within update() and functions that manipulate all the game objects in the scene. Looking back it makes me cringe a bit but gameplay wise it did everything I wanted it too and my son and his friends like it.
     
    GarBenjamin likes this.
  46. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    For whatever reason, and perhaps mistakenly, people are getting the impression that you're using "learning" as an excuse to not do practical things. In reality both are important - hit the books and the blogs and theoretical discussions and the classrooms, and hit them all hard, but then also have your own projects going on the side.

    If you're already doing that then awesome, you can ignore the people who are telling you to do it. If you're not doing it... start?
     
    jhocking, Ryiah and Kiwasi like this.
  47. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    Are you doing one huge project or a series of short ones? I suggest a series of short ones, because that gives you a chance to try new fundamental approaches to development, game design and software design. A large project that you improve pieces of is indeed far better than no project, and there are things you'll learn from large projects that you won't learn from small ones. But there's also things you learn from finishing projects that you don't learn from constantly iterating on one big one.
     
    Ryiah and Kiwasi like this.
  48. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    You making too much assumption. Stop fighting your own mind @Ryiah. I never said that I never done any exercise. I only said that I can't find a place to apply those knowledge to.

    Reading technical book is not like reading Romeo and Juliet drama fiction book. You can't rush 100 pages in two day. Now, I ask you, how do I recall those knowledge if I never practice it? Do you think I'm just reading what is Array then moving on to something else?

    I'm not just watching videos from Learn section and then go to sleep. I did remake everything I've learn. At that time I just having a hard time understanding what Vector3 or transform class does.


    You're really good at catching people's mistake. You might be a great debugger.
    I made mistake with this one but I already cove it up by saying that English is not my native language and the word choice I use might be confuse some of the people.

    And by saying that I'm stubborn and refuse to listen to what anyone. and you think that define my "hard work" as a complete waste of time. Again, you're making unnecessary assumption that you shouldn't have made. You define my "hard work" then you should define the word stubborn you using also. remember "Don’t make assumptions."

    "The Four Agreements"
    this book is pretty short so take a look at it, it's great.

    “The Four Agreements
    1. Be impeccable with your word.
    2. Don’t take anything personally.
    3. Don’t make assumptions.
    4. Always do your best. ”
     
  49. KnightsHouseGames

    KnightsHouseGames

    Joined:
    Jun 25, 2015
    Posts:
    850
    Is anyone else going to point out that this guy is probably just trolling or should I?
     
    Ryiah and Kiwasi like this.
  50. GTHell

    GTHell

    Joined:
    Jan 5, 2016
    Posts:
    256
    Understanding those API is my main problem, but now I'm good with it. I didn't remember all the API exactly, I just understand what it does. For instance, to move character I need to translate its position the code is transform.Translate() method that take Vector3. That how I learn the API right now.
    No, I'm just remaking the project by adding a modification to it like texture, Scene and interactive object.