curiosity
system
outcome
conflict
activity
endogeneous
goal
surprise
rules
disequilibrium
Habitica
Mechanics
Gameplay
Dynamics
Use-case
UX
Feedback
Computer games are real-time interactive agent-based simulators.
Factorio
Naughty Dog games
Bethesda games
Valve games
INSIDE
Spore
Mechanics - interesting and well-balanced
Story - didn't need to have a story
Aesthetics - three different alien designs
Technology - first videogame of it's kind
Mechanics - many weapons, enemies, levels, locations,...
Story - unnamed hero (Doomguy) fighting against invading demons
Aesthetics - advanced sounds and music (for that time period)
Technology - pseudo 3D FPS perspective
Mechanics - exploration, crafting, gathering, building
Story - space-exploration game with heavy resource-gathering elements
Aesthetics - visually stunning lush world
Technology - (pseudo)random generated world
Mechanics - crowd, control, elo, gank, items, juking, kills, kiting, last hit, pushing, recall, points, terminology, warding, zoning
Story - a plethora of stories on LoL blog
Aesthetics - cartoonish style
Technology - MOBA (Multiplayer Online Battle Arena), Riot Servers
Mechanics - point-and-click adventure (go, move, examine, walk)
Story - the main element of the game
Aesthetics - biomechanic surrealism
Technology - not very ground-breaking
Space - 2D board
Objects - two players (paddles) and colliding ball, score
Actions - move up/down (1 degree of freedom), release the ball
Rules - the ball has a constant linear velocity. Angle of incidence is angle of reflection. Player earns one point when the other player fails to return the ball. The winner is the one who reaches eleven points before the opponent
move_paddle
;read input from joystick
lda joystick2;joy port 2
and #8 ;right
beq move_paddle_right
lda joystick2
and #4 ;#left
beq move_paddle_left
rts
check_ball_paddle_collision
lda sprite_collision
and #2
cmp #2
beq ball_paddle_collision
rts
ball_paddle_collision
lda sprite_collision
and #2
sta sprite_collision ;clear cbit
jsr set_ball_direction_up
rts
Prince of Persia guard controller
:underctrl
lda CharSword
cmp #2 ;in fighting mode?
beq FightCtrl ;yes
lda CharID
cmp #2 ;kid or shadowman?
bcc :cont
jmp GuardCtrl ;no
* What is he doing now?
:cont ldx CharPosn ;previous frame #
Source code: link
boolean P_CheckMissileRange (mobj_t* actor){
if (!P_CheckSight(actor, actor->target))
return false; // can’t see the target
if ( actor->flags & MF_JUSTHIT ) {
// just hit -> fight back!
actor->flags &= ~MF_JUSTHIT;
return true;
}
if (actor->reactiontime)
return false; // do not attack yet
dist = P_AproxDistance (actor, target)
- 64*FRACUNIT;
// no melee attack, so fire more
if (!actor->info->meleestate)
dist -= 128*FRACUNIT;
// check for ARCH-VILE
if (actor->type == MT_VILE){
if (dist > 14*64)
return false; // too far away
}
}
void() DeathSound = {
local float rs;
// water death sounds
if (self.waterlevel == 3) {
DeathBubbles(5);
sound (self, CHAN_VOICE,
"player/h2odeath.wav", 1, ATTN_NONE);
return;
}
rs = rint ((random() * 4) + 1);
if (rs == 1)
self.noise = "player/death1.wav";
if (rs == 2)
self.noise = "player/death2.wav";
if (rs == 3)
self.noise = "player/death3.wav";
if (rs == 4)
self.noise = "player/death4.wav";
if (rs == 5)
self.noise = "player/death5.wav";
sound (self, CHAN_VOICE, self.noise, 1, ATTN_NONE);
return;
};
A game engine is just a tool, nothing more. Game development is more about dedication, enthusiasm and ability to work very hard.
Computer games are real-time interactive agent-based simulators
Game Basic Elements: Mechanics, Story, Aesthetics, Technology
Game Mechanics: Space, Objects and Attributes, Actions, Rules
So you walk eternally through the shadow realms, standing against evil where all others falter. May your thirst for retribution never quench, may the blood on your sword never dry, and may we never need you again.