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

Started by
33 comments, last by owiley 7 years, 12 months ago

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.

Hello to all my stalkers.

Advertisement

I hadn't read all that post due to the way he started it as I had assumed it was him, yet again, probing at the OP for a response. I stand corrected, my apologies.

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.

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" :)

If you properly learn any language you could easily transfer your ideas since all languages have a common foundation.

Bring more Pain

If you properly learn any language you could easily transfer your ideas since all languages have a common foundation.

Maybe if you limit yourself to imperative languages, but try doing prolog in an imperative language, or a functional language in say, assembly language :)
Words like "any language", and "all languages" are way bigger and more diverse than you might think :)

No, like I said once you properly learn the language you would know others as well. For example if you properly learn English you can translate to german or French. The meaning behind you words never change but the sentence structure and rules changes and yes this is true with programming languages as well. The point is you are coding for some meaning 'idea/logic' but the way you tell the computer that meaning differs in structure from language to language but the meaning never change if it does then you are not understanding exactly my point. I would argue that you need to brush up but to each there own. I am not super picky on language so I cannot judge. I am studying computer science and have just went over grammar / parsing. CFG is what used to create the rules for the language actually it is the rule for a language. This come to any language and every computer language at the end of the day translate to set of rules taken from the instruction set. After that it is simply do this instruction then this one .

Bring more Pain

For example if you properly learn English you can translate to german or French.

Both western languages, countries pretty much next to each other, should be alright.

Now try to translate a language of the Eskimos to a language near the equator, say Mexicans. Eskimos have a huge number of words for 'snow' https://www.princeton.edu/~browning/snow.html A concept alien to Mexicans. Already in English, you'll have major trouble doing the translation, as you simply cannot express every subtlety of the Eskimo snow words.
No matter how hard you try, it won't fit. In addition, any English reader will fail to understand the meaning that an Eskimo intends. The reader simply does not have a matching conceptual frame.

Computer languages are not different. Prolog can only reason about facts and relations, how to put an imperative object-oriented program in there? The concept "assignment" is already alien in it.
I don't see how that counts as "easily transferred".

Similarly, Lua has co-routines, how are you going to "easily transfer" that to assembly language?


I am not saying it can't be done, but I doubt that in general you can make easy transfers. If you can you're lucky, but it's equally possible that the semantic foundation of two languages are so different that it is better to start anew rather than trying to transfer your original idea.

The meaning behind you words never change but the sentence structure and rules changes and yes this is true with programming languages as well.

My point is that in some languages I cannot express the meaning that I had in my original program.


If you are not convinced, please solve the following puzzle.
I wrote a language that has distributed synchronous communication. That means you have two processes, one process sends a message to the other process, and the send and receive happen at the exact same moment in time, atomically. Like a person handing over a note to another person . In the general form, you have a bunch of processes synchronously and atomically exchanging messages between pairs of processes. Interesting problems arise when you have 3 processes, and all try to communicate with the 2 other processes. The result is exchange of 6 messages, in arbitrary order, at one moment in time.

This language is being used, people program their problems in it. Real world problems are being solved in it. I can provide references to published journal articles if you want.

Now, I would really like to have that in C, between computers in a network. How to to transfer that easily? Should be a piece of cake, right?

If you need a grammar of the language, I can supply that too.

The point is you are coding for some meaning 'idea/logic' but the way you tell the computer that meaning differs in structure from language to
language but the meaning never change if it does then you are not understanding exactly my point.

So what about meaning I cannot express in the new language?

I am studying computer science and have just went over
grammar / parsing. CFG is what used to create the rules for the language actually it is the rule for a language.

I would say it is a compiler description of the source language instead. The language itself does not contain its own grammar in explicit form. The C library has not C grammar, only a C compiler has the grammar.
Compilers are very similar no matter what language you use, since at the end of the day, you're translating source text to destination text. Structure of a compiler program has however little to do with the structure and meaning of the concepts of the language they translate.

Ie, structure of the compiler program, and structure (and semantics) of a language are two very different things, and not very related to each other.

This come to any language and every computer language at the end of the day translate to set of rules taken from the instruction set.
After that it is simply do this instruction then this one.

Of course, at the end, it all has to run on the same CPU. However this is similar to "We all make noise with our mouth, therefore all languages that we speak are the same." I don't buy that. I tried understanding French, and failed miserably.

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.

Game Design: Front end development that allows you to create the game environment, user interface with minimum programming as possible.

Game Development: Back end development that allows you to create AI events for mob and user events, it also allows you to program, game physics, game logic, calculations of your health and power, conditions, level sequence, map generation procedures, multiplayer interactions, conditions, game ports, etc.

Both western languages, countries pretty much next to each other, should be alright.

Now try to translate a language of the Eskimos to a language near the equator, say Mexicans. Eskimos have a huge number of words for 'snow' https://www.princeton.edu/~browning/snow.html A concept alien to Mexicans. Already in English, you'll have major trouble doing the translation, as you simply cannot express every subtlety of the Eskimo snow words.
No matter how hard you try, it won't fit. In addition, any English reader will fail to understand the meaning that an Eskimo intends. The reader simply does not have a matching conceptual frame.

Computer languages are not different. Prolog can only reason about facts and relations, how to put an imperative object-oriented program in there? The concept "assignment" is already alien in it.
I don't see how that counts as "easily transferred".

Similarly, Lua has co-routines, how are you going to "easily transfer" that to assembly language?


I am not saying it can't be done, but I doubt that in general you can make easy transfers. If you can you're lucky, but it's equally possible that the semantic foundation of two languages are so different that it is better to start anew rather than trying to transfer your original idea.

So how do you think these languages work? Each language translate to what the computer understand. I'm not saying noise is language instead when you imply rules to noise you could create language because the rules would transform into some meaning. Every language is translatable that doesn't mean its a one to one translation. One concept that will blow your mind is the ideal that subtraction can be done with just add operation. The ideas are basic things you want to convey. You can should be easily able to translate. Also you mentioned Functional vs OOP here you going on a tangent OOP is not a language but the rule on how to use a given language same with Functional. For instance Procedure vs OOP, C is procedural and C++ is OOP but if one looks closely one can see that you can still implement the same program in any of the two languages. However, C++ might make it easier for some problems. Functional languages are built around solving a problem on the ideal of functional tuning. This isn't to say that procedural programmer can not learn the language and not be able to solve the problem procedurally. They could also learn an opposite program tackle it from another prospective. Prospective is what you having problems with and that is common because some people can see the smaller points and not the larger picture. If you study language you will soon see the whole picture of both small sub parts and large parts. As human continue to invent one must say how was it done in the past. We see that we hardly ever invent thing that bring new concepts not tried. We have cell phones but we can trace back to telephone then telegram and so on.

I'm going to say that a library is not the language you miss understanding what is language and what is created by the language. The language is the things that is allowed to be correct. the statements, the creation of variables, and other features.

CFG is how the language is parsed while this is what the compiler does but what else does the compiler do? It translates. CFG stands for context free grammar not all language are context free. But the cfg will make up the language. Lets look at English what constructs a simple sentence? Subject verb object. But you should ask what makes these parts different and there lies things called grammam rules.

?

Bring more Pain

This topic is closed to new replies.

Advertisement