Jump to content

  • Log In with Google      Sign In   
  • Create Account


molehill mountaineer

Member Since 24 Apr 2012
Offline Last Active Aug 10 2014 10:04 AM

#5131220 C++ Primer - CodeBlocks

Posted by molehill mountaineer on 14 February 2014 - 03:00 AM

Sales_item.h is a header file which you'll find in folder "1" of the .zip you linked to. Most likely the problem is because code::blocks starts looking for this file from a different "starting point" (= working directory) than visual studio.

I'm not familiar with this IDE but I think you could try copying the header file to the directory where the *.cbp (= project file) is located.

EDIT: also take a look at this


#5131022 How do I go about creating a game (and does anybody want to help?)

Posted by molehill mountaineer on 13 February 2014 - 06:23 AM

If you're just starting out I would strongly advise you to forget about 3D games for now. Making games takes a huge amount of work so adding the additional complexities of 3D mathematics and rendering just needlessly steepens the learning curve which will kill your motivation. I wouldn't even touch directX or openGL until you've made a few games with simpler API's such as SDL, SFML or allegro.  If you don't know how to code even a simple tetris game you really have no business starting a 3D project, boardgame or otherwise. 
 
You say you have a theoretical understanding of C++, I don't mean to sound blunt but that's just not going to cut it. The same principle as stated above applies: you're making things harder by trying to put together a game when you should just be learning how to think like a programmer
 
So, to summarize: first learn c++ for a couple of months, then make a few small games with user-friendly API's and after you can starting looking at directX or openGL tutorials
 
 
That said, if you absolutely must code a 3D directX project, Frank Luna's book is pretty good.


#5110395 Extreme Beginner Help!

Posted by molehill mountaineer on 19 November 2013 - 01:59 AM

It depends on what direction you wish to take - it sounds like you're interested in the programming side of things. 

When you're just starting out, the most important thing is to learn how to think like a programmer - what data structure do I use for a certain task, what is the difference between a while and a do while loop, what classes do I need to make to solve this problem, etc. Once you have this under your belt learning another language will be relatively easy - it's mostly a matter of understanding the syntax.  

For games, an object-oriented language is the norm. It's certainly possible to make a game in a procedural language (like those tetris games you can play on your calculator) but it's a bit of a headache. So, if you want to learn, you need to pick an object-oriented language (commonly referred to as an OO language), find a decent  book that will give you exercises to work on and start practicing.

 

Everybody has their own opinion on which language is best for beginners, I usually recommend java since its syntax is similar to C and it provides many libraries which reduces the complexity of the code. 

 

EDIT: also, I'm working on a pong clone. If you want to take a look at what goes into making a game check out my journal. Don't worry if you don't understand the code yet - I'm making things a bit harder than they need to be. The code will probably look like gibberish but it might give you a better understanding of how much work it takes to make even a simple game. 




#5108350 Problems with Mutator method (new problem see last post from me)

Posted by molehill mountaineer on 10 November 2013 - 04:10 PM

Hi,

 

I you want people to debug your code you should make it as easy as possible to understand.

- please use the code blocks (<> symbol in editor or [ code ] [ / code ] without the spaces. It will make your post much more readable.

- post the error message so we know where to start looking

- explain how the code is supposed to work - where does MousInput come from when you pass it to player, why are you storing it in the player instance?

- NEVER use single letters are variable names. It makes your code confusing as hell to read. A variable name should reflects its purpose. X and Y are okay since this is mathematical convention, 'm' is a no-no.

 

Since the compiler didn't complain that the variable m was undeclared in the function tick() I assume you have 

private MouseInput m;

somewhere at the top of the parent class. You probably forgot to initialize it. Something along these lines:

m = new MouseInput();

Or maybe you are thinking about variable scope the wrong way, in which case the solution would be something like

 

if(player.getM() != null)
{
 System.out.println(player.getM().getDeltaMousePlayerX()+",");
}

 

If you post some more details I'll be better able to help you fix the error.




#5108055 How to learn c++ WELL for someone with programming experience

Posted by molehill mountaineer on 09 November 2013 - 03:34 AM

You can pick c++ primer, it's no skin off my nose smile.png

 

C++11 is an extension of the standard library and core language. There may be some value in working with old style c++ if you're working on an outdated compiler that doesn't support it yet but I wouldn't worry too much about it and just go for 11. You'll need to switch over eventually so why not get ahead of all those lazy buggers like me that have yet to teach ourselves the new standard.

 

If you want to become a better programmer learning about maths and compilers is great, but before you jump into that stuff I recommend that you get acquainted with design patterns first. If you want to become a professional coder you can be damn sure that you'll need to know them eventually. If you still want to brush up on maths http://www.khanacademy.org is a pretty cool place to do it. If you're thinking "screw you molehill mountaineer! I want to learn computer science" then check out mit opencourseware's computer science section at http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science

You'll have to do some clicking around but the lecture video's are in there. Nowadays there's a lot of great stuff you can find on youtube as well - you are limited only by your curiosity and motivation to learn. Enjoy!

 

EDIT: here's the computer science course in a youtube playlist: http://www.youtube.com/watch?v=k6U-i4gXkLM&list=PL5A3B51B6AA09655A

 

ps: discrete maths means mathematics with discrete values (1 car, 2 cars ,3 cars, ... nothing in between) as opposed to continuous values such as the height of a person (between 1 meter and two meters there are an infinite amount of measurements you can make such as 1,00000000002 meters).




#5107944 How to learn c++ WELL for someone with programming experience

Posted by molehill mountaineer on 08 November 2013 - 03:37 PM

Since you already know java and have done some 'real world' applications, learning c++ shouldn't be too much of a hassle. I think the thing you'll spend the most time on will be memory management (pointers, RAII, stuff like that). If you're not averse to making console applications I wholeheartedly recommend you pick up "accelerated c++". It will give you a solid foundation and shouldn't take very long considering you already know the basic stuff.

 

note: I don't think this book has been updated so after you've read it you'll probably want to teach yourself the new c++ standard. After that read some win32 tutorials if you want to get into GUI stuff. There's some pretty decent ones floating around the web so I don't think a book will be necessary in this case (assuming you're on windows otherwise you'll want to look into QT).




#5107526 How to divide work for a team of beginners?

Posted by molehill mountaineer on 06 November 2013 - 02:46 PM

No problem, here are a few links to help you along the way.

 

http://zetcode.com/tutorials/javagamestutorial/tetris/ -> making a simple tetris game in java with swing library

http://zetcode.com/tutorials/javaswingtutorial/painting/ -> texturing with java swing library

http://www.oocities.org/timessquare/chasm/4553/tutorial/tutorial07-sound.html -> playing sound in java

 

 

I did not follow these tutorials but they should be enough to help you on the way. I googled java tutorials as it is easier to learn than most languages and borrows a lot of syntax from c++ if you ever want to switch over.

(I learned the "ten small steps" rule above the hard way!)




#5107429 How to divide work for a team of beginners?

Posted by molehill mountaineer on 06 November 2013 - 08:18 AM

Hi,

 

First let me point out the obvious: forming a team before you know what making a game actually involves is a bad idea. Learning how to make games takes a while, and some people on the team are likely to lose interest along the way. A better choice would have been to make a few games on your own and then form a team once you have some experience under your belt.

 

Second let me point out why nobody has answered your question: it is very open ended. Do you want to know how to manage people, how to divide the roles of creating a game, what roles there are in the first place, how to manage a project with different time zones involved, etc...

 

If nobody understands the question don't expect any answers.

Also: (this isn't aimed at you but rather at all the beginners reading this) please take the time to read the sticky posts. We get the same "where do I start" question every day - it gets tiresome and that may be the reason nobody replies.

 

 

Now, to actually answer your question: I suggest you practice as a team. That is: find yourself a few decent tutorials and make a small project together.

- for the programmers you look up a tutorial on how to make a tetris game (yes, tetris! Don't expect to make mario on your first go).

- for the artists you look up a tutorial on photoshop or maybe how to make pixel art

- for the audio guys you make them follow a tutorial on composing an 8 bit track or maybe an XACT tutorial if that's what you're using

- ... (you get the gist by now)

 

The idea is to give everybody a chunk of the project to bite into. The fact that you are all working on the same game will help keep everybody motivated.

 

 Make sure you keep your ambitions in check - ten small steps (i.e. projects) is better than one huge one.




#5103048 Parallax Mapping

Posted by molehill mountaineer on 21 October 2013 - 01:30 AM

Hi, I'm not entirely sure what you mean by an image that loops back. Do you want a background that scrolls seamlessly in a single direction? If so, a very important step will be to make sure that the background doesn't have a visible seam (you can check this in photoshop by tiling the texture with filter > other > offset - if you can clearly see where one tile ends and another begins you're going to have to edit the image).

 

I don't know what language and libraries you're working with, but this XNA tutorial might provide some educational value: http://www.xnadevelopment.com/tutorials/scrollinga2dbackground/ScrollingA2DBackground.shtml




#5101215 Final Fantasy VI game - chronological order of building & being challenge...

Posted by molehill mountaineer on 14 October 2013 - 01:45 AM

Hi,

 

I'm not sure how developed your skills are but if you're starting out I would strongly advise you against making things harder than they need to be. Sure, a challenge is a great way of learning new things but it can also be very demotivating to get stuck on something you only half understand. I made my little game I'm working on "the hard way" and I've been at it for a year and a half now - In the end I'm glad I did but I wouldn't want to go down that road again any time soon.

 

As for the order of building: I lean towards figuring out how the game will look (atmosphere and theme e.g. "claustrophobic scifi platformer" or "funny steampunk adventure") before you start doing anything. However, the art is the last thing that actually gets made for two reasons: a) I am primarily a programmer b) during the process of making the game things may be taken out or put in and I don't want to spend time on art I'm just going to throw away.

Ofcourse, in an actual company these things would be planned ahead and developed simultaneously.




#5094328 Starting from scratch as a newcomer?

Posted by molehill mountaineer on 15 September 2013 - 04:51 PM


1) What's the difference between 3D animation and graphic design? Are they the same thing?

 

I have never worked in a AAA game company but I believe animators are usually not the same people who create the actual 3D models. After a model has been made, it will be "rigged" (that is, there will be special control 'bones' put in the model which will be used to instruct it how to move. Think of it like attaching strings to a puppet so that a puppeteer can make it dance around.Instead of strings, it's little invisible objects which are inside the 3D model).

 

After these bones have been put in, the animator can drag them around in a program like 3D studio max and pose the model in different ways, similar to how a stopmotion video would be made. This takes alot of time, and alot of skill to make the motion seem lifelike. To alleviate these concerns modern games will use 'motion capturing' - an actor performs the action (a roundhouse kick for example) with little reference points attached to his body. When he moves the reference points change position - these changes of position will be recorded and used to manipulate the 3D model (look up a video of motion capturing if I didn't explain this very well).

 

Graphic design is more about creating a friendly user interface (that is, the buttons the user can click). It would include things like making sure the "save" button looks like a floppy disk so that the user can recognize what it does without having to read the manual first.

At least, that is my interpretation of this term, could it be that you meant to say concept art?
 

 


2) What is the process for making art in video games? Can you give me some general steps about how one goes from point A (concept) to point B (physical product)

 

Very generally speaking:

- game designer has an idea ("I want a slimy bossmonster!")
- concept artists make a few thumbnail drawings in which he or she experiments with the design (more slime, less slime, bigger, meaner, hairier, etc)

- game designer makes a choice, the concept artists then makes a "clean" drawing in which he draws the monster front, back and sides. The idea is to really understand

  what this thing will look like before a 3D artist ever touches it.

- these drawings will be given to the 3D artists who might scan or otherwise import them into a 3D modelling software (kind of like a blueprint) and begin modelling

  the monster. Modelling is kind of like working with geometric clay: you start with a rough shape and gradually refine it.

   It's kind of hard to explain in text but what you're doing in essence is creating a tapestry of triangles which we call "polygons". The tapestry is called a "mesh".

- after the mesh has been modelled a texture (which is a flat, 2D image which you would probably make with photoshop) is made and put onto the mesh. Think of this like

  upholstering a couch - you can choose whichever color or appearence you like, the underlying shape will be the same.

- the mesh will be "rigged" (see above) and the animations will be a made (run, walk, sneeze, look angry, etc)

- model, textures, animations and all this good stuff will be imported into the game engine

 

 


3) Where can I learn how to make art for video games? Where do I start? (I have no idea). What should I tackle first?

 

Being able to sketch is always a plus. As with all art 3D modelling (and animation) is a matter of honing your craft which can only be done by practice, practice, practice.

Check out the books section on this website which might have a few good starting points. Experience with photoshop is highly recommended.
 

 


4) What are the similarities between physical painting and computer artwork?

 

Well that really depends on your definition of 'computer artwork' - It will have more to do with creating textures than animating a facial expression, for example.

Most texture work will be done with photoshop and a wacom tablet. I have never made a physical painting but it's not hard to imagine you will be able to use some of your techniques in the digital realm. Your knowledge of composition and color will definitely be useful. You can never learn too much smile.png

 

 


4) What is the difference between programming and coding? (in regards to game design). How hard is it for someone with zero programming/coding experience to learn this? How can I start learning how to program/code, and what should I tackle first?

As a complete beginner, I would recommend you start with a scripting language like python. Being able to program is about learning how to "think like a programmer".

Once you can make stuff in one programming language it will be easier to transition to another one.

 

It's kind of like how speaking Dutch will make it alot easier to learn German: they're not "the same", but you can carry enough stuff over to pick it up faster than somebody who's starting from scratch.

 

coding and programming is the same thing, it's just a fun word we programmers like to use smile.png

programming and scripting is a little different, scripting basically means the code has to be "understood" by another program.

For example, if the artists for a game have to put in a few interactions with NPCs they might 'script' these interactions in a language like lua or python.

The scripts they write will be 'understood' by the game engine. The point of scripting is usually to make the job of programming easier which also enables non-programmers to create content. 

 

 


5) How do programmers/coders and artists work together? Where do their jobs intersect?

 

Well that depends on the company ofcourse, but you can think of it kind of like a theatre production: the programmers 'build the stage', make sure the curtains open correctly and the soundsystem is turned on and the lights aren't shining in anybody's eyes.

The artists are the ones who make the cardboard backdrops and sew the costumes and make sure the props look historically accurate.

 

It's difficult to say where their job intersects exactly, it all works together to form a whole. My guess would be somewhere in the realm of 3D animation and scripting of ingame events or interactive audio. I can say this however: knowing how programming and artwork is produced will be helpful no matter what side of the team you're on - an artist may make the most moving piece of 3D art you've ever seen, it he didn't pay attention to the memory constraints of the game engine it will be useless smile.png

 

 

It's a long and interesting journey. All I can say is this: work hard, be patient, learn from many different sources and try to have fun (that is the point after all).




#5092982 Separating API specific code from the rest of the framework

Posted by molehill mountaineer on 10 September 2013 - 06:18 AM

I think I get it - instead of having the sprite class contain a bunch of DX references it would contain pointers to interface classes? The actual implementation would then depend on the API I choose to render with. That's actually pretty simple. Thanks!




#5092978 Some Queries about game dev?

Posted by molehill mountaineer on 10 September 2013 - 05:48 AM

There is often alot of programming code which two completely different games may have in common: both carmageddon and tetris need to be able to draw things on screen, play sound, receive input from the user, etc.

 

Because game companies don't want to spend development time on making these systems every single time they start a new project this code is reused.

We call it an engine because it is the code that "makes the game run" - It's actually just programming code like the rest of the game.

Because it takes alot of time and effort to make an engine there are companies that specialize in their development, other companies then use their code to run their game. 

 

A library is a similar collection of programming code which you can "attach" to your project. The directX library is a collection of code which 'talks' to the graphics card for you - it is possible to talk to the graphics card without this library but it would be much more difficult than just saying to directx "draw this for me".

It's far easier to just use the code somebody else has already written (this is what programmers mean when they say "don't reinvent the wheel").

 

Think of it like this:

You're making your own car.

The body of the car is your game: you can make it look like a blue volkswagen, a green porche, anything you like.

The thing that makes the car move is the engine (hence the term) - you can make your own engine but it probably won't run as well as one you buy from the garage.

You can make your car with engine X or engine Y, that's up to you. The body of the car will look the same - it might not be as fast though.

 

The library would be something like a new CD player you install in the car, just a little piece of programming which is ready made for you.

You don't need to know how a CD is played - all you need to do is insert the disk and press play.

 

Relevant link: http://www.extremetech.com/computing/50938-game-engine-anatomy-101-part-i




#5092470 Sandbox Games like Minecraft?

Posted by molehill mountaineer on 08 September 2013 - 07:28 AM

The language you choose to program in doesn't really impact the kind of games you can make.

It's a bit like asking "should I write a book on paper or with a typewriter".

You might choose one or the other depending on your specific needs (if you have a co-author and your handwriting is terrible, for example) but in the end the choice doesn't really affect the book that you'll write. 

 

(That being said: obviously an object-oriented approach will save you alot of headaches).

 

One of the reasons many game developers code their projects in C++ is because it give you a large amount of control over how memory is managed.

The programmer is responsible for releasing parts of the memory the program is no longer using.

For example: after a bullet hits the wall the c++ instance of the bullet object must be removed from memory. If the programmer forgets to do this the player will effectively cause a bullet object to occupy a piece of RAM memory every time he pulls the trigger. This is what's known as a memory leak.

 

Because c++ gives you a large amount of control you can optimize the time it takes to render a 3D scene to a large degree, If you know what you're doing.

If you don't know what you're doing it means your game can become an unreasonable "resource hog".

 

Java, on the other hand, does this sort of stuff through "garbage collection" - the virtual machine will take care of deleting objects for you.

You don't have to worry as much about memory leaks but larger games will be much more difficult to optimize.

 

 

Generally speaking Java programs take less time to develop, because more is "done for you" through the use of libraries, automation, etc.

The downside is that you have less control over what's going on under the hood.

 

I'm guessing you're new to programming so Java wouldn't be a bad place to start since it will be easier for the reasons mentioned above.

Once you learn to think like a programmer you'll be able to learn new languages pretty quickly.

 

I do have to say, however, that making a game on the scale of minecraft is far too ambitious.

Think of it like learning how to play a guitar: it takes time, effort and lots and lots of practice. There's a good reason most people's first game is text-based.




#5092029 is prototyping always necessary ?

Posted by molehill mountaineer on 06 September 2013 - 02:51 AM

Well, it's a bit like sketching thumbnails for a drawing before you commit to a final form.

If you already have a clear picture in your mind's eye then you can just go ahead and make the game.

In a situation where the gameplay is a bit more experimental or the idea hasn't fully formed yet then prototyping allows you to explore the mechanics without having to invest the time and effort into a finished product. It can also be helpful in cases where you're working with new tech (testing out the "playback" feature for a game like braid, for example).

The good thing about prototyping is that often, you'll think of things that you might not have otherwise (for example, a curious bug in the code might end up becoming a gameplay mechanic)

 

In the end it's really up to how confident you are that you're willing to spend time on the idea you have in your head.






PARTNERS