Skip to content

Commit

Permalink
(docs) rebuilding timeline database
Browse files Browse the repository at this point in the history
  • Loading branch information
snake-biscuits committed Aug 9, 2023
1 parent 37d2575 commit 4843745
Show file tree
Hide file tree
Showing 6 changed files with 400 additions and 0 deletions.
80 changes: 80 additions & 0 deletions docs/generate/timeline/db_init.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
CREATE DATABASE GameEngineHistory;

-- TODO:
-- more historic dates:
--- date pulled from storefront (beta periods, delistings, end of service)
--- developer split / founding (IW -> Respawn)
--- acquisitions, buyouts, bancruptcies, dissolutions

-- GAMES --
CREATE TABLE IF NOT EXISTS Game (
id INTEGER PRIMARY KEY,
name VARCHAR(64) NOT NULL,
);

CREATE TABLE IF NOT EXISTS GameChild ( -- demos, updates, sequels, mods & expansions
game INTEGER NOT NULL,
child INTEGER NOT NULL,
FOREIGN KEY (game) REFERENCES Game (id),
FOREIGN KEY (child) REFERENCES Game (id),
);

-- RELEASES --
CREATE TABLE IF NOT EXISTS Platform (
id INTEGER PRIMARY KEY,
name VARCHAR(64) NOT NULL,
);

CREATE TABLE IF NOT EXISTS Region (
id INTEGER PRIMARY KEY,
name VARCHAR(64) NOT NULL,
);

CREATE TABLE IF NOT EXISTS Release (
id INTEGER PRIMARY KEY,
game INTEGER NOT NULL,
platform INTEGER NOT NULL,
region INTEGER NOT NULL,
day DATE NOT NULL,
FOREIGN KEY (game) REFERENCES Game (id),
FOREIGN KEY (region) REFERENCES Region (id),
FOREIGN KEY (platform) REFERENCES Platform (id)
);

-- COMPANIES --
CREATE TABLE IF NOT EXISTS Publisher (
id INTEGER PRIMARY KEY,
name VARCHAR(64) NOT NULL,
);

CREATE TABLE IF NOT EXISTS ReleasePublisher (
release INTEGER NOT NULL,
publisher INTEGER NOT NULL,
FOREIGN KEY (release) REFERENCES Release (id),
FOREIGN KEY (publisher) REFERENCES Platform (id)
);

CREATE TABLE IF NOT EXISTS Developer (
id INTEGER PRIMARY KEY,
name VARCHAR(64) NOT NULL,
);

CREATE TABLE IF NOT EXISTS ReleaseDeveloper (
release INTEGER NOT NULL,
developer INTEGER NOT NULL,
FOREIGN KEY (release) REFERENCES Release (id),
FOREIGN KEY (developer) REFERENCES Developer (id)
);

-- ENGINE BRANCHES --
CREATE TABLE IF NOT EXISTS Branch (
id INTEGER PRIMARY KEY,
name VARCHAR(64) NOT NULL,
);

CREATE TABLE IF NOT EXISTS ReleaseBranch (
release INTEGER NOT NULL,
branch INTEGER NOT NULL,
FOREIGN KEY (release) REFERENCES Release (id),
FOREIGN KEY (branch) REFERENCES Branch (id)
);
184 changes: 184 additions & 0 deletions docs/generate/timeline/db_primary.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
-- GAMES --
INSERT INTO Game (name) VALUES
("Dark Messiah of Might & Magic Singleplayer"),
("Dark Messiah of Might & Magic Multi-Player");
("Half-Life: Blue Shift"),
("Half-Life: Opposing Force"),
("James Bond 007: Nightfire"),
("Quake"),
("Quake II"),
("Quake III Arena"),
("Quake III Arena (Dreamcast)"),
("Quake III: Team Arena"),
("Quake Champions o"),
("Quake Live"),
("Quake 64 (PC 2021)"),
("Call of Duty"),
("Call of Duty 2"),
("Call of Duty 4: Modern Warfare"),
("Anachronox"),
("Daikatana"),
("Counter-Strike: Online 2"),
("Titanfall: Online"),
("Vindictus"),
("Vindictus EU v1.69"),
("Heretic II"),
("Hexen II"),
("Soldier of Fortune"),
("Soldier of Fortune (Dreamcast)"),
("Soldier of Fortune II: Double Helix"),
("Star Trek: Voyager - Elite Force"),
("Star Wars: Jedi Knight - Jedi Academy"),
("Star Wars: Jedi Knight II - Jedi Outcast"),
("Titanfall"),
("Titanfall (Xbox360)"),
("Titanfall 2"),
("Apex Legends"),
("American McGee's Alice"),
("Heavy Metal F.A.K.K. 2"),
("SiN"),
("SiN: Gold"),
("SiN Episodes: Emergence"),
("Star Trek: Elite Force II"),
("Alien Swarm"),
("Alien Swarm: Reactive Drop"),
("Counter-Strike: Condition Zero"),
("Counter-Strike: Condition Zero - Deleted Scenes"),
("Counter-Strike: Global Offensive"),
("Counter-Strike: Source"),
("Counter-Strike"),
("Day of Defeat"),
("Day of Defeat: Source"),
("Deathmatch Classic"),
("Half-Life"),
("Half-Life 2"),
("Half-Life 2 (Xbox)"),
("Half-Life 2: Deathmatch"),
("Half-Life 2: Episode 1"),
("Half-Life 2: Episode 2"),
("Half-Life 2: Lost Coast"),
("Half-Life Deathmatch: Source"),
("Half-Life: Paranoia (Dreamcast)"),
("Half-Life: Source"),
("Left 4 Dead"),
("Left 4 Dead (Xbox360)"),
("Left 4 Dead 2"),
("Left 4 Dead 2 (Xbox360)"),
("Portal"),
("Portal 2"),
("Portal 2 (Xbox360)"),
("Richochet"),
("Source Filmmaker"),
("Source SDK 2013"),
("Team Fortress 2"),
("Team Fortress Classic"),
("The Orange Box (Xbox360)"),
("Alkaline"),
("Black Mesa"),
("Blade Symphony"),
("Bloody Good Time"),
("Call of Duty: Black Ops III"),
("Call of Duty: United Offensive"),
("Call of Duty: World at War"),
("Cocaine Diesel"),
("Contagion"),
("Cry of Fear"),
("DarkPlaces"),
("D-Day Normandy"),
("Dino D-Day"),
("Double Action: Boogaloo"),
("Entropy: Zero 2"),
("E.Y.E: Divine Cybermancy"),
("Fistful of Frags"),
("Fortress Forever"),
("G-String"),
("Garry's Mod"),
("Half-Life 2 VR Mod"),
("Halfquake Trilogy"),
("INFRA"),
("Kingpin: Life of Crime"),
("Medal of Honor: Allied Assault Demo"),
("Medal of Honor: Allied Assault"),
("Medal of Honor: Allied Assault - Spearhead"),
("Medal of Honor: Allied Assault - Breakthrough"),
("メルヘソバスターズ (Fairy Tale Busters)"),
("Momentum Mod Playtest"),
("Natural Selection"),
("NEOTOKYO"),
("Nexuiz Classic"),
("No More Room in Hell"),
("Quake: Dimension of the Past"),
("Return to Castle Wolfenstein"),
("The Ship"),
("Sven Co-op"),
("Synergy"),
("Tactical Intervention"),
("Team Fortress Quake"),
("The Beginner's Guide"),
("The Stanley Parable"),
("Vampire: The Masquerade - Bloodlines"),
("Warfork"),
("Warsow"),
("Wolfenstein: Enemy Territory"),
("WRATH: Aeon of Ruin"),
("Xonotic"),
("Zeno Clash"),
("Zeno Clash Demo");

INSERT INTO Platform (name) VALUES
("PC"),
("Dreamcast"),
("Xbox 360");

INSERT INTO Branch (name) VALUES
("ace_team.zeno_clash"),
("arkane.dark_messiah_mp"),
("arkane.dark_messiah_sp"),
("gearbox.blue_shift"),
("gearbox.nightfire"),
("id_software.qfusion"),
("id_software.quake"),
("id_software.quake2"),
("id_software.quake3"),
("id_software.quake64"),
("id_software.remake_quake"),
("id_software.remake_quake_old"),
("infinity_ward.call_of_duty1_demo"),
("infinity_ward.call_of_duty1"),
("infinity_ward.call_of_duty2"),
("infinity_ward.modern_warfare"),
("ion_storm.daikatana"),
("loiste.infra"),
("nexon.cso2_2018"),
("nexon.cso2"),
("nexon.vindictus"),
("nexon.vindictus69"),
("outerlight.outerlight"),
("raven.hexen2"),
("raven.soldier_of_fortune"),
("raven.soldier_of_fortune2"),
("respawn.apex_legends"),
("respawn.apex_legends13"),
("respawn.titanfall"),
("respawn.titanfall_x360"),
("respawn.titanfall2"),
("ritual.fakk2"),
("ritual.mohaa"),
("ritual.mohaa_bt"),
("ritual.mohaa_demo"),
("ritual.sin"),
("ritual.star_trek_elite_force2_demo"),
("ritual.star_trek_elite_force2"),
("strata.strata"),
("troika.vampire"),
("utoplanet.merubasu"),
("valve.alien_swarm"),
("valve.goldsrc"),
("valve.left4dead"),
("valve.left4dead2"),
("valve.orange_box"),
("valve.orange_box_x360"),
("valve.sdk_2013"),
("valve.sdk_2013_x360"),
("valve.source"),
("valve.source_filmmaker");
11 changes: 11 additions & 0 deletions docs/generate/timeline/game_child.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Quake,Hexen II
Quake,Quake II
Quake II,SiN
Quake II,Heretic II
Quake II,Half-Life
Quake II,Kingpin
Quake II,Quake III Arena
Half-Life,Half-Life: Opposing Force
Quake II,Daikatana
Quake II,Anachronox
Quake III Arena,Quake III: Team Arena
11 changes: 11 additions & 0 deletions docs/generate/timeline/make_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import sqlite3


# TODO:
# -- create database from db_init.sql
# -- load primary data from db_primary.sql
# -- load FK tables from .csv files (.csv from .sc)
# --- (SELECT id from ParentA if attr=${value}, ...)


# TODO: generate timeline webpage
File renamed without changes.
Loading

0 comments on commit 4843745

Please sign in to comment.