Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


nesseggman

Member Since 09 Mar 2010
Offline Last Active Nov 11 2014 06:14 PM

#5180304 "Permanent" pointer-like references in C#? Or design that works for t...

Posted by nesseggman on 14 September 2014 - 02:12 PM

Thanks so much !!

 

@eck - OK, I understand your Option 1 better now. When I read it before, I thought you meant to create the affectedStats variable within the Parameters/CharacterStats class as a member of that class, not as a member of the Potion class. It was just an ambiguity of English language that I interpreted improperly :) And I understand why you were using CharacterStats. I just use "Parameters" because in Japanese games the characters' stats are always called Parameters and I refer to them as such often and it just feels natural to me. Though I probably should've thought about it more and used a different name for the sake of this topic :)

 

@npyren - Thank you! I will have to learn about delegates and lambda expression because this is something I haven't explored yet. Even if it doesn't lead to a solution that fits for my problem now, a big part of wanting to make this RPG was that I knew it would challenge me to learn much more about programming concepts and language tools without being too overwhelming.

 

Thanks everyone for their answers :3




#5180274 "Permanent" pointer-like references in C#? Or design that works for t...

Posted by nesseggman on 14 September 2014 - 11:17 AM

@Hodgman: Thanks for the reply. I realize that classes work that way, but what I'm wanting to do is point to a value (a member variable of a class), and not the class itself. There are many different variables in the class Parameters and I want the Potion class to know which one to access in its own functions. I realize I can point to a member it to access it once, but I want to be able to hold a reference to know which member to access each time. IDK if I am explaining this properly, sorry.

 

@Eck: Thank you. I was originally doing pretty much exactly what you used for the example in Option 2, but I felt like there should be a more simple/compact way to do it.

 

I feel like this is similar to what you meant in Option 1 but I'm not really sure. Would it be possible for you to expand on that just a bit more?

 

Specifically, "If your Potion has a CharacterStats member variable named affectedStats," what type of variable would affectedStats be and what would it hold? It still can't hold a refernece or pointer, so I don't think I'm understanding this example properly. Plus every instance of Potion would have a different affected stat and I'm not sure how it would keep track of that.

 

What I'm wanting to do is point to a value/class member variable, and not the class itself. I feel like Option 2 will end up being the way I have to go, though.

 

I just feel like there's some kind of better way that I'm missing though. Like as if there should be a way to just store in a variable which of the CharacterStats variables I want to affect, and just be able to use that variable to change the value.

 

Like to just be able to write a single line like target.CharacterStats.affectedStat += potionStrength; and just be able to have affectedStat essentially 'point' to one of the CharacterStats variables, and be different for every created Potion object.

 

I realize what I just typed doesn't actually make sense, but I feel like it should be that simple. Is it just not possible to do something like this or something similar enough/simple enough in C#?

 

I also realize after typing that example that what I was trying to do wouldn't really work with a pointer anyway, as there's no actually instantiated variable with an address to point to in this case. But just... I feel like there's a solution here I'm not seeing. Perhaps I'm not explaining what I want to do well enough to 'click' with the right answer, or perhaps what I'm wanting to do simply isn't possible in any simple form like I'm imagining.

 

I don't mind doing the Option 2, as that's what I was originally doing anyway, but if there's a better way, I'd like to know about it/try it. I feel like this kind of concept could be really useful for all kinds of things in the future, too.




#5180188 "Permanent" pointer-like references in C#? Or design that works for t...

Posted by nesseggman on 13 September 2014 - 11:58 PM

I'm a self-taught noob and taught myself programming with C++, but now I'm building a game in Unity with C# and I'm fairly new to C#.

 

I have a class called Parameters that pretty much is just a giant list of variables of stats (HP, attack, defense, etc.) for the game's characters.

 

Then I have a class called Item and a child class called Potion.

 

I want the Potion class to be able to hold a variable that tells it which one of the variables in the Parameters class it needs to affect.

 

I don't want to create a separate class for weapon potion, health potion, defense potion, etc, so that an individual instance of Potion could be easily customized by a random generator (or player generation system). And then I could just call the Use() function of the Potion class that does something like whateverVariableInParametersThisItemWorksWith += potionStrengthValue.

 

I feel like the way I should accomplish this is have a pointer within Potions that points to a variable in Parameters. But... that's not really how C# is supposed to work, so I really don't know what to do. I don't want to use a pointer and I want to understand C# better...




#5180182 Is Unity 3d right for a horror game?

Posted by nesseggman on 13 September 2014 - 11:33 PM

As for the lighting in Unity, since it was mentioned in a few comments, the free version of Unity is really terrible with built-in lighting. Pretty much you're not going to get any decent lighting or shadow effects whatsoever, unless you can program them yourself essentially from scratch. The engine features for lighting are pretty much ALL restricted until you buy the pro version for $1500.

 

This can be detrimental to your game if you want to rely on lighting for effect. Though there are workarounds, of course, but it will be a huge pain and you'll have to know a lot about lighting.

 

However, you can still make a very creepy game without using the lighting effects. Personally I think the game Clock Tower on SNES is very creepy and it's made with bright 2D sprites. Into the Gloom on Desura is a really creepy game made in Unity's free version. Personally it scared me a lot. It doesn't use lighting effects to create atmosphere but is still very scary.The recently popular Five Nights at Freddy's game is completely 2D and used pre-rendered 3D stills (which you can make in something like Blender). The infamous Imscared was made in GameMaker, an engine designed for 2D, and doesn't use advanced lighting or anything to be scary, but rather some unique mechanics and 'story.' (The links are to YouTube plays of those games if you were curious to their gameplay).

 

In short, there are tons of examples that the engine is not what is important to make a horror game; it's all in the design.

 

Since you don't seem to have a very strict idea of what you're wanting to make right now, consider designing your game around a concept that won't need intricate lighting if you're using the free version of Unity, or if you really want to do some intricate lighting, look elsewhere or buy the pro version of Unity.




#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.




PARTNERS