🎉 Celebrating 25 Years of GameDev.net! 🎉
Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!
![Realtime mocap used in Hellblade](/static/media/user/generic-user.png)
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/
![Things I've learned trying to draw grass.](https://uploads.gamedev.net/blogs/monthly_02_2017/blogentry-197293-0-21958100-1487779561.jpg)
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](/static/media/user/generic-user.png)
Use of the Golden Ratio when modeling plants
Found this on YouTube:
from:
https://en.wikipedia.org/wiki/Golden_ratio
Under …
![thoughts on fix-your-timestep and the spiral of death](/static/media/user/generic-user.png)
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 Clich](/static/media/user/generic-user.png)
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…
![Extra Credits - an online weekly video series about game design](/static/media/user/generic-user.png)
http://extra-credits.net/shows/extra-credits/
![6 Fascinating Facts About How Video Games are Good For You](/static/media/user/generic-user.png)
from the Intel website:
https://software.intel.com/en-us/articles/success-story-happy-jump?utm_source=outbrain&utm_medium=outbrain&utm_campaign=outbrain
![Beautiful code part 3 - bottom up design](/static/media/user/generic-user.png)
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…
![Beautiful code - part 2 - top down design](/static/media/user/generic-user.png)
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…
![Skinned mesh code part 5 - implementation example 2](/static/media/user/generic-user.png)
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…
![Skinned mesh code part 4 - implementation example](/static/media/user/generic-user.png)
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 code part 3 - mesh and controller memory pools](/static/media/user/generic-user.png)
// ----------------------------------- skinned mesh pool API ------------------------------------------- struct skinned_mesh_master{LPD3DXFRAME root;ID3DXAnimationController *controller;LPD3DXFRAME headbone;D3DXMESHCONTAINER_DERIVED *bo…
![Skinned mesh code part 2 - Rockland skinned mesh API](/static/media/user/generic-user.png)
Rockland skinned mesh API
// ------------------------ Rockland skinned mesh API -------------------------- // -------------------------------- load skinned mesh -----------------------------------// loads a skinned mesh from a .x file, and creates an animation controller…
![Skinned mesh code part 1 - Low level Microsoft code](/static/media/user/generic-user.png)
low level Microsoft code from DXUT.h and tiny.cpp. June 2010 DX9.0c SDK.
// -------------------------------------------------------------------------------// ----------------------------- directx skinned mesh code -----------------------// --------------------------------…
![L Spiro on scene managers vs state managers](http://public.gamedev5.net//public/style_images/master/snapback.png)
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=helv…
![Servant of the Lord on inheritance vs composition](/static/media/user/generic-user.png)
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)][f…
![Niklas Frykholm's articles on Managing Decoupling](/static/media/user/generic-user.png)
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…
![Beautiful code](/static/media/user/generic-user.png)
[ 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…
![Generic pattern maps](/static/media/user/generic-user.png)
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…
![A design for an indexed render queue](/static/media/user/generic-user.png)
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…
![An oo-ish version of my typical game architecture](/static/media/user/generic-user.png)
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…
![Background terrain chunk generation](/static/media/user/generic-user.png)
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](/static/media/user/generic-user.png)
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…
![Simple heuristic collision avoidance](/static/media/user/generic-user.png)
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 working definition of good code](/static/media/user/generic-user.png)
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…
![More thoughts on fixed vs variable timesteps](/static/media/user/generic-user.png)
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…
![insights and tips on hi performance game programming](/static/media/user/generic-user.png)
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 …