most efficiently coded game

WicKeD

Golden Member
Nov 20, 2000
1,893
0
0
From a network protocol... Quake 2 was incredibly polished. I think the network code was better than Q3.
 

BassBomb

Diamond Member
Nov 25, 2005
8,390
1
81
Source games

Ran incredibly well and still good looking even on bad hardware
 

Martimus

Diamond Member
Apr 24, 2007
4,490
157
106
Other than the dozen games or so that I wrote when I was a kid, how am I supposed to know how efficient a game is written?

Of the games I wrote, Territories was probably the most efficient, and Rescue was probably the least (since it was the first game I wrote.) My favorite was either Nova, or 2012.
 

Aikouka

Lifer
Nov 27, 2001
30,383
912
126
I don't think we can really tell unless we actually look at the code. Even if one aspect (the networking) is good, that doesn't mean the rest of the game is.
 

BurnItDwn

Lifer
Oct 10, 1999
26,330
1,841
126
What constitues "efficiently coded" in your eyes?
Lowest Memory usage? Lowest CPU utilization? Best network handling? Least lines of code? Coding language choice?
Too many variables and too vague to give a real answer.
 

lxskllr

No Lifer
Nov 30, 2004
59,463
9,977
126
I liked UT2k4s netcode. I played fairly successfully on 56k for over 2 years before I got cable.
 

wanderer27

Platinum Member
Aug 6, 2005
2,173
15
81
Anyone here ever play StarFlight?

Man, that game was incredible for being as small as it was - how'd they pack all that in there?
 

Skunkwourk

Diamond Member
Dec 9, 2004
4,662
1
81
I was always pretty surprised how well Warcraft 3 looked and played on older systems.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Wolfenstein and Doom


A lot of the old coin-op arcade games.
Most were written in assembly language, byte for byte. Consider a game like Pacman is only 15KB. It had to fit onto two 8KB eproms.
 

Marty502

Senior member
Aug 25, 2007
497
0
0
Serious Sam, UT, Quake 3 and Warcraft 3 come to my head. HL2 runs fine on lesser systems too. Also, most NFS games before Hot Pursuit 2 had phenomenal performance too.
 

Zenoth

Diamond Member
Jan 29, 2005
5,202
216
106
On a pure technical side and efficiency I would definitely have to say the Source Engine, with Unreal Engine 3.0 being just behind, in my opinion.
 

spittledip

Diamond Member
Apr 23, 2005
4,480
1
81
I have to say, I only demoed TF2 during the free weekend, but i was incredibly impressed with how smoothly it played from a netcode standpoint. I have never played a game with such seemingly efficient netcode. It also seems to run fairly smoothly in general, So I guess my vote is for source. (or other)
 

spittledip

Diamond Member
Apr 23, 2005
4,480
1
81
Originally posted by: Modelworks
A lot of the old coin-op arcade games.
Most were written in assembly language, byte for byte. Consider a game like Pacman is only 15KB. It had to fit onto two 8KB eproms.

That isn't exactly a fair comparison considering the complexity of the games nowadays. Obviously older games be the most efficient due to the simplicity of the programs.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Originally posted by: spittledip
Originally posted by: Modelworks
A lot of the old coin-op arcade games.
Most were written in assembly language, byte for byte. Consider a game like Pacman is only 15KB. It had to fit onto two 8KB eproms.

That isn't exactly a fair comparison considering the complexity of the games nowadays. Obviously older games be the most efficient due to the simplicity of the programs.

Simplicity ?
I take it you don't do assembly programming. Those games are extremely complex. It is much easier to code when you have gigabytes of memory, virtual memory, sdk, high level languages, etc. Try cramming graphics, sound, ai into a very tiny space with only a text interface to work with.

Game programming is quite a bit easier on the programmer now than it was.

Example:
To print Hello World in assembly on the same cpu that ran pacman:

ORG 0 starts from here when power is turned on
DI ;

; Let's set VDP write address to #0000
XOR A
OUT (CMDP),A
LD A,#40
OUT (CMDP),A

; Now let's clear first 16Kb of VDP memory
LD B,0
LD HL,#3FFF
LD C,DATAP
CLEAR:
OUT (C),B
DEC HL
LD A,H
OR L
NOP ; Let's wait 8 clock cycles just in case VDP is not quick enough.
NOP
JR NZ,CLEAR

; Now it is time to set up VDP registers:
;----------------------------------------
; Register 0 to #0
;
; Set mode selection bit M3 (maybe also M4 & M5) to zero and
; disable external video & horizontal interrupt
LD C,CMDP
LD E,#80

OUT (C),A
OUT (C),E
;----------------------------------------
; Register 1 to #50
;
; Select 40 column mode, enable screen and disable vertical interrupt

LD A,#50
INC E
OUT (C),A
OUT (C),E
;----------------------------------------
; Register 2 to #0
;
; Set pattern name table to #0000

XOR A
INC E
OUT (C),A
OUT (C),E
;----------------------------------------
; Register 3 is ignored as 40 column mode does not need color table
;
INC E
;----------------------------------------
; Register 4 to #1
; Set pattern generator table to #800

INC A
INC E

OUT (C),A
OUT (C),E
;----------------------------------------
; Registers 5 (Sprite attribute) & 6 (Sprite pattern) are ignored
; as 40 column mode does not have sprites

INC E
INC E
;----------------------------------------
; Register 7 to #F0
; Set colors to white on black

LD A,#F0
INC E
OUT (C),A
OUT (C),E
;----------------------------------------

; Let's set VDP write address to #808 so, that we can write
; character set to memory
; (No need to write SPACE it is clear char already)
LD A,8
OUT (C),A
LD A,#48
OUT (C),A

; Let's copy character set
LD HL,CHARS
LD B, CHARS_END-CHARS
COPYCHARS:
LD A,(HL)
OUT (DATAP),A
INC HL
NOP ; Let's wait 8 clock cycles just in case VDP is not quick enough.
NOP
DJNZ COPYCHARS

; Let's set write address to start of name table
XOR A
OUT (C),A
LD A,#40
OUT (C),A

; Let's put characters to screen
LD HL,ORDER
LD B,ORDER_END-ORDER
COPYORDER:
LD A,(HL)
OUT (DATAP),A
INC HL

JR OVERNMI
NOP
NOP

; Here is address #66, that is entry for NMI
RETN ;Return from NMI

OVERNMI:
DJNZ COPYORDER

; The end
HALT

; Character set:
; --------------
ORDER:
DEFB 1,2,3,3,4,0,5,4,6,3,7
ORDER_END:

CHARS:

; H
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %11111000
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %00000000
; e
DEFB %00000000
DEFB %00000000
DEFB %01110000
DEFB %10001000
DEFB %11111000
DEFB %10000000
DEFB %01110000
DEFB %00000000
; l
DEFB %01100000
DEFB %00100000
DEFB %00100000
DEFB %00100000
DEFB %00100000
DEFB %00100000
DEFB %01110000
DEFB %00000000
; o
DEFB %00000000
DEFB %00000000
DEFB %01110000
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %01110000
DEFB %00000000
; W
DEFB %10001000
DEFB %10001000
DEFB %10001000
DEFB %10101000
DEFB %10101000
DEFB %11011000
DEFB %10001000
DEFB %00000000

; r
DEFB %00000000
DEFB %00000000
DEFB %10110000
DEFB %11001000
DEFB %10000000
DEFB %10000000
DEFB %10000000
DEFB %00000000
; d
DEFB %00001000
DEFB %00001000
DEFB %01101000
DEFB %10011000
DEFB %10001000
DEFB %10011000
DEFB %01101000
DEFB %00000000
chars_end:
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
Originally posted by: sandorski
Ya, Assembly is a bitch. The main reason I dropped out of College! :laugh:

yeah, it can be :)
I was lucky/unlucky enough to grow up at the time when the only real choice was assembly or some half ass basic language that couldn't really run worth a damn on the hardware .


 

Regs

Lifer
Aug 9, 2002
16,665
21
81
COD4 is by far the most beautiful and efficant game to date in my mind. There are few others that look better, like Crysis, but are resource hogs.