Gamedev info

Profile
Washington DC
Info on game developement
44 comments
45 entries
Advertisement
Norman Barrows
August 08, 2017
Realtime mocap used in Hellblade

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/

 

2,160 views
Norman Barrows
February 20, 2017
Things I've learned trying to draw grass.

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…

2,952 views
Norman Barrows
February 20, 2017
Use of the Golden Ratio when modeling plants

Use of the Golden Ratio when modeling plants

Found this on YouTube:

from:

https://en.wikipedia.org/wiki/Golden_ratio


Under th…

3,971 views
Norman Barrows
February 08, 2017
Creating assets for a nature scene - a 6 part Blender YouTube tutorial

Creating assets for a nature scene - a 6 part Blender YouTube tutorial

Found this on YouTube - very informative.

2,942 views
Norman Barrows
February 03, 2017
thoughts on fix-your-timestep and the spiral of death

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…

5,842 views
Norman Barrows
February 03, 2017
Increasing ET accuracy in fix-your-timestep

Increasing ET accuracy in fix-your-timestep

The typical implementation of fix-your-timestep looks something like this:while ! quitgame { start_timer render ET = elapsed_time process_input update_all(ET) }
But to run physics at a constant speed, what you really want is the elap…

3,875 views
Norman Barrows
February 02, 2017
Photrealism

An excellent video on techniques used to achieve photorealism in computer graphics.

2,184 views
Norman Barrows
June 08, 2016
The Grand List Of Console Role Playing Game Clich

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…

3,348 views
Norman Barrows
June 30, 2015
Beautiful code part 3 - bottom up design
Beautiful code part 3 - bottom up design

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…
1,917 views
Norman Barrows
June 30, 2015
Beautiful code - part 2 - top down design
Beautiful code - part 2 - top down design

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…
1,965 views
Norman Barrows
June 30, 2015
Skinned mesh code part 5 - implementation example 2
Skinned mesh code part 5 - implementation example 2

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…
2,221 views
Norman Barrows
June 30, 2015
Skinned mesh code part 4 - implementation example
Skinned mesh code part 4 - implementation example

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…
2,367 views
Norman Barrows
June 30, 2015
Skinned mesh code part 3 - mesh and controller memory pools
Skinned mesh code part 3 - mesh and controller memory pools
// ----------------------------------- skinned mesh pool API ------------------------------------------- struct skinned_mesh_master{LPD3DXFRAME root;ID3DXAnimationController *controller;LPD3DXFRAME headbone;D3DXMESHCONTAINER_DERIVED *bo…
2,165 views
Norman Barrows
June 30, 2015
Skinned mesh code part 2 - Rockland skinned mesh API
Skinned mesh code part 2

Rockland skinned mesh API
// ------------------------ Rockland skinned mesh API -------------------------- // -------------------------------- load skinned mesh -----------------------------------// loads a skinned mesh from a .x file, and creates an animation controller…
2,447 views
Norman Barrows
June 30, 2015
Skinned mesh code part 1 - Low level Microsoft code
skinned mesh code part 1

low level Microsoft code from DXUT.h and tiny.cpp. June 2010 DX9.0c SDK.
// -------------------------------------------------------------------------------// ----------------------------- directx skinned mesh code -----------------------// --------------------------------…
3,130 views
Norman Barrows
June 30, 2015
L Spiro on scene managers vs state managers
L Spiro on scene managers vs state managers

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…
2,376 views
Norman Barrows
June 30, 2015
Servant of the Lord on inheritance vs composition
Servant of The Lord on inheritance vs composition

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…
1,822 views
Norman Barrows
January 26, 2015
Beautiful code
Beautiful code

[ 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…
2,256 views
Norman Barrows
January 26, 2015
Generic pattern maps
generic pattern maps

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…
2,071 views
Norman Barrows
January 26, 2015
A design for an indexed render queue
A design for an indexed render queue


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…
1,820 views
Norman Barrows
January 26, 2015
An oo-ish version of my typical game architecture
An oo-ish version of my typical game architecture


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…
2,109 views
Norman Barrows
January 26, 2015
Background terrain chunk generation
background terrain chunk generation

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…
1,708 views
Norman Barrows
January 26, 2015
Simple sliding collisions
Simple sliding collisions

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…
1,540 views
Norman Barrows
January 26, 2015
Simple heuristic collision avoidance
Simple heuristic collision avoidance

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 …
2,420 views
Norman Barrows
January 26, 2015
a working definition of good code
a working definition of good code


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…
1,345 views
Norman Barrows
January 05, 2015
More thoughts on fixed vs variable timesteps
More thoughts on fixed vs variable time steps

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…
2,490 views
Norman Barrows
December 28, 2014
insights and tips on hi performance game programming
insights and tips on hi performance game programming.

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 …
2,120 views
Advertisement

Popular Blogs

shawnhar
Generalist
101 Entries
9 Followers
15 Entries
10 Followers
johnhattan
Programmer
1,277 Entries
47 Followers
ApochPiQ
Generalist
628 Entries
44 Followers
dgreen02
Generalist
338 Entries
56 Followers
Advertisement