Sign in to follow this  
localplutonium

My understanding for developing a video game, can I get some insight?

Recommended Posts

It has taken me a while to understand the full scope of how a video game is general, started and finished, and how the general system of modules of a finished game might work together and how the roles of various programming languages fit into the whole thing.
My understanding is that there is multiple aspects of a game which basically will be;  Graphics, UI menu, Gameplay objects physics and logic, File system. Each uses a programming language that makes sense for that component and the video game is the result of all the different components/languages working in unison.

 

1) I am curious to know if this is a decently accurate understanding of how video games are developed and how programming plays a role in whole thing?

2) I'm also curious about how the finish project of a map / game "world",  goes from a graphical design to becoming a interactive 3d world in which a character object can move around through it.

I am completely confused about the concept of a "world" file as a computer programmer I am used to processing files that only have text data which can be interpreted to be code or plain text or something else. What essentially are in these map/world files? (in terms of advanced 3d maps not a tiny 2d map)

 

3) Lastly , I need recommendations for game development software. Specifically I would like to be able to use a game development software tool that have a large framework for graphics and physics. Mainly I wan to focus on implementing certain logic into gameplay aspects such as AI logic, or time. Is there a game dev software that has well designed physical game play like GTA car driving physics and Skyrim action physics, that has  similar graphics mixed together? this would be very ideal for what i want to do.

I've been considering Skyrim creation kit and Unity 5. Im curious if id be able to add logic.

Share this post


Link to post
Share on other sites

What Alberth said is completely true. And if you want advice from a beginner like you: I think you will make a mistake if you start using engines at the beginning.

 

 

I've been considering Skyrim creation kit and Unity 5. Im curious if id be able to add logic.

 

No, you won't be able to add any logic, except some very basic stuff (I know because that is how I started with 3d) .

 

You said you don't understand what 3d world actually is. Get some graphics library from the net, spend a few weeks learning the basics of linear algebra. And make an ugly simple game yourself.

 

I remember the first time I started Unreal Engine, I just clicked on "create project", then "third person" and I had game that was ready to be played, camera movement was ready, player animation was ready, shooting was ready. Basically, everything is done for you, and you use it like it's magic . How are you gonna build on something that you consider "magic" ? I don't say that you should start with assembly language, but you need to have at least basic understanding on how stuff works on the inside.

 

Better start by making 4 - 5 2D games using SDL/SFML/whatever before starting with 3d, this way your math skills will gradually improve, as well as your programming skills, and an added bonus: You won't get very frustrated and give up. At least this is how it worked for me.

 

And if you don't like maths, forget about graphics programming, physics, logic and AI.

Edited by Heelp

Share this post


Link to post
Share on other sites

I don't mean to be rude , but what is the difference? Im sure there is and im curious. Is development the general project and design is specifically related to an actual project and its "design"

 

 

You aren't asking about"designing." You're asking about developing a game.

 

Edited by localplutonium

Share this post


Link to post
Share on other sites

Yes, I did say I want to understand more about world file. But that doesn't mean I haven't already been introduced to the concept of a virtual "maps", Im sure everyone understands the idea of a 2d graph mapping system. I have studied 3d mathematics, linear algebra, as well as architecture assembly. In fact I took 3 Assembly college classes.  I just want to get some official explanations of whats going on and i guess the quality of modern graphics was making me confused.
 

You said you don't understand what 3d world actually is. Get some graphics library from the net, spend a few weeks learning the basics of linear algebra. And make an ugly simple game yourself.

 

I don't say that you should start with assembly language, but you need to have at least basic understanding on how stuff on the inside.

 

Better start by making 4 - 5 2D games using SDL/SFML/whatever before starting with 3d, this way your math skills will gradually improve, as well as your programming skills, and an added bonus: You won't get very frustrated and give up. At least this is how it worked for me.

 

And if you don't like maths, forget about graphics programming, physics, logic and AI.

Share this post


Link to post
Share on other sites

I get most of this already. I guess I was thinking of the modern games as something more.
Is it good to think of it as a souped up command line interface that processes 3d interactive commands. An interface for the user to interact with a 3d map and 3d graphical images?

main files / components involved
  1st files map related are the 3d mapping full of objects (AI and Buildings/props) and the logic for when you interact with those objects.
  2nd files player related is player command logic and player saved file stuff?

 

 

 

A game is a program that generates moving interactive pictures, and the cpu is the main way of computing what to display the next frame. As a result, programming results in the code that makes the game "come alive and interactive". The graphics are the second major part, they are the items being moved and interacted with, players just *love* pretty pixels :)


A level file contains a description of a single game level, a "world" from the view of the user, since it describes all reachable places that can be seen / used in the level that the user plays. In tile-based games, it typically contains maps of (x,y) to tile data, but it can also contain eg trigger conditions, configuration data (how many medkits, their position, etc), initial positions of enemies, win conditions, loose conditions, basically everything that you need to present the level to the user, and present it as an interactive world.

In theory, you could add graphics to a level file too, but these are often shared between levels, and thus better stored separately.

 

Share this post


Link to post
Share on other sites

 

I don't mean to be rude , but what is the difference? Im sure there is and im curious. Is development the general project and design is specifically related to an actual project and its "design"

 

 

The names imply the differences. Game design is where you sit down and decide what will be in the game, how the game will be played, what levels will look like, what characters will look like, etc. Development is the process of turning the design stage into the actual game. 

Share this post


Link to post
Share on other sites

If all you care about is logic, then I think that something like Unity or Unreal or whatever engine in that vein will work for you. I've never worked with any of those (because that's not my jam) but if you look at the games that are made using those engines, you can see very clearly a broad spectrum of genre, complexity, and quality. 

 

As to your other questions: often times multiple languages are used on a project, but not necessarily all for the code that winds up being shipped. I know that C#, for example, is sometimes used to make tools for the developers that aren't released with the game.

 

A game map is, roughly, a series of vertices and the triangles that they form. How those triangles become a world that your character moves around in is entirely up to you, but generally involves collision detection and response, input handling and response, and whatever else you might need. This isn't even considering that the world is visible, which requires texturing and rendering all (or at least some) of those triangles.

Share this post


Link to post
Share on other sites

Read some books, for example  "3D Math for Graphics and Game Development". The first 8 chapters are all about that "world of yours".

Are you referring to the Fletcher Dunn book or another one? That is one problem, every programmer and developer has their own set of books they like so it is rather difficult to know which books to read. 

 

I'm asking for clarification due to books having similar names or identical names yet different authors. Don't want current and future readers of this thread to rush out and buy the wrong book. I'm drawing from the experiences of beginners in C++ being told to buy C++ Primer only to rush out and buy C++ Primer Plus (which is notorious for being poorly written). 

Edited by BHXSpecter

Share this post


Link to post
Share on other sites

all of your feedback is unhelpful and insulting. please stop "contributing".

 

also this is the most ridiculous thing i have ever heard

 

The fact that you took 3 Assembly college classes doesn't say anything about your knowledge.
 

 

of course it does because you don't just sit there and listen to lectures. You have to implement computer programs and study circuit board components, hardware (MEMORY TRANSISTORS ETC.) Says alot about what you prob know. Unless your assuming that I just sat in class not listening or studying any of the hw assignments.

you even said

 

I don't say that you should start with assembly language, but you need to have at least basic understanding on how stuff works on the inside.

so taking 3 assembly college classes is a definately a relevant piece of info towards what I might understand about computation on a hardware level. especially if you speaking in terms of BASIC UNDERSTANDING. I said that to give you some polite feedback not to boast.

I wouldnt have said this if i didn't feel comfortable with my knowledge of computer assembly programs. If you need more convincing i'm creating a  java compiler and debugger right now, and part of java compilation is interpreting byte codes with the JVM...so ive created classes that interpret / executes byte codes, had to implement a run time stack and stack frames. i've created assembly programs with functions that pass by data and by pointers to data, do function calls, store and load data, load and store / create heaps, work with the stack, get data at runtime and process that data, ...which was all from a college CLASS. I'm sure this is alot more rewarding that reading a book and im not sure what your methods are for learning but i consider this pretty hands on and would definitely trust the education teachers can provide to public.

Also about what you said don't wait for someone to tell you. I definitely disagree because being taught by word of mouth is one of the most effective/efficient ways of learning. Saves you alot of time and most people are willing to have a nice intuitive conversation.

 

Edited by localplutonium

Share this post


Link to post
Share on other sites

thanks for this, it is very helpful.


 

im a little bit confused why the world editor is part of the game, does the game need to do world editing at runtime?
wouldnt there just be an instance of a world and that object will just go through changes?

seems like Game is the final result but it has debugging and editing libraries attached to it
i figured you would just create a world file and that would just be reused/ accessed by the world manager.

 

 


 

architecture.png

 

 

Edited by localplutonium

Share this post


Link to post
Share on other sites

most games have tool with many being integrated in the actual game its easier to test things that way. You are right the game might load some data at some point and modify that information and use it to calculate the state of things but the diagram is just an example that is from one pipeline of game development.

 

Since you know that games are applications their should be some state to the game mechanic which would lead you to some path.

Share this post


Link to post
Share on other sites

all of your feedback is unhelpful and insulting. please stop "contributing".

 

 

Ok, I will stop.  :lol: Just one more thing. By the way, who said I wanted to contribute? Maybe I just want to tell you that you are wrong.    :P  

 

 

Are you referring to the Fletcher Dunn book or another one?

Yes, of course by Dunn. It is true that there are lot of books with the same name, so I will mention the author next time.

 

 

Heelp, on 23 Apr 2016 - 11:29 PM, said:

snapback.png

The fact that you took 3 Assembly college classes doesn't say anything about your knowledge.
 

 

 

of course it does because you don't just sit there and listen to lectures. You have to implement computer programs and study circuit board components, hardware (MEMORY TRANSISTORS ETC.) Says alot about what you prob know. Unless your assuming that I just sat in class not listening or studying any of the hw assignments.

 

 

I'm in uni, too. And I'm still on the opinion that classes, and especially lectures, don't give you anything, they just give you an overview of what material you need, so that you know what to learn (by yourself, of course).

 

And about the difference between design and development, and how the "world" is represented by data, I'm still on the opinion that you can easily find it out by yourself by reading the 100-200 articles on the internet.

 

 

all of your feedback is insulting.

 

 

Of course, any constructive feedback is insulting. And even if it wasn't, that's my way of saying things. Instead of trying to change it, maybe I should find a job where it is appreciated.(or die of hunger)  :lol:

Back to the "out of the topic"  :lol:

Basically, what I wanted to say from my first post on this topic is that you ask all these vague questions and you want an easy answer, but the only answer is to sit and make a 3D game, because you haven't made even one, because you are lazy.  -_-   And this is a forum, so I can give my opinion here. That doesn't mean that it always should contribute to you. You choose what and if something contributes to you.  I gave you the only way that guarantees progress, you won't listen, that's why you are right, my posts will not contribute to you. I won't post here again, since you asked me nicely.(kind of) ^_^

Edited by Heelp

Share this post


Link to post
Share on other sites

 

Of course, any constructive feedback is insulting. And even if it wasn't, that's my way of saying things. Instead of trying to change it, maybe I should find a job where it is appreciated.(or die of hunger)  :lol:

...

because you are lazy.  -_- 

...

And this is a forum, so I can give my opinion here.

This is the For Beginners forums, where there are certain rules in place when answering questions.

One of these rules quite clearly state you should not be insulting. If you cannot abide by those rules, I would suggest you refrain from posting in this forum.

 

No, not all constructive criticism is insulting. Looking over the many many posts in the For Beginners forum, you will see that most posts aren't insulting, even if they give critique and answer questions.

If that's your way of saying things, I would suggest you learn how to communicate your thoughts and meanings in a less hostile way.

 

It's completely fine if you disagree with something, or feel that you know better and can guide someone. Just keep in mind that the way something is communicated has an effect.

---

 

As for the question on why the world editor is part of the game:

As frob said, the details will vary from game editor to game editor.

It is not a requirement for a game that the editor is part of it. The bigger and more commercial engines (Unity, Unreal, etc) have spent hundreds or even thousands of work-years on improving their editors. A big part of their focus is to allow more rapid iteration/changes/tweaks to the world, which they've attempted to solve by making the engine and the game as interconnected as they can.

 

Other engines/games, especially small/home-made ones, do not have this functionality. Or if they do, they don't have it to the same extent.

In those cases, the result is usually more back and forth between various tools and editors to have something running in the game. It might not be as user-friendly or "agile" or quick to iterate on, but it's still a perfectly valid way to make games.

Loads of games are made using both methods.

 

---

I really miss Selective Quote.

Share this post


Link to post
Share on other sites

 

 

I'm in uni, too. And I'm still on the opinion that classes, and especially lectures, don't give you anything, they just give you an overview of what material you need, so that you know what to learn (by yourself, of course).

 

And about the difference between design and development, and how the "world" is represented by data, I'm still on the opinion that you can easily find it out by yourself by reading the 100-200 articles on the internet.

 

 

all of your feedback is insulting.

 

 

Of course, any constructive feedback is insulting. And even if it wasn't, that's my way of saying things. Instead of trying to change it, maybe I should find a job where it is appreciated.(or die of hunger)  :lol:

Back to the "out of the topic"  :lol:

Basically, what I wanted to say from my first post on this topic is that you ask all these vague questions and you want an easy answer, but the only answer is to sit and make a 3D game, because you haven't made even one, because you are lazy.  -_-   And this is a forum, so I can give my opinion here. That doesn't mean that it always should contribute to you. You choose what and if something contributes to you.  I gave you the only way that guarantees progress, you won't listen, that's why you are right, my posts will not contribute to you. I won't post here again, since you asked me nicely.(kind of) ^_^

 

 

 

okay maybe i miss took your "constructive criticism"/opinion as a condescending useless comment. I'd like to point out if it was constructive criticism it would be helpful which it wasnt because it was telling me to understand computer architecture basics and to start with assembly, but then telling me that taking 3 assembly courses is useless, then telling me im lazy because im asking questions on game development and have not tried to create a 3d game yet.

Honestly without the answers in from this post i would not know where to begin. Additionally, previous to this topic, I have been trying to understand the full scope of a game development through the internet / research and even went to the 2013 game developers conference in San Francisco ..and still didnt have a good idea of how things work together.


 


I'm in uni, too. And I'm still on the opinion that classes, and especially lectures, don't give you anything, they just give you an overview of what material you need, so that you know what to learn (by yourself, of course).

 

 

well that is unfortunate for you. my school projects have brought me a lot. I have projects i can show for in job interviews such as websites, java software and those assembly programs which can probably help me develop a Nintendo 64 game if id like.

I really would not like to argue about the usefulness of school because this is not what i originally posted for. The point of telling you i took those classes was simply a response to your reply

(a translation for you)

you: "assembly helps"

me: "yes i have a basic understanding for assembly and computer architecture"

Edited by localplutonium

Share this post


Link to post
Share on other sites

A person can be self reliable and still ask questions so I disagree with the "ask less questions". You also haven't answered my clarification question about the book you named. You have spent the thread arguing with the OP.

 

 
 ( and I still think you are lazy and all talk-no action, and you still haven't started to make your first 3d game   :lol:  )

Absolutely uncalled for and rather childish to put. There is a level of civility and professionalism expected in the beginners forum. 

Edited by BHXSpecter

Share this post


Link to post
Share on other sites

You also haven't answered my clarification question about the book you named.  

This was answered.

 

Post #16 (proper quoting is failing me, sorry):


Yes, of course by Dunn. It is true that there are lot of books with the same name, so I will mention the author next time.

Share this post


Link to post
Share on other sites

 

There are different parts in a game, and these parts occur in many games, but not in all. A sixteen puzzle game has no physics or logic. A text adventure has no graphics.

Programming languages are mostly general purpose, and you use 1 language for the entire game.

 

There are not many games that use one language nowadays. Most games use a scripting language for various aspects like dialogues or loading/saving and storing other data like a AndroidManifest.xml.

 

1. But don't let that scare you. If you know how to write in Java you know how to write in C# and from there it's a small step to a lower level language like C++ or higher up like Python. If you just want to create games you pickup a framework or engine where things like GPU communications are already done for you. You can start coding your game right away and these frameworks offer a arsenal of handy snippets for you to make your life easier. Just pick a language like Java or C#, learn the basics and get comfortable with the language, then pick a fitting framework for the language you chosen.

 

2. A map or level is created often by hand but can also be generated automaticaly. The tree's of Oblivion where planted by a alghorithm and then cleaned up a bit. Games like diablo generate there dungeons while the game is running. And others handcraft there maps. For 2D maps you can use a application like tiled where you can paint your tiles on a canvas and render that in your game. For 3D a engine is used, some companies roll there own but there are plenty of existing engines where you can start placing objects and "painting" your world.

 

3. Slow down and take it step by step. There are plenty of physics libraries that can do a better job then the car physics of GTA V but that requires advanced knowledge of physics and cars from the developer. Anyway, figure out what you want to do, if you really want to code then pick a language and start learning the basics. Once you feel comfortable with it you should know about some libraries or frameworks that will help you create a game or perhaps you want to give Unity or UE4 a go. Every major engine offers physics for you to use however you want. Likewise most frameworks like SFML and LibgDX come with a physics engine as well, otherwise you can pick one that is compatible with the language your working with and import it. But like I said, slow down! I bet you won't completely finish a game in the following 2 years, not even a simple game like break out. Let alone something that vaguely resembles GTA.

Share this post


Link to post
Share on other sites

If you know how to write in Java you know how to write in C# and from there it's a small step to a lower level language like C++ or higher up like Python

I don't agree with this. Java, c# and C++ share some syntax but behave wildly differently. If you simply assume that you are a day or two from jumping the divide to the next language from one or the other, you'll get into hot water very quickly.

Let's compare some examples:

The java virtual machine seems to be taught to new programmers in a manner of "assume memory is infinite and let the garbage collector sort it out". Everything is abstracted and inheritance and interfaces are used everywhere.

C# doesn't teach the same ideology and in fact frameworks like monogame encourage you to be aware of where you are allocating ram so your program doesn't stall on consoles etc. C# also supports native "unsafe" pointers where for java you must use jni to access such things.

C++ has lots of gotchas that neither c# or java don't such as manual memory management and pointers coming out of every orifice. there are also templates in C++, which are a whole different and interesting beast to anything in Java or c#...

In short it's like saying: "I know Italian therefore I know Latin. Plus, it's going to be simple to learn venetian and sardinian" :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this