1
Software`s Quake and Doom Engine Epic Games`Unreal Engine3 Valve`s Source engine --> fully featured reusable software development kits
2 Virtually all game engines contain a famililar set of core compontnts ,including the rendering engine, the collision and physics engine, the animation system ,the audio system,the game world object modle, the artificial intelligence system,and so on.
We will also get a first hand glimpse into the inner working of some popular game engines,such as Quake and Unreal , and some well-known middleware packages,such as the Havok Pyhsics library,the OGRE rendering engine,and Rad Game Tools`Granny 3D animation and geometry managment toolkit
Game studios are usually composed of five basic disciplines: engineers ,artists, game designers, producers,and other management and support staff(marketing, legal ,information technology /technical support, administrative etc)
Raph Koster fefines a "game" to be an interactive experience that provides the player with an increasingly challenging sequence of patterns which he or she learns and eventually masters.
Approximation and simplification are two of the game develpoer`s most powerful tools.when used skillfully,even a greatly simplified model can sometimes be almost indistinguishable form reality-and a lot more fun
At the core of every real-time system is the concept of deadline,An obvious example in video games is the requirement that the screen be updated at least 24 times per second in order to povide the illusion of motion(most games render the screen at 30 or 60 frames per second because these are multiples of an NTSC monitor`s refresh rate) Of course, there are many other kinds of deadlines in video games as well. A physics simulation may need to be updated 120 times per second in order to ramain stalbe. A character`s artificial intelligence system may nedd to think at least once every second to prevent the apearance of stupidity. The audio library may need to be called at least once every 1/60 second in order to keep the audio buffers filled and prevent audible glithes.
It`s safe to say that the more general-purpose a game engine or middleware component is, the less optimal it is for running a particular game on a particular platform.
This phenomenon occurs because designing any efficient piece of software invariably entails marking trade-offs,and those trade-offs are based on assumptions about how the software will be used and/or about the target hardware on which it will run .For example ,a rendering engine that was designed to handle intimate indoor environments probabily won`t be very good at rendering vast outdoor environments . The indoor engine might use a BSP tree on portal system to ensure no geometry is drawn that is being occlued by walls or objects that are closer to the camera. The outdoor egine,on the other hand, might use a less-exact occlusion mechanism,or none at all,but it probabily makes aggressive use of level-of-detail(LOD) techniques to ensure that distant objects are rendered with a minimum number of triangles,while using high resolution triangle meshes for geometry that is close to the camera.
The rendering technology employed by first-person shooters is almost always highly optimized and carefully tuned to the particular type of enviroment being rendered.
STLport This is a protable ,optimized inplementation of STL
Boost Boost is a powerful data structures and algorithms library,designed in the style of STL.(The online documentation for Boost is also a great place to learn a great deal about comptuter science)
Collision detection and rigid body dynamics are provided by the following well-known SDKs,
Havok is a popular industrial-strength physics and collision engine.
PhysX is another popular industrial-strength physics and collision engine,available for free download from DVIDIA.
Open Dyanmics Engine(ODE) is a well-known open source physics/collision package.
Every game engine,and really every large,complex C++ software application,requires a grab bag of useful software utilities,
{
Module Start-Up and Shut-Down
Assertions
Unit Testing
Memory Allocation
Math Library
Strings and Hashed string IDs
Debug printing and logging
Localization Services
Parasors(CSV, XML etc)
Profiling/Stats Gathering
Engine Config (INI files etc)
Random Number Generator
Curves & Surfaces Library
RTTI/Reflection & Serialization
Object Handles/Unique Ids
Asyncthronous FIle/IO
Memory Control
}
Page 24
这个周,似乎很混乱的说。。什么都不相干阿。。。而且各个方面的进度都没有起来。。。主要旋律还是在搞机器学习的大作业,此外整了一个Ununtu的系统。。然后这个周,发现Linux是如此的优美。。看来以后与此为伍了。。恩,挺好的。。然后,要准备下周的最优化算法的考试。。前几天有些小矛盾。。慢慢改正了把。。然后开始新的工作了!!
此外,这个周SRM终于变色了。。。恩,朝自己期望的方向又迈出了一步!!自己要不断努力呀!!!
这个周之后,下周:考试,然后算法作业+ 请qiqi Sarah吃饭等等一大堆的事情。。
然后继续我的Linux,让生活变得习惯而充实!!调研相关工作和Summer的图形学作业!
然后HanMM被调整系数了。。直接乘以0.75 ,或许这是一件好事!感觉貌似她实在是一个不值得深度交往的人。。就是如此。。努力进行自己的工作!!
然后下了几本游戏的书,有机会看以下,前面是自己看《Game Engine Architecture 》的时候做的笔记。。。