A very interesting article on Ninja Theory's realtime motion capture technology as seen in Hellblade, and demoed at GDC and at SIGGRAPH.
https://www.engadget.com/2017/08/08/ninja-theory-hellblade-motion-capture-demo-video/
1. you can draw a million animated plants with no culling using instancing with static instance data. dynamic data is another story ( 60 vs 23 FPS i7 6700K 4Ghz single thread, GTX1080 10-20% overclocked, vsync on at 60Hz, DX9 hardware instancing, single static vs single dynamic buffer, LOCK_WRITEON…
Use of the Golden Ratio when modeling plants
Found this on YouTube:
from:
https://en.wikipedia.org/wiki/Golden_ratio
Under th…
thoughts on fix-your-timestep and the spiral of death:
in the fix-your timestep algo its generally assumed that on average ET will be < DT.
with no ET cap, when accumulator >= 2*DT, fix-your-timestep will update twice before rendering (IE it drops a frame).
while this is only an issue with sl…
The Grand List Of Console Role Playing Game Cliches
from
http://project-apollo.net/text/rpg.html
There are few people who love a good console RPG more than I. Games like Final Fantasy, Grandia, and Skies of Arcadia set a standard of majesty and wonder and immersion that American game designers are…
http://extra-credits.net/shows/extra-credits/
from the Intel website:
https://software.intel.com/en-us/articles/success-story-happy-jump?utm_source=outbrain&utm_medium=outbrain&utm_campaign=outbrain
an example of beautiful code using bottom up design.
with this method, you start with the lowest level stuff, then add higher level layers until you have a sufficiently high level API.
so you go from ugly low level stuff to a beautiful high level API.
This examp…
an example of beautiful code.
this was a result of top down design. IE high level routines fist, lowest level routines last.
first, the algo was written in comments in english.
then the highest level code was written, defining the lower level routines and their…
another implementation example from caveman 3.0:
this is the actual code that draws band members and NPCs in the game now.
void draw_caveman2(int a){// a is animal #int n;// n is npc #location f;// npc location for frustum cullint rad;// rad is…
An implementation example from Caveman 3.0:
// called by draw_skinmesh_caveman // draws eyeballs attached to the headbone with an offset.// to draw a static mesh relative to the root of a bone, // start with the transform matrix for the object r…
// ----------------------------------- skinned mesh pool API ------------------------------------------- struct skinned_mesh_master{LPD3DXFRAME root;ID3DXAnimationController *controller;LPD3DXFRAME headbone;D3DXMESHCONTAINER_DERIVED *bo…
Rockland skinned mesh API
// ------------------------ Rockland skinned mesh API -------------------------- // -------------------------------- load skinned mesh -----------------------------------// loads a skinned mesh from a .x file, and creates an animation controller…
low level Microsoft code from DXUT.h and tiny.cpp. June 2010 DX9.0c SDK.
// -------------------------------------------------------------------------------// ----------------------------- directx skinned mesh code -----------------------// --------------------------------…
an excellent description of scene and state managers by L Spiro from a recent thread:
[color=rgb(40,40,40)][font=helvetica][background=rgb(250,251,252)]A scene manager manages a scene in your game.[/background][/font][/color]
[color=rgb(40,40,40)][font=helve…
a very lucid explanation of inheritance vs composition by Servant of the Lord, from a recent thread:
[color=rgb(40,40,40)][font=helvetica][background=rgb(250,251,252)]Classes should favor [/background][/font][/color]composition[color=rgb(40,40,40)][fo…
I just stumbled across this excellent series of articles right here on gamedev...
https://www.gamedev.net/page/resources/_/technical/game-programming/managing-decoupling-r3034
https://www.gamedev.net/page/resources/_/technical/game-programming/managing…
[ i'm still working on this concept, so this is a very rough draft... ]
writing beautiful code.
sometimes you code, and it seems as straightforward as:
"all nearby units - protect/serve - wilshire and santa monica". (high fives all around - but no touching! ).
and sometimes you code, a…
often times you need a pattern for something in a game.
for example: what texture tile to use with a given ground quad.
i used to create randomly generated pattern maps for different things:
plants, rocks, bushes, trees, ground quad textures, etc.
then it occurred to me that you cou…
drawing information is stored in a drawinfo struct. it could also be hashed into an int, etc.
the queue consists of an un-ordered list of drawinfo structs.
the queue is supplemented by a multi-dimensional indexing system that
allows processing of the queue in optima…
all one code block, i was too lazy to split it up for posting ! .
non-oo: void main{init_prog run_proguninit_prog}globals: boolean: quit_progetc. oo: class program{globals such as quitproginit becodes constrctoruninit becomes destructorvoid run_pro…
the foreground task (the game) generates terrain chunks on the fly as
needed from underlying world map data, and stores them in a cache for
use by the renderer. chunks are stored first in inactive cache slots,
and then on a LRU basis once the cache is full.
the backgr…
simple sliding collisions:
for AABBs:
1. start by calculating how much to move the player as usual:
dx = player.speed * sin(player.yr)
dz = player.speed * cos(player.yr)
2. apply dx and dz, and check for collsions as usual.
3. if a collison is indicated:
3a. apply JUST dx and chec…
Heuristic collison avoidance:
1. check for collision some distance in front of the player (say 15 feet).
2. if collsiosn is indicated:
2.a. check for collision ahead and to the left of player (15 feet ahead, and 15 feet left).
2.b. check for collision ahead and …
A definition of "good" code (in no particular order):
1. correct - the code should work correctly.
2. brief - brevity is preferable. but not at the sake of readability.
3. simple - simpler code is preferable to more complex code.
4. bullet proof - the code should be abl…
For some reason, this topic keeps popping into my mind. I suspect its because I wasn't convinced it was the best approach - even though i couldn't quite say why.
After my last round of thinking about it, i had come to the conclusion that the "fix-your-tim…
an excellent lecture series of 5 videos on the development of a programming language specifically for hi performance games.
By Johnathan Blow, developer of Braid and The Witness.
when you listen to the guy talk, you can tell he's done his time in …