Is it possible to start making a game without any experience in programming?

I am a CG artist. I am an experienced 3D modeler and animator but the problem is I don't have any experience about programming. I'm planning to invest time studying tutorials to make my own RPG game using Unity. So is it possible for a beginner to study directly only about Unity engine and skipping very deep study of CCC+ programming (whatever its called)?

Many people say Unity engine is very good and easy to use and thats maybe because they are very experienced programmer but how about somebody like me who is a fan of gaming and has no knowledge in programming and wants to learn to make a game? What are the possible technical challenges or obstacles that somebody like me could encounter? Can you suggest good tutorials or books to boost the learning proceess? I'm willing to invest time making a game but I can't afford years of studying CCC++'s in order to make this game. Please tell me now if I'm just waisting my time. I hope I stated my question clearly.


Unity uses C# and Javascript.

Javascript is VERY easy to use, and really... In my opinion, you could do fine just be going from the examples on the API.


So, I'd suggest, thinking of things you need, and break it down...

So, for a RPG. Um, how about we go with the killing system... So, if you want it to right click on an enemy, and kill it, your player automatically walks over, and starts to attack it.

So, break it down.

You need health. You need damage. You need input from the right click. You need to check if the right click was on a resource (If you allow collecting), the ground (moving), or an enemy (Attack). Now, you have the auto walk. This can be done by just using a rotate to, and move over time, or you can easily make it so the user controlls the player, and you attack on your own, in which, you can have something like, if the user is __ away, and does _ attack, then apply ___ damage...

So, if we break this down further. What you need to know about Javascript is, you have variables, that can be changed. You have input devices (Check API). You have some ray casting, you have collisions, you have many functions for different things.

So, go through the API, and you can easily find stuff for each of these things...

Another way I suggest doing this: (Search something before disregarding it -.-).

And with the keyword Unity3d at the end of anything...

Now, I am NOT saying to just go online, look up exactly what you want and use premade code. What I am saying is go online, see HOW they did it, check the functions/keywords they used, and see how it works...

What this means, go in Unity, make a test scene. Now, add in scripts, change things, debug the scripts, learn what things actually do, not just, Hmmm, I found this script:

var target : Transform;
var distance : float = 3.0;
var height : float = 1.0;
var damping : float = 5.0;
var smoothRotation : boolean = true;
var rotationDamping : float = 10.0;

var targetLookAtOffset : Vector3;     // allows offsetting of camera lookAt, very useful for low bumper heights

var bumperDistanceCheck : float = 2.5;  // length of bumper ray
var bumperCameraHeight : float = 1.0;   // adjust camera height while bumping
var bumperRayOffset : Vector3;    // allows offset of the bumper ray from target origin

// If the target moves, the camera should child the target to allow for smoother movement. DR
function Awake()
    camera.transform.parent = target;

function FixedUpdate() {

    var wantedPosition = target.TransformPoint(0, height, -distance);

    // check to see if there is anything behind the target
    var hit : RaycastHit;
    var back = target.transform.TransformDirection(-1 * Vector3.forward);   

    // cast the bumper ray out from rear and check to see if there is anything behind
    if (Physics.Raycast(target.TransformPoint(bumperRayOffset), back, hit, bumperDistanceCheck) 
              && hit.transform != target) { // ignore ray-casts that hit the user. DR
        // clamp wanted position to hit position
        wantedPosition.x = hit.point.x;
        wantedPosition.z = hit.point.z;
        wantedPosition.y = Mathf.Lerp(hit.point.y + bumperCameraHeight, wantedPosition.y, Time.deltaTime * damping);


Do NOT just come on here, post this script, and be like, hey, what's the problem with this... Edit it, add in some print("HEY"); statements, and see when what is called... By the way this is part of a smooth camera script. Don't know if it works or not...

But I hope this makes sense... Because if you try to help yourself, people here will try to help you =).

Good luck!

When I started Unity - I literally had no ideaaa 'wtf' was going on. But I was really interested in the idea of building a game. I started off just like you, I knew all the 3D designing programmes, and how to work them. Just has no idea about building a game its self.

I just kept sticking to it, and teaching my self through books, online tutorials ... and here! Unity Answers has been amazing to me, without it - I would be lost! Not forgetting the Scripting API that Unity give you - that too, is really helpful.

I went from making a simple scene with exploding cubes, to making a fully working M16 in which you can shoot at the cubes to blow up. All of this soon builds up your experience and knowledge, and I guess its like any other thing that you are trying to learn - you will soon get the hang of it.

Just keep at it - and you'll soon get there! What ever you do though, never show your 'unexperienced' friends your game progress - because to them, it just looks like your making a .. pile of sh!t! And it will put you down -- I've been there, done that! And I then thought I was wasting my time.

But, in the end - its wayyyy worth it!

First, a great tutorial link: How can I learn Unity fast? I also recommend getting Will Goldstone's book listed there - he walks you through creating a simple game, step-by-step, very clearly.

Second (and I could be wrong here :) but I think it might be easier for you to learn Unity programming/development, than you expect. Not because programming is easy - it isn't, and does require work. But given that you're an experienced 3D modeler/animator, you should have a lot of the required mindset for programming. To be good at programming, you need to be:

  • analytical - able to break down a problem into smaller problems, or pieces.
  • detail-oriented, able to get those small pieces to work together properly.
  • a problem-solver - able to "debug" why one vertex is out of place, say.
  • a self-learner - no matter how many tutorials you read, they only teach you what's in them. It's up to you to figure out how to apply that technique to a totally new problem/model.

Based on my (limited) Blender skills, I think these apply to both programming and 3D modeling. Which means you already have the right mindset and attitude to develop good programming skills also.

I think you can get away in many cases in Unity with not knowing too much programming. If you follow all the scriping examples at, you should get a feeling for how the scripting works in Unity and it should make a lot of sense.

Programming is not some sort of voodoo hoodoo that is mysterious and arcane :p It is actually very logical and if you follow enough scripts and do enough tutorials you should be able to do most of the basics to get a game going.

Although to get into complicated stuff sure you'll need the help of an experienced programmer.

Good luck

I am also a graphic artist and I found many difficulties when I started using Unity to give life to my scenes without stopping programmers.

By that time they made a tool to create basic actions from Unity event capture (onMouseOver, Collision etc …). Over time the tool got better and has now been published in the Asset Store: Unity Asset Store - The Best Assets for Game Making

As a starting point to begin with Unity is very good and has helped me to start learning to program and manage my own events in JavaScrip.

Good luck!