Why is making games so hard?

Discussion in 'Unity Gossip' started by Torsh, Apr 27, 2012.

  1. Torsh

    Torsh

    New Member

    Joined:
    Sep 26, 2011
    Messages:
    553
    I come from using Scirra Construct and my years using it. It had its difficulties, such as copying&pasting long codes being cumbersome, but 90% of the time things worked right.

    Now I move onto Unity where the slightest accuracy or inaccuracy tends to matter. Getting the meshes in and right alone is a chore.

    So... I'm kind of looking for inspiration, similar stories, etc. Thanks.
  2. TylerPerry

    TylerPerry

    Member

    Joined:
    May 29, 2011
    Messages:
    5,024
    Errr, you cant expect things to work if you haven't made it right? There is a reason that some game developers earn loads of $ its because they actually do a hard job, most people seem to think the game just makes its self then they test it :)

    That is not aimed at you the title just prompted me to think of that.

    I think that even though it is harder in Unity, the game you make will be of a higher quality then that of Scirra Construct.
  3. Moraleidahgo

    Moraleidahgo

    Member

    Joined:
    Mar 3, 2012
    Messages:
    107
    Well, last year I got into college to study game development. Great course, funny people, interesting stuff to do and learn.
    Every semester we have to create a game demo which is worth 40% of our final grade to basically all the subjects, and the freshman have to create it using Game Maker.
    So, there I was, having never programmed before, RPG Maker being the closest thing to an engine I had ever used, and having to create a game or fail.
    Long Story short, it was the day before the deadline and the game was far from finish. I spent all day and didn't sleep making the game, and the next day it was ready. I was crushed, tired, hating the world, the course and everything in game development. But that moment, when I saw my game running and someone having fun with it, was one of the prettiest moments of my life. That moment I decided I would make a living out of creating games, make a living out of entertaining people. That moment made it all worth it.
    So yeah, it may be hard, tiring and make you wanna commit suicide sometimes, but if it was easy it wouldn't be as fun and rewarding as it is.
    I left Game Maker behind, started studying Unity, got an internship working with it and had again a hard time. But it was even prettier to see my games running in 3D.
    Keep creating man. It is worth it. :D
  4. Torsh

    Torsh

    New Member

    Joined:
    Sep 26, 2011
    Messages:
    553
    Wow. Game Maker is even simpler than Scirra Construct in my opinion (others may say they're about the same though).

    Thanks for the inspiration. I'm not sure a Unity game will automaticallly be of higher quality than a Construct game though.
  5. TylerPerry

    TylerPerry

    Member

    Joined:
    May 29, 2011
    Messages:
    5,024
    No, but if a Construct game has the same assets/principles of a Unity game the Unity game will be better.
  6. Arowx

    Arowx

    Member

    Joined:
    Nov 12, 2009
    Messages:
    2,195
    I'd agree with this I'm still learning been at it a year and Unity is great but it's 3D and just adding that extra dimension to any game and it's a world of difference.

    The hardest thing to learn is to "keep it simple" to start with or K.I.S.S. ( the extra S is to remind yourself not to be silly and make things harder than they need to be.

    Keep at it!

    There's nothing stopping you from doing fun 2D games or prototypes using Construct or GameMaker.
  7. dogzerx2

    dogzerx2

    Member

    Joined:
    Dec 27, 2009
    Messages:
    2,495
    I thought the extra S meant something else.... nevermind :-/
  8. Zethariel1

    Zethariel1

    New Member

    Joined:
    Mar 21, 2012
    Messages:
    439
    Every person identifies the last S as something else :)

    Game-making is hard, but it is entertainment in its own right. You get to create something with an artificial language, you harness the power of the device you run the game on -- you are in control of what happens, you are responsible for it working the way you want it. It is a kind of magic that few can understand (really, thinking in algorithms is a sough after talent).

    When I was younger, I always wished I was a wizard and could do magic. Programming makes me feel like an arcane adept, bending the reality as I please, creating stuff seemingly from thin air. It is a magnificent feeling to create.
  9. wccrawford

    wccrawford

    Member

    Joined:
    Sep 30, 2011
    Messages:
    1,563
    And it's probably as much work as real magic would be, anyhow. ;)

    In lots of ways, gamedev really is like magic. You have complete control over a virtual world, and only a set of (hardware) limitations stops you from doing anything.

    Back to the question, though: Why does it have to be so hard?

    It doesn't. Developers are reluctant to share because it doesn't gain them anything immediately, but it *does* gain their competitors something immediately. You can only afford to share if you're already set for the long run, and that doesn't describe most game dev studios.

    Lately, we have enough raw processor power to be able to make frameworks like Unity make sense. We no longer have to worry about micro-optimizations for medium-sized games, and so a 1-size-fits-all framework makes sense now.

    And open source software like Blender is making it possible to create the art as well. There are cheap (non-free) 3d modeling programs, but they don't really measure up now.

    Game development is easier today than it has ever been in the past, but it's still got a long way to go. There are lots of little things that need to come together to make like easier, like applying BVH animation data to a rigged human model. It's possible, but it's so hard that amateurs will struggle with it. (I'll admit it, I struggled for hours and hours, and failed. I never did finally get it to happen.)
  10. flim

    flim

    New Member

    Joined:
    Mar 22, 2008
    Messages:
    323
    Exactly and fully agree, I always tell my wife that making game is a kind of magic :)
  11. koyima

    koyima

    Member

    Joined:
    Mar 19, 2009
    Messages:
    1,547
    That's why it's so addictive, people that aren't doing it don't understand. It's the POWER, it corrupts us, muahahahahahahha!
  12. n0mad

    n0mad

    Member

    Joined:
    Jan 27, 2009
    Messages:
    3,731
    [​IMG]
  13. KHopcraft

    KHopcraft

    Member

    Joined:
    Jun 6, 2009
    Messages:
    3,221
    I find for the most part its pretty easy. I am sure its different once put on a deadline though.
  14. JRavey

    JRavey

    New Member

    Joined:
    May 12, 2009
    Messages:
    2,377
    One day soon, there will the Magnum Framework. Just move some sliders...then BAM...your game.
  15. TomBrien

    TomBrien

    New Member

    Joined:
    Apr 28, 2012
    Messages:
    79
    I've made Flash games for like 6 years, and writing C# in Unity for the first time is really annoying me. There's no assistance or help or clues built into it anywhere to help you get started, it's just a blank text doc!
    I keep getting errors because I didn't put the semi-colon in to note a new line, or I didn't put a space somewhere, or I set a variable and then didn't use it- all things that would casually automatically clean themselves up in Flash. If this MonoBehavoir has to be named in the script exactly the same as file is named... then why don't those two things just automatically update each other? Or why can't I just write "this" and it knows I'm reffering to the file I'm in?

    Anyway- just saying: a tonne of people are moving into Unity right now so don't worry, you're not the only one in the world who's really annoyed at it.
    Having made a tonne o games already though: It's hard because games are so INCREDIBLY open-ended and complex machines. If making them was easier then they'd all come out a bit less interesting.

    First post! Hello Unity forums!
  16. KHopcraft

    KHopcraft

    Member

    Joined:
    Jun 6, 2009
    Messages:
    3,221
    Sounds like you would be better suited for Javascript.
  17. OmniverseProduct

    OmniverseProduct

    New Member

    Joined:
    Feb 26, 2012
    Messages:
    1,569
    There's the Unity Wiki and the MSDN which is microsoft. Since C# was made by microsoft you can always go there. Check this link out. http://social.msdn.microsoft.com/search/en-us?query=C#&x=0&y=0
  18. TylerPerry

    TylerPerry

    Member

    Joined:
    May 29, 2011
    Messages:
    5,024
    The having to name the class the same as the file is stupid(unless you can actually use it for something i dont know about?) it was so anoying when i started using c# a bit and i couldent copy it from docs without changing "example" to the name of my script :) other then that how would one know if the line ends there? maybe someone just placed it over multiple physical lines but it is still part of one thing?

    Maybe you will need to use that var later so it doesn't delete it.
  19. OmniverseProduct

    OmniverseProduct

    New Member

    Joined:
    Feb 26, 2012
    Messages:
    1,569
    I read somewhere recently (I want to say on the Boo website or in a boo book) that the whole semicolon at the end of a line thing was actually a joke a programmer made when developing a language. When he joked about it, people took him seriously and added it.
  20. TylerPerry

    TylerPerry

    Member

    Joined:
    May 29, 2011
    Messages:
    5,024
    That is similar to the // in a URL Tim Berners-Lee said that they are unneeded and he could have easily made it without them :p

    (would have made life easier without them :()
  21. Eric5h5

    Eric5h5

    Volunteer Moderator Moderator

    Joined:
    Jul 19, 2006
    Messages:
    24,687
    Use Unityscript (AKA "Javascript"). It's like ActionScript 3.

    It does, when you make a C# script it automatically names the class the same as when you first create and enter the script name. You don't need to worry about it when using Unityscript though; in that case the script is automatically a class using the file name and you don't need to specify a class explicitly.

    You rarely need to use "this". Only if you have global and local variables that are named identically, and you need to distinguish between them.

    --Eric
  22. TylerPerry

    TylerPerry

    Member

    Joined:
    May 29, 2011
    Messages:
    5,024
    Is there any reason C# does not do that as well?
  23. KHopcraft

    KHopcraft

    Member

    Joined:
    Jun 6, 2009
    Messages:
    3,221
    From what I have heard, Unity could do this for C# if they wanted to, so there isn't really a reason.
  24. Rico21745

    Rico21745

    Member

    Joined:
    Apr 25, 2012
    Messages:
    308
    This thread close comes close to giving me an aneurysm in some posts :-/

    Regarding C# vs UnityScript:

    C# is a powerful language used widely in the development world. Unity has very little to do with it, if you are having C# problems, you need to learn the language. No amount of Unity-centric tutorials will teach you C#, and if you do not know the basics of programming, don't expect to be able to just sit down and start making a game with it.

    And regarding semi-colons and C#... ugh. If you know how compilers and programming languages work, you would realize that every programming language has some sort of delimiting character or statement, something, to declare the end of a line of code. A semicolon is the standard for C languages and Java, even Javascript (and probably a lot of others I haven't used).

    If you're truly puzzled about semicolons and why brackets and such exist. Read up on compilers. It's not a "joke. Sure, they could have used other delimiters, but compilers and programming languages are not magic.
  25. dterbeest

    dterbeest

    Member

    Joined:
    Mar 23, 2012
    Messages:
    220
    that is actually true. In early languages you had to use a semicolon to mark that this code-line would continue on the next physical line. Someone at microsoft then thought it funny to do that the other way around.
  26. Gigiwoo

    Gigiwoo

    Member

    Joined:
    Mar 16, 2011
    Messages:
    1,517
    Who needs List()[0] anyway? Use C#!

    I started with Javascript, but switched to C3 for my 2nd project. The switch was much easier than I expected. Then I found a whole bunch of C# cause Mono is so widespread. But most importantly, Javascript was a huge pain in the rump when I started using plugins and deligates and stuff like that. Ugh! I should have just started with C#.

    Gigi.
  27. TomBrien

    TomBrien

    New Member

    Joined:
    Apr 28, 2012
    Messages:
    79
    I wasn't bad-mouthing C# or anything, I'm just saying code is super hard to learn so don't freak out.

    The way I've bin doing it up until now I could type like an uneducated goof and the game would play without blinking. Learning this again from the beginning though, there's like a hundred points in that line that would've refused to even test. So learning a scripting language is impenetrable and unforgiving, but you're not the first person to say that, so don't feel like an idiot.

    But yeah, "ugh... If you already knew how this worked you wouldn't all be giving me such a headache right now" is a pretty good attitude aswel, so that's cool.
    Last edited: Apr 30, 2012
  28. tatoforever

    tatoforever

    Member

    Joined:
    Apr 16, 2009
    Messages:
    2,287
    Read yourself up:
    "Copy and pasting long codes..."
    That's not the way to learn programming. You wont get too far like that.
    That's the reason for your thread right?
  29. Torsh

    Torsh

    New Member

    Joined:
    Sep 26, 2011
    Messages:
    553
    Um, no. I meant copying pasting my own drag-and-drop codes. But thanks.
  30. superpig

    superpig

    Top Pomeranian Moderator

    Joined:
    Jan 16, 2011
    Messages:
    2,055
    Programming is about describing behaviour.

    The more flexible your system, the more different ways it *could* behave - so the more precise you need to be to capture exactly which *one* way you want.
  31. Narae

    Narae

    New Member

    Joined:
    Mar 14, 2012
    Messages:
    4
    That was really inspiring to read, thanks man. I will.
  32. Arowx

    Arowx

    Member

    Joined:
    Nov 12, 2009
    Messages:
    2,195
    Then there are the simple behaviours/rules you can add to things that can create some amazing results, e.g. just setting up a NPC to try and stay at a min distance away from others and then move them around and you get flocking behaviour.

    *These videos are the most visually striking versions I can find don't be put off by them they all use very simple rules at their core they are just to indicate what simple behaviours/rules can create.



    Also there are cellular automaton and fractals two systems that use simple rules to create amazing results.





    My point is sometimes with simple rules you can get amazing results.

    Another example would be Minecrafts landscape it uses a 'noise' function (perlin or simplex probably).
  33. superpig

    superpig

    Top Pomeranian Moderator

    Joined:
    Jan 16, 2011
    Messages:
    2,055
    Sure, emergent systems are very powerful. However:

    1) They're unpredictable, which is somewhat at odds with trying to create a carefully sculpted gameplay experience. (Sometimes you aren't trying to do that. That Minecraft is full of unpredictable little weird situations is part of its selling point).

    2) It's quite difficult to come up with those simple rules in the first place.

    A lot of the time, emergent systems are just a form of compression: you know that you want your landscape to have these features and properties and not those features and properties and so you cook up a noise function with the features and properties you want. But you still have to have an understanding of what features and properties you want in the first place.
  34. Arowx

    Arowx

    Member

    Joined:
    Nov 12, 2009
    Messages:
    2,195
    I think it depends on what your aiming for:

    If you want an 'on rails' carefully crafted gameplay experience they are. But you will need the time / people resources to tailor that experience.

    Whereas a procedurally generated system could create a new experience/world every time and with the right safeguards could avoid the obvious pitfalls of dropping the player into a pit or horde of enemy npcs to start with.

    The simple rules are already well understood and used for a lot of systems, conways game of life, noise functions and fractals have been explored in some depth and already adapted to games.

    But remember there is the fact that the game you are making is a set of simple rules, and when your developing it expect it to surprise you only we call these emergent behaviours 'bugs', although sometimes you get a WOW moment when your system will do something cool or quirky.

    http://blogs.unity3d.com/2012/04/02/london-unity-usergroup-10/
  35. stimarco

    stimarco

    Member

    Joined:
    Oct 17, 2007
    Messages:
    697
    Er, no. Not even close. The semicolon was used as a statement end marker for the original C programming language (and its immediate predecessors) because compilers were dumb as a box of bricks back in the very early 1970s. Microsoft didn't even exist at that time.

    The C programming language was designed to be a portable assembly language. (Assembly languages are just one step up from the CPU's native language, known as "machine code".) As every CPU family has a different machine code and assembly language, C was a godsend for creating early operating systems like Unix: it meant you only had to write everything once, instead of rewriting everything from scratch in a different assembly language for each manufacturer's CPU.

    The C language was very simple, so a quick and dirty compiler could be written very easily. This is the reason for all that cruel and unusual punctuation: the curly braces mark the start and end of a block of code and define variable scope; square brackets mark array indices; semicolons spotting where a program statement ends a piece of cake. All this makes writing that compiler—which must be done in the native assembly language for a new CPU architecture—a walk in the park. Such compilers also tend to be very small.

    Once you have that initial compiler, you can then use it to compile a more powerful, more complex, compiler already written in C. This compiler will include optimisation tricks and other fancy features that the original, basic compiler does not, so you then use that compiler to recompile itself in a more optimised form. And that's the compiler everyone then gets to use on the sparkly, shiny, new CPU architecture.

    So there is a reason why C looks the way it does.

    The C programming language proved so popular—it's the language that underlies the entire Cult of Unix as it was specifically designed to help create Unix in the first place—that it has spawned a whole ton of bastard children. C++ and Objective-C are the oldest of those children, and the most closely related: you can write valid C code in either and it will run. Crucially, they could be built using a standard C compiler with some additional layers nailed on, saving a lot of time.

    Java and C# are more distantly related: they share much of the C syntax—all those braces, the requirement for semicolons, and so on—but have one crucial difference: they don't get compiled directly into the computer's native language. They get compiled into intermediate languages which are then compiled at the last minute (known as "Just-In-Time compilation") to produce the final machine code. (Java does not require this final compilation phase: some Java implementations simply translate Java code line-by-line. This is not the case with C# and Unity, which always compile the program into assembly language before it is actually run.)

    In Java's case, that intermediate language is used almost exclusively by Java programs. Microsoft—a company that began life developing programming tools, not operating systems—felt this was a mistake and created their ".NET" technology in 2000. .NET includes an intermediate language suitable for multiple programming languages, including C#, Boo and even Javascript. The "Mono" technology that sits beneath Unity is simply an Open Source port of Microsoft's .NET.

    More recently, the GCC compiler suite used in GNU / Linux and other Open Source environments has been rewritten to use its own intermediate language. This is called "LLVM", and it is used by Apple's own Xcode development tools. Thus the programming world is very slowly moving away from old-school programming language compilers such as the C compiler of old.

    Unfortunately, those changes haven't been reflected in the choice of mainstream programming languages available to us. Of the three supported languages in Unity, two—C# and Javascript—are related to that decades-old C programming language. Boo takes its design cues from Python and is relatively free of those braces and semicolons, so users who have trouble with C# may want to try it.
    Last edited: May 1, 2012
  36. alexzzzz

    alexzzzz

    Member

    Joined:
    Nov 20, 2010
    Messages:
    794
    MonoDevelop: http://forum.unity3d.com/attachment.php?attachmentid=28417&d=1324508362
    Visual Studio: http://forum.unity3d.com/attachment.php?attachmentid=28415&d=1324507954

    MonoDevelop: http://forum.unity3d.com/attachment.php?attachmentid=33284&d=1334346422
    Visual Studio: http://forum.unity3d.com/attachment.php?attachmentid=33289&d=1334351651

    Visual Studio Express is bit less integrated with Unity, but is still more friendly IDE than MonoDevelop. It highlights syntactic and semantic errors. Auto-completion works always in contrast to MD. You place cursor on an identifier or a keyword, press F1, and see MSDN page about it. It just feels more comfortable.

    I write almost like that in Visual Studio. "Almost" because I don't write all the code, half or 2/3 of it is actually written by auto-completion, not me. When I write code, I think about the idea I'm implementing, not about how to implement it or how to write the code properly. Visual Studio helps me a lot.
  37. Zethariel1

    Zethariel1

    New Member

    Joined:
    Mar 21, 2012
    Messages:
    439
    MonoDevelop actually makes me learn some good coding habits, as it doesn't do the work for me (semilocons, autocomplete, etc). Maybe a more experienced user can benefit from the faster IDE, but a noobie can learn a lot with a simpler tool :D
  38. alexzzzz

    alexzzzz

    Member

    Joined:
    Nov 20, 2010
    Messages:
    794
    Could you elaborate? Auto-completion not only saves keystrokes and increases keyboard lifetime, it also shows the stuff you would never know it existed, and encourages to explore it. Just like "tip of the day", but more frequent and less annoying. By the way, Vector3.left, Vector3.back, Vector3.down are still undocumented, but I was aware of them right from the moment I typed "Vector3." for the first time.
  39. rhasami

    rhasami

    New Member

    Joined:
    Apr 30, 2012
    Messages:
    72
    You think game making is hard? mmhh... for me its pure fun :)
  40. AmazingRuss

    AmazingRuss

    Member

    Joined:
    May 25, 2008
    Messages:
    865
    More often than not, Monodevelop ignores the names I want and inserts something irrelevant, so if I forget to hit esc I have to backspace and type what I actually wanted. This does introduce me to new constructs, however :)