Jump to content

  • Log In with Google      Sign In   
  • Create Account

Some Queries about game dev?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 Tjandy   Members   -  Reputation: 108

Like
0Likes
Like

Posted 10 September 2013 - 05:26 AM

Just interested and curious to know about some of game dev?

 

What is this 'Engine',libraries(to be attached to engine) and some other stuff?I can't remember!

 

Sounds silly,no neg comment please...

 

 



Sponsor:

#2 molehill mountaineer   Members   -  Reputation: 595

Like
2Likes
Like

Posted 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


Edited by molehill mountaineer, 10 September 2013 - 06:06 AM.


#3 Tjandy   Members   -  Reputation: 108

Like
0Likes
Like

Posted 10 September 2013 - 06:09 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 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

 

 

Thank you!

 

May I also know the list of components to make a game? Do you happen to have a link to a thread of such?

 

Like Development Kit and stuff?

 

EDIT: Reply to your new edit

 

 

Thanks,it is very easy to be understood!

 

Thanks again!


Edited by Tjandy, 10 September 2013 - 06:10 AM.


#4 3Ddreamer   Crossbones+   -  Reputation: 3167

Like
1Likes
Like

Posted 10 September 2013 - 07:12 AM

I actually look at 4 major areas useful for a modern, rasterized game to play thru a computer to your screen, all containing libraries of coding.

 

1) System - includes hardware and a Runtime Environment working with the Operating System (one of several major Runtime Environments which may come with the computer from the factory or be installed later, several actually being allowed and installed in the same client)  The Runtime Environment includes the lower level coding needed in the form of various libraries with interfaces or even Software Development Kits (SDK) to develop applications and software which will run with machines using that particular version of that OS or made for any system which has that particular Runtime Environment version or earlier version installed. If that is confusing, then just remember that the Runtime Environment comes with (or allows third party tools to create) coding which is expected to be fully compatible with that Runtime or earlier version which is installed.  It gives libraries of lower level coding to provide the APIs, compilers, and various other tools for all levels of coding to be read implemented in the computer. (Note: some higher level and lower level coding tools are included but more of general tools for nuts and bolts programming, created "from scratch" applications and software which are original from top to bottom. These all either come with the Runtime or are made for it, many no cost and can be downloaded.  Highly skilled coding and experience is needed usually to make large applications and software here, sometimes requiring a team.)

 

2) Development Framework - such as SDKs, IDEs (Visual Studio, MonoDevelop, Java IDE, etc.), or game engines (In order of size, complexity, and generalization: 1)IDEs 2)Game Engines 3)SDKs). These are all various sizes of framework which provide the ability to create applications and software targeting a specific Runtime Environment in most cases, though sometimes as in the case Java Runtime Environment or Mono they can be cross-platform with some time spent in testing and debugging.  These three categories of framework provide more of the coding already complete such as UI interfaces, default sounds, access to lower level graphics APIs (OpenGL or Direct3D), input interfaces-device, voice command, or other inputs, configuration interfaces, compilers/ de-compilers, and so forth.  So these frameworks all are more specific toward goals than the tools in the previous system based Runtime Environments and frameworks include libraries made for certain genres of development.   There is less work in making custom made tools and applications within the software in terms of coding with one of these dedicated frameworks, being that a huge collection of standard libraries come with the framework to add to those of the Runtime Environment. Often the developer can do relatively little or no lower level coding with a framework, freeing them to spend more time on end-user features. 

 

3) Default libraries - may be GUIs, templates (including games in some cases which come with a game engine as a building foundation for you), specialized tools ( such as terrain editors, effects editors, and so on ),  actual ingame assets (such as models, effects, sounds, et cetera), and the like.

 

4) Third party libraries - can include any additions to the above items which are original creations: plug-ins (external connected libraries), add-ons (attached libraries), and patches (internal libraries).

 

 

That's a decent summary and over-simplification, but you get the idea now.  smile.png

 

 

Clinton


Edited by 3Ddreamer, 10 September 2013 - 07:25 AM.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#5 TheChubu   Crossbones+   -  Reputation: 4819

Like
1Likes
Like

Posted 10 September 2013 - 07:22 AM

And here I thought this would be a SQL thread :P


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#6 3Ddreamer   Crossbones+   -  Reputation: 3167

Like
0Likes
Like

Posted 10 September 2013 - 07:41 AM

SQL is only one area of the game dev jungle, so choose your path wisely.  laugh.png

 

wink.png

 

Enjoy!

 

Clinton


Edited by 3Ddreamer, 10 September 2013 - 07:55 AM.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#7 Karsten_   Members   -  Reputation: 1655

Like
1Likes
Like

Posted 10 September 2013 - 08:57 AM

The term "engine" is perhaps a bit overused in game development. Typically it is just a collection of other separate libraries (i.e OpenGL, glm, OpenAL, SDL, libpng etc...) with a bit of glue code to hold it all together as a framework (often including extra things like a scripting layer, serialization, etc...).


Edited by Karsten_, 10 September 2013 - 08:58 AM.

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.


#8 Satharis   Members   -  Reputation: 1280

Like
1Likes
Like

Posted 10 September 2013 - 02:30 PM

The term "engine" is perhaps a bit overused in game development. Typically it is just a collection of other separate libraries (i.e OpenGL, glm, OpenAL, SDL, libpng etc...) with a bit of glue code to hold it all together as a framework (often including extra things like a scripting layer, serialization, etc...).

I think the term is fine personally, it refers to he code below the gameplay layer that acts as a mediator between the hardware, the code, and the user.

Once you make any sort of game it becomes pertty obvious what you would call "engine" code and what would be "gameplay" code, for instance a subsystem to register objects to be drawn or a method call for an object to draw itself would basically be considered engine code since it is like a black box direct to the hardware, you say what to render and it automagically gets drawn onscreen.

Or handling input, the engine code would be the actual tracking and forwarding of events and updating some kind of class or structure representing state, whereas the gameplay code would be taking that state and using it to move a ball or something onscreen. The reason terminology like engine is used is because there is a lot of generic points where you could reuse code for a similar game, or even a non-similar one.

The main reason we don't have one big super engine everyone uses is because every game has diffeent requirements and big engines try to be generic and still aim at one thing. Like unreal would be a pretty poor fit to make a music game out of when it is designed for perspective shooters. Could you do it? Probably, but it'd basically be you shoehorning things together to act as you like. Even an engine ends up designed as generic as possible it has to be re-specialized in code to handle a particular type of game.

If you're new to gamedev I'd suggest a library like SDL or SFML if you're using C++, or a similar library in another language. They take care of the basics that you don't necessarily need to worry about like creating a window and abstracting away basic rendering and input, then you can worry about just making a framework for your game code and treat SDL/SFML as just a library.

#9 3Ddreamer   Crossbones+   -  Reputation: 3167

Like
1Likes
Like

Posted 10 September 2013 - 07:59 PM


If you're new to gamedev I'd suggest a library like SDL or SFML if you're using C++, or a similar library in another language. They take care of the basics that you don't necessarily need to worry about like creating a window and abstracting away basic rendering and input, then you can worry about just making a framework for your game code and treat SDL/SFML as just a library.

 

Yeah, that's the whole strategic purpose of using a game engine or even a custom collection of the lesser abstract libraries.   One way or another, the game developer will have to extend the framework which they chose by creating game source code (the game coding framework itself) upon which they make versions of game (version 1.0, 1.1, 2.0, 2.1, 2.5, 3.0, etc.). As the game developer becomes more sophisticated, then the need for Source Control or Version Control software increases, which is the efficient way of managing development and keeping documentation (a sort of map of the lay-out) so good coding doesn't get lost in the processes but reused as Game Source Code.

 

 

Clinton


Edited by 3Ddreamer, 10 September 2013 - 08:00 PM.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#10 Tjandy   Members   -  Reputation: 108

Like
0Likes
Like

Posted 10 September 2013 - 09:27 PM

Thanks all.I appreciate your works and information.

 

Thank you! 



#11 Tjandy   Members   -  Reputation: 108

Like
0Likes
Like

Posted 20 September 2013 - 07:49 AM

Another Question:

 

 

What is the different between SDK,IDE,Engine and(I'm not sure) etc ??

 

 

In a few weeks time it would be a long 2-3 months school holiday for me...So instead of enjoying and playing throughout the months,I actually wanna learn and experience something new....

 

Thanks for answering!

 

 

EDIT: Is UDK,Unreal Engine,Unity or Cry Engine better? An engine that supports multiplayer online,joining a server and stuff? I want to make something in my freetime like a surviving game,a sandbox game(maybe),where you can craft and place doors,and stuff..of a broken building or such...

 

 

Don't know about modelling designing,are they included in the sdk/engines?(I guess not,so do we attach the images and stuff(sound effects,etc) ??

The 3D modelling/animation,can I create them using seperate softwares( I learnt 3Dsmax)..

 

 

 

 

Thanks!(sorry for these 'silly' questions)


Edited by Tjandy, 20 September 2013 - 07:54 AM.


#12 3Ddreamer   Crossbones+   -  Reputation: 3167

Like
1Likes
Like

Posted 23 September 2013 - 06:32 PM

This is going to be an over-simplification and over-generalization for the sake of clarity in explaining, but here goes:

 

SDK stands for Software Development Kit (a software in its own right usually) and, like the name "kit" implies, is good enough for most development situations in creating software and applications.  Each software developed contains applications inside it with a variety of different kinds of libraries attached or needed, so having an SDK framework which is a pre-made work pipeline is a huge labor and time saver.  A common example of an SDK is the Windows SDK to make Windows based applications to run in the .NET Framework under the Common Language Runtime Environment, such as a game GUI which is targeting the Windows OS.  Often an SDK works alongside other SDKs within a greater IDE, but they almost always may be used independently in most cases.  Some SDKs are designed to be used with a certain game engine, which is an example of a third party SDK.

 

IDE stands for Integrated Development Environment and generally includes two or more software and also individual applications combined with interfaces to connect with internal or external libraries (which are more comprehensive than the typical SDK) to provide a more extensive framework for development of software or applications.  An IDE tends to be more expansive in general than other frameworks and depends on the developer having experience enough to be able to build the nuts and bolts, nitty-gritty original coding from bottom to top, high and low level coding.  Developers who are going to make software mostly "from scratch" will tend to consider more closely whether to use an IDE or not.  An IDE is most efficient for a team to use, but some indy developers might have the time to spend the long hours in coding new software with an IDE. Individual applications are well inside the ability of most coders to use an IDE to develop them, so they are not limited to only software development.

 

Game engines are development frameworks which share some traits with both SDKs and IDEs but a game engine is deliberately designed for game development and within pre-determined objectives according to the game engine developers.  An example is a Java based 2D game engine targeting mobiles. Another is a 3D game engine using C++ for PCs and consoles.  Within these general goals are sub-sets such as RPG, FPS, Turn-based, online, offline, MOMP, and so on.  Some game engines require a third party SKD or IDE to really take advantage of the full features of the game engines, maybe even allow a plug-in connections with another framework.

 

 

All of the major game engines are about at par with one another, so which is best is really a matter of preference according to your goals.  Unity and Torque 3D are examples which have huge support in the form of art assets shopping ( Artists selling art made for them, but some no cost or low cost items are available, too.).

 

 

 

Clinton


Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS