• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

most efficiently coded game

From a network protocol... Quake 2 was incredibly polished. I think the network code was better than Q3.
 
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.
 
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.
 
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.
 
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?
 
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.
 
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.
 
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.
 
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)
 
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.
 
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:
 
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 .


 
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.
 
Back
Top