Jump to content

  • Log In with Google      Sign In   
  • Create Account


nesseggman

Member Since 09 Mar 2010
Offline Last Active Jul 12 2014 05:59 PM
-----

#5157103 Seems like I can't do anything without tutorials

Posted by nesseggman on 30 May 2014 - 11:30 PM

You won't memorize the entire method of how to do something on just one walkthrough with a tutorial anyway, so it's normal to have forgotten stuff.

 

Instead of immediately jumping for a tutorial, try at least coming up with an idea on your own. Programming isn't so much typing code and memorizing languages and engines as it is problem solving and creating solutions. The language and engine are just tools that assist you with that. But the actual solutions you come up with in your head are the real 'program' :)

 

It may seem intimidating, but it's good to fail. You can't get better without failing first. Just try to come up with the idea, and then use the Unity manuals and documentation to try to find a way to do it. Until you get really used to Unity and have a lot of experience with it, you might not really know where to look, so it will be really hard at first.

 

If you think you've found something that works, go ahead and put it in your project! If you can't come up with a solution, or you think yours is really messy and probably shouldn't go into your game, try looking up a tutorial. Also, think of tutorials more like examples rather than actual lessons on how to do things. What you should be taking from them is the general concepts. You can apply them to all kinds of situations!

 

And, don't feel bad that you have to look something up. Even the most experienced programmers still look up stuff in the documentation for languages and engines. The more you do it, the more you'll memorize, but no one expects you to memorize every sing keyword and function and monobehavior and etc. It's normal to have to look it up. So if your problem is that you don't remember the exact thing you're supposed to type, that's completely normal and not even a beginners' thing. A lot of people keep a reference list of the stuff they need to remember the most. Especially when you jump between languages with pretty different syntax, it's nice to know stuff like... how a for loop works or something. So just have a little notebook with the most common stuff like that, or whatever.

 

And you will need tons and tons of practice before you just come up with solutions with ease. In the beginning, you're going to have to think about it a lot, and will probably come up with plenty of crummy solutions along the way. It's totally fine!!

 

I guess what I'm saying is don't feel bad or feel like you're failing. You're right on track and you're doing exactly how you should. The best way to grow is to challenge yourself, so instead of immediately falling to a tutorial, try your own solution first, then go to the tutorial. This is normal! Even pro devs talk about their solutions with each other to get new ideas (that kind of thing is why forums like this exist!) so it's normally to learn from other people, whether it's a tutorial or whatever.




#5144275 Learning Unity

Posted by nesseggman on 04 April 2014 - 01:20 AM

So to program a game with Unity I need to learn C# and then also Unity features ? is that correct?

 

Where can I find good C# tutorials ? And what program do i need to apply C# on a Mac ?

You can also use Java in Unity (doesn't have to be C#) I don't know a good resource, becuase I learned C++ first and then just picked up C# by using the documentation for it (since they're quite similar in context) and playing around with it and troubleshooting. Oh, I do love Microsoft's official tutorials (the ones with Bob Tabor).

 

Here, I went and looked it up:

 

http://channel9.msdn.com/Series/C-Sharp-Fundamentals-Development-for-Absolute-Beginners

 

I have no idea how good it is, but I used his tutorials to get into Windows Phone development and they were great. He's easy to listen to and usually explains things in enough detail to take in without having to repeat the video or anything.

 

Codecademy.com is a great for complete beginners to coding. Use the Java course if you're wanting to get into C# right away, but honestly I'd just stick to Java since you can use that in Unity instead of C#, and C# is Microsoft-focused and meant to be used on Windows. It's not really appropriate for programming an iOS game anyway. Someone correct me if I am mistaken on this, though, because I don't touch Apple products.

However, I would strongly suggest just learning programming (in general) and game design and programming in quite a bit of detail before moving onto Unity. Make at least one graphical game without an engine, just using gaming libraries or something, before using an engine. I can't stress this enough! In the forums for popular engines like Unity and GMS, there are so many questions asked that show that people have no idea what the engine is even there for and how games work in general. So we pretty much have to explain a LOT more to them than really needed, and we're explaining concepts outside the scope of the engine. Which is fine, the forums are there for community help, but they will encounter more and more problems in the future until they understand these kinds of concepts. Things like object-oriented programming, game loops and updates, etc.

Plus, if you're wanting to develop for a platform like iOS, you need to learn how iOS programming works. Each platform has its own structure that you'll need to understand that is different than programming for your home computer (which is probably what you'll be learning with at first!)

Using a game engine like Unity is a lot like using professional music composition/notation software. You can learn how to use the software all you want, but if you don't know how to compose music, you won't get much out of it. Even if you learn how to notate music (which is kinda like simply learning basics of a programming language), actually making a musical composition will be difficult. You have to understand music theory and actual composition before you can use the software to help you actually compose a piece.

 

And depending on the type of game you want to make, you may consider other engines. Many engines are good for iOS games (as it's a very popular platform). Unity is great for physics-based action-focused games, and especially 3D games (though it now has 2D game structure built-in, too!). But other engines may be better for other things. I feel like turn-based/menu-based games or games that require no physics like SHMUPS are more easily constructed developed in something like GameMaker Studio (though it costs money, compared to Unity, which is free, and overall more fleshed-out), though GMS has a lot of other downsides. Of course, it's not impossible to make whatever you want in Unity, but it's not always the best engine for every project. Once you learn about coding and game programming, learn about many engines that are compatible with iOS and see which work best for whatever project you want to take on. Once you understand the basics, you'll be able to make a more educated decision on what engine you want to use. You may even decide you don't want to use an engine at all and can just use the toolkits provided by Apple to make your game in a more "from-scratch" format :)




#5095400 [SOLVED] Cutting up rectangles -- RNG giving predictable results?

Posted by nesseggman on 20 September 2013 - 04:15 AM

(tl;dr: I was doing some BSP division of a parallelogram and getting undesired results, and since this was my first time really utilizing recursion in a meaningful way, I thought the problem was in my implementation... turns out it was just my RNG was giving the undesired results only when the program was run at normal speed, rather than stepped through. Declaring the System.Random object with program scope, rather than within the function using it, solved this... yay X_X)

 

I am attempting to cut a rectangle into two parts of random size at random direction (either horizontally or vertically). Then take each of those child rectangles and cut them... and keep doing this until the rectangles are "too small to cut."

 

I have a rectangle class that holds the minimum x and y in the rectangle, as well as its width and height (so all four corners can be calculated with this).

 

The plan is the create an array of something like x & y coordinates and "fill" each of the final children into it, to create "areas" to be used in random dungeon generation. Right now I'm just trying to get the array to fill up with numbers that will display as rectangles.

 

I'm pretty sure the rectangles are dividing properly, the problem is getting the final rectangles into the array. I've been storing all the rectangles in a list, and then checking through each rectangle in the list. If it has no children, it will then search through every 'node' in the array, and if it falls within the rectangle, it will assign it that rectangle's index number from the list (so that each rectangle now is uniquely numbered and "graphed" in the array).

 

I don't think I'm properly extracting the smallest of the children from the array... either that or my rectangles are not actually being created properly.

 

I've gone through step-by-step, and checked all the variables at the end. There are so many rectangles I'm not sure really what to look for. The final display also seems to always be cut horizontally or vertically, even though stepping through, there are cuts of both directions aplenty.

 

I've been at this for a couple days now, and this is the best I could come up with:

    class Program
    {
        public static int DUNGEONSIZE = 8;
        public static int MINSIZE = 5;

        static void Main(string[] args)
        {
            int borders = DUNGEONSIZE * MINSIZE; // create the dungeon's width and height
            int[,] dungeonSections = new int[borders, borders]; // create an array to store leafs
            int[,] dungeonMap = new int[borders, borders]; // create an array to store map (floor, wall, hall, etc.)
            List<Leaf> leafset = new List<Leaf>();

            Leaf trouble = new Leaf();


            MakeLeaf(trouble, 0, 0, borders, borders);

            Split(trouble, leafset);

            for (int i = 0; i < leafset.Count; i++)
            {
                if (leafset[i].firstChild == null && leafset[i].secondChild == null) /* if the leaf has no children,
                                                                                      * label every point inside of it
                                                                                      * with its index. */
                {
                    for (int ii = 0; ii < borders; ii++)
                    {
                        for (int jj = 0; jj < borders; jj++)
                        {
                            if (ii >= leafset[i].minx &&
                                jj >= leafset[i].miny &&
                                ii <= (leafset[i].minx + leafset[i].width) &&
                                jj <= (leafset[i].miny + leafset[i].height))
                            {
                                dungeonMap[ii, jj] = i;
                            }
                        }
                    }
                }
            }

            for (int i = 0; i < 41; i++)
            {
                Console.Write(".");
            }
            Console.WriteLine();

            for (int i = 0; i < borders; i++)
            {
                Console.Write(".");
                for (int j = 0; j < borders; j++)
                {
                    char x = (char)dungeonMap[i, j];
                    Console.Write(x);
                }
                Console.WriteLine();

            }


            Console.ReadLine();

        }

        //Split will take a leaf and continue to split it until no more splits can be made. It stores the children in a list.
        public static void Split(Leaf leaf, List<Leaf> list)
        {
            if (leaf.firstChild != null) { return; } // abort if already split
            if (leaf.height <= (MINSIZE * 2) || leaf.width <= (MINSIZE * 2)) { return; } // abort if too small

            Random rnd = new Random();
            bool horiz = (rnd.Next(2) > 0) ? true : false; //decide if split is horiz or vert

            leaf.firstChild = new Leaf(); // initialize leaf children
            leaf.secondChild = new Leaf();

            if (horiz) // split into children
            {
                int cut = rnd.Next(leaf.width / 3, leaf.width - leaf.width / 3);
                if (cut < MINSIZE) { cut = MINSIZE; }
                if (cut > leaf.width - MINSIZE) { cut = leaf.width - MINSIZE; }
                MakeLeaf(leaf.firstChild, leaf.minx, leaf.miny, cut, leaf.height);
                MakeLeaf(leaf.secondChild, leaf.minx + cut, leaf.miny, leaf.width - cut, leaf.height);
            }
            else
            {
                int cut = rnd.Next(leaf.height / 3, leaf.height - leaf.height / 3);
                if (cut < MINSIZE) { cut = MINSIZE; }
                if (cut > leaf.height - MINSIZE) { cut = leaf.height - MINSIZE; }
                MakeLeaf(leaf.firstChild, leaf.minx, leaf.miny, leaf.width, cut);
                MakeLeaf(leaf.secondChild, leaf.minx, leaf.miny + cut, leaf.width, leaf.height - cut);
            }

            list.Add(leaf.firstChild); // adds the children to the list
            list.Add(leaf.secondChild);

            Console.WriteLine("Children Made!!");

            Split(leaf.firstChild, list); // attempt to split children, if possible
            Split(leaf.secondChild, list);
        }


        //MakeLeaf will set a leaf's variables.
        public static void MakeLeaf(Leaf leaf, int minx, int miny, int width, int height)
        {
            leaf.minx = minx;
            leaf.miny = miny;
            leaf.width = width;
            leaf.height = height;
        }

    }

    class Leaf
    {
        public int minx;
        public int miny;
        public int width;
        public int height;
        public Leaf firstChild;
        public Leaf secondChild;
    }

Sorry if it's confusing... I am a noob.

 

I really don't know how to 'debug' this and figure out what is going wrong ._. I can't tell where exactly it is messing up. Going step-by-step, once I get to the for-for-for loop with the list and array, I don't even know what I'm looking for anymore.

 

EDIT1:

 

You get some weird chars if you use the char as is... I've been adding 65 to it to get roman letters. At least I'm always making a 40x40 square now. But it's always giving me either only horizontal splits or vertical splits in the visual representation.

 

I think it has something to do with the check for them being 'too small' (when it decides to split). I had it do the same check before saving the children to the list, so that it only saves the children who will fail the check... then I stopped the program at the array distribution and all the leafs in the list had a height of 40.

 

But I'm not sure what's wrong with it... I've tried changing it to other things and it either crashes or gives a similar result? I just want it so that it will refuse to split anything with a width or height less than 2(minsize).

 

EDIT2:

 

Okay, so I finally decided to pull out the big guns... I got couple sheets of paper out and mapped out the square it creates, as well as writting down every single leafs's four variables in a tree... marking the "too small to cut" ones on my graph.

 

Normally I woudl skip to certain parts of the code and check the variables... or step through to see if it was creating stuff right, then exit the program when it was working properly.

 

Well, I went step by step through the ENTIRE THING this time. It cut up the square perfectly into nice random areas, looked really good on my graph that I drew. Then I watched it go through the three embedded for loops to assign the leafs' index number to their contained coordinates. After it did leaf 4 and leaf 7 properly, skipping all the proper leafs, I skipped to the drawing part. I checked the array dungeonMap and compared it with my coordinates and graph I wrote. Everything was perfect! I started to think.... there's no way the drawing part is wrong... I watched it draw character by character... I realized it was doing it right.

 

I let the program run its course and lo and behold, it drew the right thing.

 

I was baffled. When I watched parts of the program, they responded perfectly and did what they were supposd to. When I watched the ENTIRE PROGRAM step-by-step, it worked perfectly and even gave the desired results.

 

But when I just run the build without pausing or anything, it doesn't give the desired results...

 

My head felt like it was going to explode.

 

Then I remember reading in the C# documentation on msdn about System.Random... and it said something about how if the numbers are generated too quickly/close to one another (since it's using the system clock), you can get predictable results.

 

So I thought... maybe when the program is running at "full speed," it's only generating all true or all false (different depending on run time of the program) for the "horiz" boolean in the Split function.

 

Every time I step through the program slowly, it creates everything perfeclty and provides desired results. It only gives the stupid results when I run the build normally.

 

This would also explain why even when I only stored 'baby' leafs in the list (that's what I call ones that can no longer be split) it was still only storing ones with 40 for width or height (because it was only cutting in one direciton, and eventually they'd all have the opposite edge be less than MINSIZE*2)...

 

I'm going to go try to research how to counter this (like I said, I'm a noob!) and add something to see if I can make it more random and see if it works. If anyone knows a solution, feel free to post it here, since this topic is already here and all. After I try it, I'll see if it works, and let everyone know.

 

Sorry to be such a pain!

 

EDIT3: I had it write the value of horiz to the console after every time it decided it... it was either always true or always false. I have a feeling this is the problem. MSDN's documentation for System.Random class is not helping... it just says to avoid this, only use one Random, which I'm already doing. EDIT4: Oh, now that I think about it, I guess I'm technically creating new Randoms every iteration/recursion....

 

EDIT5: Solved!! That was indeed the problem. I just declared the Random rnd outside of the function and now it works perfectly. Lesson learned, if you're going to be using a lot of RNG, try to make sure you're only creating one System.Random.

 

Wow. This took me days to figure out because I was looking it all the wrong places.

 

Well, I'll leave this here for anyone who might be able to learn from it.




#5030885 Anyone else run into the "idk what programs to make" issue?

Posted by nesseggman on 10 February 2013 - 07:39 PM

There are plenty of 2D games you could 'clone' for experience purposes, like Pong (as Bacterius said), Tetris, Dig Dug, Galaxian, Asteroids, or just a simple platformer.

 

They may not be the awesome, huge 3D projects you want to make, but they're much more realistic.

 

Hell, if you really can't make a 2D game whatsoever, just start programming for your 3D game ideas, and get as far as you can get with them.  You'll learn a lot, even if you fail to finish the project, and you'll probably feel more motivated because they're your little babies you're working on, not just clones of other games.

 That last paragraph is the most important thing in this thread.

 

Just start trying to make what you want to make. You'll learn so much from doing that. I piddled around learning stuff in the way I was "supposed" to, and then just started trying to make a game I really wanted to make, even though I wasn't "ready" for it. I learned more than I ever learned previously by doing that.




#5030327 Motivation

Posted by nesseggman on 09 February 2013 - 03:01 AM

I have this kind of problem with procrastinating on things, even when I like to do them. It's hard to find the motivation to do it. The thing is, I really enjoy doing them once I start. Sometimes, I'll wake up in the morning and not want to start working on my project. I will do this and that all day, usually wasting time online, and just never get around to STARTING working. Even though I'm not even really enjoying myself while I'm procrastinating, I'm just kind of... passing time while half-worrying about how I need to be working on the project. But then once I start working, I enjoy it and get really excited and work really hard and accomplish a lot. Then I got to sleep and do the same thing the next day... and I tend to get worse and worse to where I'm spending entire days doing nothing and not working... even though I'd much rather be working. I just have this problem with STARTING.

 

I think the motivation I need is to actually start. I luckily can just tell my husband to force me to work, which he sometimes does, but often he won't say anything lol. But I mean I can't really hold him responsible.

 

Anyway, I think the first step is to figure out which part you're unmotivated. Do you just hate the starting--where you don't want to sit down and study or work, but once you do, you're fine? Do you hate a certain part but like other parts? Do you work a lot and get burned out?

 

If you figure out what aspect you feel unwilled about, it will help pinpoint what you can do to get around it.

 

If you just hate everything about it, perhaps, like said, it's just not your thing, and honestly you will never find that motivation... If you don't like something, you don't like it.




#5014953 How easy is it to collaborate on a game remotely?

Posted by nesseggman on 27 December 2012 - 08:38 PM

I have not worked on a game collaboration, but I have worked on other collaborative projects (comics, anime fansub, etc.) online. The success is, of course, determined by the least productive member. If you have a member who simply will not do their job, you can't finish your project. Because your main method of communication is the internet, someone can suddenly "disappear" and you'll have no idea if they're coming back or not.

 

Even though I know your question was for the future, here are some things I suggest:

 

* Set up a forum for your collaboration.

* Get MANY contact info from the members. Have them give you a phone number and have everyone involved trust giving out their phone number. People are more likely to at least respond if they're going to bail if you have their phone number.

* Don't collaborate with someone you wouldn't trust giving your own phone number to. Collaborations require trustworthy people anyway.

* If you're leading the project, give report deadlines... like everyone MUST report their progress twice a week (on specific days, by specific times).

* If you use messengers regularly, try to get everyone to actively keep their messengers on and talk to each other casually. Always ask how the project is coming along and talk about your personal progress. People will work harder if they feel everyone else is working hard, plus they will not want to say "I have done nothing" every time.

 

In the end, I think it's best to collaborate with people you know, rather than strangers, but it's very possible to collaborate with strangers and complete big projects. Think of anime fansub groups who have oftentimes a separate person do each of these things:

 

* Rip or find "raw" episodes.

* Typesetting

* Translation

* Quality Checking (usually several people do this)

* Video editing, etc.

* Publishing/distributing/webhosting/whatever

 

Usually this kind of collaboration would have at least 5-6 people working on it (though some groups "combine" talents and only have a couple people, but still) and they can do like... 200 episodes of some long series and complete their project :) So it is very possible.




#5012305 Does making a game like fruit ninja/angry brids require a large team

Posted by nesseggman on 18 December 2012 - 09:17 PM

Guys, I'm not saying to absolutely ignore Adobe's products, just to try out the stuff that's available for free, and then update later if you think it's necessary. And if you start out using stuff like The GIMP 2, you get used to the way it does things, and it's easier to transition to Photoshop (than the other way around) since Photoshop makes a lot of things a little easier.

The author of this topic, from the sound of it, is not a professional artist. They just want to be able to whip together some basic artwork that they can put in their game to get it running, for now, and spruce it up later. It sounds like they are not even all that great at art (they've mentioned more than once that the graphical design is not their strength). Buying the most expensive tools will not make your art any better. If I give a baby fingerpaints, the picture they make is going to look pretty much the same whether I give them some scrap paper or a $1000 canvas to paint on.

I'm not saying the author of this topic is a fingerpainting baby or something. I'm just saying that Adobe's products are for committed professionals, and there's no reason to purchase them prematurely if something else will suit your needs perfectly fine.

EDIT: And you can make very professional art in free art programs. They're usually just a little more difficult to do the more "special effects" kind of stuff with. But I mean, people paint with traditional tools with no computers at are, and that's even less convenient than a computer with free software, and that's just as professional! I've done plenty of graphic design projects for companies and stuff using tools even as simple as OpenCanvas (which is pretty much MSPaint deluxe). I'm not trying to say I'm some amazing artist, but how you use the tools is the most important part.


#5012169 Does making a game like fruit ninja/angry brids require a large team

Posted by nesseggman on 18 December 2012 - 01:24 PM

You don't need to get Adobe $$$$$$ products to make good art


We should all come with $$$$$$ after our names perhaps ? Then it would be clear that we all want to make money !

Adobe make good software, I have a copy of Photoshop installed which I bought for $185 from my university bookstore. I use it all the time. If the OP is a student then it wouldn't be much to spend, and it's not a waste of money.


The $$s were not meant to be part of the name. To rephrase:

You don't need expensive or costly Adobe products to make art.

I'm not saying the products are bad. I'm saying they're for dedicated professionals. Adobe's art software is superb; I'm not denying that. I just don't think a hobbyist programmer who wants to be able to make some art with something better than pbrush.exe needs to go out and buy the most expensive professional art software available. There are plenty of free options available, and they cost nothing. Spending money on something you don't need is wasteful, even if that purchase would be valuable to someone else.

I think it's a lot more reasonable to start with free art software and then upgrade to an expensive, more professional package only if you find the need to. There's no point in buying software, even if you get it cheap, if you're just going to do the same stuff you can do with the free software.


#5012075 Where should we(me and my friend) begin? From 0 programming knowledge

Posted by nesseggman on 18 December 2012 - 09:15 AM

I think it's best to start learning programming through making basic stuff like console applications and whatever, because you really learn what programming is all about that way. I think a lot of people will start learning coding by going through "unity tutorials" or whatever, but they're learning stuff that's more like... learning how to drive a car, but you're still not a mechanic (if that makes sense). But what you're wanting to know is how to be the mechanic. You're wanting to learn how the stuff you're doing really works, not just how to operate it at a very high level.

If your friend and yourself are really dedicated to making a game together, you should both work on learning the same language. You could both learn C# and Java, of course, so maybe you could both study your own now, then when you switch (switching programming languages is really easy once you understand programming concepts) you can help each other learn the ins and outs of your own languages.

Also, since switching languages is easy, you might want to start out just learning an "easy" language like Java before C#. To be honest I don't have as much opinion as some people about what language is the best to learn first... people will argue about it though. But don't try to just jump into unity before learning the basics of programming first. Learn about variables, pointers, objects, etc. and you will understand how a program does what it does, and how it communicates with the computer. And then when you start using Unity it will make SO much more sense and you will be able to do a LOT more with it.

And don't worry, it doesn't take long to learn the basics of programming. That's just where I think it's the best to start.

And if you're wanting to make 2D games, you don't need to use Unity. A big part of Unity is it is a 3D game engine. 3D engines are difficult to program on your own, so now it's done for you. 2D games can be easy to make on your own just using a language and a graphics library/API. There are also 2D game engines out there for you to use which would be more helpful than Unity since they are made specifically for 2D games. You can use Unity to make a game with 3D graphics but 2D gameplay, though.


#5012071 Does making a game like fruit ninja/angry brids require a large team

Posted by nesseggman on 18 December 2012 - 09:04 AM


* Coordinate all of the design into a polished game (game designer)


Thanks for the reply. I think I should start out by making the game with basic graphics and simple animations done in photoshop/paint. Once I have the game design down, I will spend a lot more time on polishing it and making it attractive. I will probably end up buying a graphics tablet and a copy of adobe creative suite and just work away with some art/graphics.

Does this "game designer" do any programmig related work?



You don't need to get Adobe $$$$$$ products to make good art. There are plenty of free, open-source art programs out there. Especially if you are not already a professional artist, don't waste the money. If you get really into art and you are doing it on a highly professional level, you might want to buy some Adobe art software. But it's really not necessary unless you're really at the top of the game.

And a the game designer/coordinator work I mentioned doesn't have to be one person nor do they have to be the programmer. Everyone can work together to decide those things, or one of the other people working on it can do it, or you can do it, whatever. Just someone who knows what makes a good game, and they can say "Add a more chimey sound effect here" or "the transition between these two screens could be smoother if you did this" or whatever. Sometimes there is a person who does nothing but that, but often it also can come from everyone involved kind of pitching in ideas (talking about amateur teams, of course. I think in the professional world they would have more "set" jobs for everyone, but IDK)


#5012060 Does making a game like fruit ninja/angry brids require a large team

Posted by nesseggman on 18 December 2012 - 08:44 AM

Any game can theoretically be made by a single person, it will just take a lot longer. Also, that person needs to be able to perform all the tasks necessary to complete the project. If you want to make a game like Angry Birds, on that calibur, for example, you will need people who can do the following things:

* Program all parts of the game (programmer)
* Design characters and objects for the game (character designer)
* Draw art and animation frames (artist)
* Compose music that fits the game (music director/composer)
* Design puzzles and levels with intrigue (level designer)
* Coordinate all of the design into a polished game (game designer)

Simply making the code is not enough. The design aspect of the game is what is most important. Angry Birds was not popular because someone programmed it. It was popular because it had a lot of polish, catchy music, cute characters, vibrant graphics, and level designs that interested people in playing and challenging their friends to high scores. You need all of those things to make a really good game.

It is possible that one person could do all of those things. It's not hard to find someone who can design characters and draw the art for them as well. I am a 2D artist who knows a bit about music composition as well, so that's already a few of those things down. Designing the levels is probably the hardest part, IMO, because you have to make sure it is fun.

You will still need people to test the game other than the people who made it, so there will always be more than one person. But you can always let your friends and family test it, find people online who want to play your beta and offer feedback, whatever. As far as the production part goes, though, you will need someone who can do all those things. You can do it all yourself if you are really good at art, music, design, etc., and of course, that would take longer than if you had multiple people working on it, because they could get it all done at once.

But yeah. Just programming the game is not all that goes into making a game.

If you make a game that truly is fun and interesting, even if it looks ugly, you may be able to find someone who likes it enough to offer to do some better art for you. I remember some game on Steam Greenlight that looked horrid because the person drew it themselves in Microsoft Paint with a mouse it seemed, but the game concept was very fun and people offered to do the art for it. I don't know if they offered for some kind of commission/contract deal, but they got an artist simply because they had a good game design.

And yeah, the game design is important, too. Not just the way it looks, but the way it plays. You could code the most impressive physics engine in the world all by yourself, and it would mean nothing for a game if you didn't make a fun game with it. No matter how great your physics and how complex your prototype, if your game is boring to play, no one will care.


#5011187 Problems completing projects, Am I reaching too far?

Posted by nesseggman on 16 December 2012 - 12:34 AM

Try doing smaller projects first. I mean, not like "do small parts then build on them until you get the big project done" but I mean like... do SMALL projects first. Think of an idea you have for a really cool game you want to do... but something you could code in just a few days of work. Like, a shmup that only has one "level" but the difficulty increases as time passes, and the point is to get the highest score you can before you die. Find your personal twist on a simple idea like that, get excited about it, and start working. When you actually finish a project, you will have a good feeling about it, and it makes you wan to actually finish more projects. If you try to take on big projects first, even if they are well within your abilities, you can lose motivation because you have a sense of intimidation or feel overwhelmed. You also may get excited about another project before you finish and forget about the current one. Another suggestion is to keep a list of all projects you want to work on, and feel free to add to your notes and designs for them when the good ideas hit, but force/promise yourself not to start a new project until one is done. Then part of the motivation for the current project will come from the desire to start new ones. I have a similar problem with not just games but everything in life I try to do pretty much.


#5008313 The requirements for making a game.

Posted by nesseggman on 07 December 2012 - 07:53 PM

To make a successfull game it needs to be creative. Creative can be story, models, graphic style, gameplay, texture or any combination of these (plus all the other stuff I forgot).

Look at Limbo, it didn't had much of a story and the gameplay wasn't complicated but it had a creative graphic style.


This can be argued. "Words With Friends" is a very successful and popular casual game, however it is not creative at all. It uses rules and design that were copied from Scrabble. The board bonus spaces are shuffled around a little, but certainly not in a creative way. It also allows you to play online, which you could say is its biggest appeal; however, you could play Scrabble online before Words With Friends.

So if Words With Friends has absolutely no creativity, how did it become successful?

You can also argue the definitions of 'creative' and 'successful'... which I think can easily become very subjective.

I think there are many factors that can cause a game to become successful, and not all are required: marketing (hyped games with ads everywhere will have more success than without), accessibility (a game EVERYONE can play will have more success than a game only certain people can play), novelty (games that are unique and intriguing can gather success), branding (Pokemon White 2 is not terribly creative if you look at Pokemon Red/Blue/Green/Yellow/Gold/Silver/Crystal/Ruby/Sapphire/Emerald/FireRed/LeafGreen/Diamond/Pearl/Platinum/HeartGold/SoulSilver/Black/White/Black2... but it still is extremely successful!), etc.


#5008299 The requirements for making a game.

Posted by nesseggman on 07 December 2012 - 07:14 PM

I think outside of raw coding, the requirements for a game will differ depending on the game.

For example, chess is a game, even a computer version of chess. You don't need 3D graphics or a story to create chess. Of course, chess is a game that is already created... but I mean, let's say you created your own simple board game akin to chess. You do not need 3D creativity, art and design, or a story to create this game.

Games can be fun without all of that stuff. Many people have a lot of fun with logic puzzles. Sudoku is a grid with numbers. This is very basic, but still enjoyable without any kind of flashy graphics or story. In fact, most people would probably agree flashy 3D graphics and a story would take away from the fun that is had by solving a logic puzzle like sudoku.

So, at the very core, the most that is needed for a game outside of the program, is the rules of the game, and some sort of basic visual representation of the game. That is all that is needed, I guess.

Actually, thinking about it, in theory, you don't even need a visual representation if you somehow created a game in which people respond differently to different audio clues. Like, imagine a game like Simon in which two people had a musical instrument (or even just their singing voice) and went back and forth adding notes rhythmically to a string. Actually, my brother and I play a "game" like this when we both have drumsticks near us (we are both drummers) in which we will tap a count or measure of a rhythm, then the other copies it and adds a unit, and we keep copying the string until one of us messes up. Usually we both end up forgetting the "correct" response, but the game is just in fun so it doesn't really matter who wins. But this could be an idea of a game concept in which there is no visual component at all.

Of course, people would much rather see some visual measure of success and instruction...

But I guess it comes down to how you want to define "game." Since you can get pretty loose with that definition, and I assume you're talking about what all is required for a computer game... I would say the only absolutely necessary requirements would be:

* A program that includes machine and user interaction
* Game rules and structure

And that's it.


#5008067 Beginner needs some direction for his idea

Posted by nesseggman on 07 December 2012 - 03:29 AM

Even though I recently made a post like "omg I don't know how to do anything" I feel that I can answer this and give you some direction. There's not any one particular thing to recommend, since there are many paths to the destination you seek. I think if you're wanting to make an app like this, you will need to learn how to make apps and games on your own with programs... don't try to get a program that makes games for you or whatever (especially since you're wanting to build a mobile app, and especially since you seem to have very specific ideas about how you want certain aspects to work). Even though it seems like a lot of work, learning programming is easy and fun and you can do it in your spare time, and getting to the point where you can make a mobile app will not take nearly as long as you think. I look through mobile apps on my phone all the time and you can definitely tell all kinds of random people are just making these in their spare time for fun... and you can do the same. Now, making a really nice-looking one will take more effort, but the concept is still the same. Polishing your project is what makes the difference. And that doesn't require really any more programming skill or anything, just ideas and designs.

First, you will want to learn how to program and learn the basic concepts of programming. I don't know how much you know about programming, so I'm going to assume nothing at all. But if you already have some programming ability, just read through this and skip all the parts you have done hahaha.

When you learn about programming, you won't just learn how to make a program, but WHY you make programs and what all they can be used for. As you learn this, you will naturally start to figure out solutions to how you can make your mobile app you are interested in.

Of cousre, you will not start with mobile app... you will probably start learning programming by making computer console applications. By doing this, you will learn concepts of programming and building a program and problem-solving using programming. Your app that you want to create is your problem, and a program will be the solution. You will learn how to ask yourself what all you need to get the job of creating the app done, and then create a program to solve this.

So, where do you start learning about programming? Don't worry about the platform you eventually want your app to be on. Like, let's say you were thinking about making a Windows 8 app to run on Windows 8 tablets... well, that doesn't matter at all. You need to learn concepts of programming first.

There is a lot of controversy over where you should and should not start. I started with BASIC in the 80s, but for more "modern" programming I started with Java. I took college courses which was really helpful, but this is not available to a lot of people. So, instead, you should pick a language you want to start with and then find tutorials for it online. A lot of people seem to recommend C or Java, along with some others, most commonly. I probably would have preferred C to Java as my first language but honestly it doesn't matter. It is very easy to learn other programming language. The hardest part is learning the programming concepts. You can easily jump around between languages once you have that down.

So, choose your language... don't really fret over this too much... like I said, you can always jump languages easily later. I have jumped around between Java, C, and C++ a lot and even though they're all quite different from one another, it is very easy to jump around like this.

Now, go find tutorials and stuff online for this. This can be very difficult. This board helps a lot though. Use the search function. Let's say you chose C. Search for "C tutorial" and "C beginner" and stuff like that and see what other people have said is good in other topics. Topics on this forum that are about a particular language will often have a little tag thing that shows the topic is about that language, too! Go to those sites/tutorials that people are saying are the best and see which one fits with your learning style well. You will also find book recs while doing this, and if you can get your hands on these books, that is great. Public library is a great place. But my library, for example, does not allow check-out of reference books, and all programming books are considered reference books... But it's good to check anyway. I think this is an odd thing and most libraries will let you use the books you want.

The tutorial usually well help you get set up with everything you need. You will most likely use an IDE and the tutorials will explain this to you and usually even recommend one. This is where you'll be typing your code and doing all your compiling and linking and testing and everything. The tutorials will explain all this to you, too, most likely. That is the only software you will really need at this point.

Now that you have your IDE and your tutorials, start following them. Try to learn a lot about programming and problem-solving techniques and just keep doing this until you've mastered the basics of the language you are learning. Make all kinds of programs all the time and try to solve various problems with them. Like, make calculators and whatever. A lot of coding is just practice.

After you have mastered your console applications and basic skills, move on to visual libraries and stuff... you will have to research this on your own like you did with choosing your first language, but pretty much do the same thing, just now for libraries and visual applications. This is kinda where I am in my advancement so I cannot offer a ton of help here.

Once you master the fundamentals and stuff and are moving on to bigger projects, you may feel like you are ready to try making some basic version of your children's book app that you have dreamed of. Now is when you need to decide on what tools you will use to build this. You already seem to have a pretty solid image in your head, so you're done with the first step. Normally this is where you would say "What kind of platform would be best for this?" and stuff... but you already know, it's going to be a tablet app, and it's going to be very visual and interactive, so you will probably be using tools built around gaming.

Your next step is to find these tools (libraries and stuff). Go to the website for the platform you are building on and they will usually have a developers' section that will link you straight to everything you need, and how you can learn about it! You can usually find this more easily by binging or googling it. Like before I said maybe you wanted to make a Win8 app for tablets. Well, Microsoft has a developers' section of their website that will set you up for everything, pretty clearly, and search engine is a great way to find that page easily. It will usually say "If you want to make a Windows 8 app, click all this and download all this!" and by the time you are doing this, you will know enough about programming that this should all make sense to you and you will know exactly what you are looking for.

Now just get used to your new tools and learn the ins-and-outs of them with the documentation provided and tutorials and stuff again. You should have all the skills you need at this point and all the tools, so you just have to do the planning for your app and then start coding, and eventually you will have a finished project. While creating it, you will hopefully code it in such a way that you will now have built an engine that you can use to build more apps like this in the future, too (since it seems with this kind of app, you'd want to make more than one).

I know all of this sounds like a lot, but really it is pretty simple. Once you get over a few hurdles and get in the mindset, programming is very easy to learn, and the idea you have would be pretty easy to make. You also may be able to pitch the idea to others to collaborate on. Your art will probably need to be drawn by hand specifically for this project, etc. And you will need someone to write stories (I'm assuming you want to do this part yourself) and you will probably want music and sound effects and stuff, too, so you will need to find someone who can make those things. Often if you create the actual program, it's easier to get support and find people willing to offer their help for these things. People see a really cool game idea online that has ugly art... well sometimes artist like the game so much they offer to create new art for it for free! You don't even have to search! Well, that is kinda rare. But you see what I am saying. Just saying "I have this idea..." usually people will not want to make art or music or whatever for you.

I know this is long, but I hope it helped. I've gone through a similar process as you, and I'm still in-progress... But I started with "I have no idea where to start or even how to figure out how to start" and my end goal is to make a computer board game. Even though I haven't reached the end goal, I only very recently found the clearest path. Usually when I would ask, I would only get the "how to start learning your first language" response and did not have any direction. Even after that, people would just say "keep practicing" but I didn't really know how making the same calculator console app 1,000 times was getting me any closer. This is because I didn't realize how to move on to creating applications with graphics and using graphics libraries. Nobody understood this was my problem and so I couldn't find the help I needed. But after learning that I needed to learn about different libraries, all the rest of the path opened up. It was just that one link that was missing, hahaha. Learning things on your own can be very difficult, but hopefully this has helped.




PARTNERS