[game-data-packager] 01/01: add genre: metadata as groundwork for GUI/TUI
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Mon Mar 9 20:53:27 UTC 2015
This is an automated email from the git hooks/post-receive script.
detiste-guest pushed a commit to branch master
in repository game-data-packager.
commit d9ed3a24b65ecf3f3bc97fd412171677ff3b9cdf
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Mon Mar 9 21:52:20 2015 +0100
add genre: metadata as groundwork for GUI/TUI
+ stats.py non-documented tool
---
data/descent1.yaml | 1 +
data/descent2.yaml | 1 +
data/doom3.yaml | 1 +
data/hexen2.yaml | 1 +
data/ja.yaml | 1 +
data/jk2.yaml | 1 +
data/lgeneral.yaml | 1 +
data/quake.yaml | 1 +
data/quake2.yaml | 1 +
data/quake3.yaml | 2 ++
data/rott.yaml | 1 +
data/rtcw.yaml | 1 +
data/spear-of-destiny.yaml | 1 +
data/strife.yaml | 1 +
data/syndicate.yaml | 1 +
data/theme-hospital.yaml | 1 +
data/tyrian.yaml | 1 +
data/wolf3d.yaml | 1 +
doc/adding_a_game.mdwn | 11 +++++---
game_data_packager/__init__.py | 9 ++++++-
game_data_packager/games/doom_common.py | 2 ++
game_data_packager/games/residualvm_common.py | 2 ++
game_data_packager/games/scummvm_common.py | 2 ++
game_data_packager/stats.py | 39 +++++++++++++++++++++++++++
24 files changed, 79 insertions(+), 5 deletions(-)
diff --git a/data/descent1.yaml b/data/descent1.yaml
index 88873b8..8183bcd 100644
--- a/data/descent1.yaml
+++ b/data/descent1.yaml
@@ -3,6 +3,7 @@
longname: "Descent: First Strike"
copyright: © 1994 Parallax Software Corporation
engine: d1x-rebirth
+genre: Flight simulator
packages:
descent1-demo-data:
diff --git a/data/descent2.yaml b/data/descent2.yaml
index 31c50c6..7c758e0 100644
--- a/data/descent2.yaml
+++ b/data/descent2.yaml
@@ -3,6 +3,7 @@
longname: Descent II
copyright: © 1995 Parallax Software Corporation
engine: d2x-rebirth
+genre: Flight simulator
packages:
descent2-demo-data:
diff --git a/data/doom3.yaml b/data/doom3.yaml
index 8dc11a4..2b9054f 100644
--- a/data/doom3.yaml
+++ b/data/doom3.yaml
@@ -4,6 +4,7 @@ compress-deb: false
longname: 'Doom 3 (original or BFG Edition)'
try_repack_from: [/usr/local/share/dhewm3]
engine: dhewm3-doom3
+genre: First-person shooter
packages:
doom3-data:
diff --git a/data/hexen2.yaml b/data/hexen2.yaml
index 8c5f971..f47d30c 100644
--- a/data/hexen2.yaml
+++ b/data/hexen2.yaml
@@ -4,6 +4,7 @@ shortname: hexen2
longname: Hexen II
copyright: © 1997 Raven Software
engine: "uhexen2 | hexen2-engine"
+genre: First-person shooter
help_text: |
For hexen2-data, you must provide the version 1.11 patched versions
diff --git a/data/ja.yaml b/data/ja.yaml
index c4e6253..ce57707 100644
--- a/data/ja.yaml
+++ b/data/ja.yaml
@@ -9,6 +9,7 @@ copyright: © 2003 Activision, Inc. / LucasArts, a division of Lucasfilm Enterta
# but that's less than 2% of the total size and takes 10 times as long.
compress_deb: false
engine: openjk-academy | openjk-academy-server
+genre: Action
steam:
id: 6020
diff --git a/data/jk2.yaml b/data/jk2.yaml
index 2193508..60c614c 100644
--- a/data/jk2.yaml
+++ b/data/jk2.yaml
@@ -4,6 +4,7 @@ shortname: jk2
longname: "Star Wars Jedi Knight II: Jedi Outcast"
copyright: © 2003 Activision, Inc. / LucasArts, a division of Lucasfilm Entertainment Company Ltd.
engine: openjk-outcast
+genre: Action
# Like Jedi Academy, there isn't much point in compressing this .deb.
compress_deb: false
diff --git a/data/lgeneral.yaml b/data/lgeneral.yaml
index 9708c7d..cc615df 100644
--- a/data/lgeneral.yaml
+++ b/data/lgeneral.yaml
@@ -4,6 +4,7 @@ shortname: lgeneral
longname: LGeneral
copyright: © 1994 SSI Inc.
engine: lgeneral
+genre: Strategy
help_text: |
Data from Panzer General can be downloaded automatically.
diff --git a/data/quake.yaml b/data/quake.yaml
index cc0646e..1c7da31 100644
--- a/data/quake.yaml
+++ b/data/quake.yaml
@@ -3,6 +3,7 @@
longname: Quake
copyright: © 1996 id Software
engine: quake | quake-server
+genre: First-person shooter
help_text: |
For quake-registered, you must provide id1/pak1.pak or a directory
diff --git a/data/quake2.yaml b/data/quake2.yaml
index 5e534dc..0c7f0bc 100644
--- a/data/quake2.yaml
+++ b/data/quake2.yaml
@@ -4,6 +4,7 @@ longname: Quake II
copyright: © 1997 id Software
aliases: [q2rogue, q2xatrix]
engine: quake2 | quake2-server
+genre: First-person shooter
help_text: |
For quake2-full-data, you must provide baseq2/pak0.pak and the baseq2/video
diff --git a/data/quake3.yaml b/data/quake3.yaml
index 10bdf7d..0080e09 100644
--- a/data/quake3.yaml
+++ b/data/quake3.yaml
@@ -4,6 +4,8 @@ shortname: quake3
longname: Quake III Arena
copyright: © 1999 id Software
engine: quake3 | quake3-server
+genre: First-person shooter
+
compress_deb: false
try_repack_from:
# Older versions of g-d-p used this directory
diff --git a/data/rott.yaml b/data/rott.yaml
index b2728db..ae5eb90 100644
--- a/data/rott.yaml
+++ b/data/rott.yaml
@@ -4,6 +4,7 @@ shortname: rott
longname: Rise of the Triad
copyright: © 1995 Apogee Software
engine: rott
+genre: First-person shooter
steam:
id: 238050
diff --git a/data/rtcw.yaml b/data/rtcw.yaml
index a590ead..c333a67 100644
--- a/data/rtcw.yaml
+++ b/data/rtcw.yaml
@@ -4,6 +4,7 @@ shortname: rtcw
longname: Return to Castle Wolfenstein
copyright: © 2001 id Software, Inc. and Activision Publishing, Inc.
engine: rtcw
+genre: First-person shooter
# Like Jedi Academy, there isn't much point in compressing this .deb.
compress_deb: false
diff --git a/data/spear-of-destiny.yaml b/data/spear-of-destiny.yaml
index aa4d382..e7c15e8 100644
--- a/data/spear-of-destiny.yaml
+++ b/data/spear-of-destiny.yaml
@@ -5,6 +5,7 @@ aliases: [spear]
longname: "Spear of Destiny (Wolfenstein 3D prequel)"
copyright: © 1992 id Software
engine: wolf4sdl
+genre: First-person shooter
steam:
id: 9000
diff --git a/data/strife.yaml b/data/strife.yaml
index 948582b..a77dedf 100644
--- a/data/strife.yaml
+++ b/data/strife.yaml
@@ -8,6 +8,7 @@
longname: Strife
copyright: © 1996 Rogue Entertainment
plugin: doom_common
+genre: Role-playing
help_text: |
Please provide the STRIFE1.WAD and VOICES.WAD from
diff --git a/data/syndicate.yaml b/data/syndicate.yaml
index 1f8cafd..2416101 100644
--- a/data/syndicate.yaml
+++ b/data/syndicate.yaml
@@ -5,6 +5,7 @@ try_repack_from: [/usr/share/games/freesynd/data]
copyright: © 1993 Bullfrog Productions
engine: freesynd
+genre: Tactical
packages:
syndicate-data:
diff --git a/data/theme-hospital.yaml b/data/theme-hospital.yaml
index 3dd8644..30808f1 100644
--- a/data/theme-hospital.yaml
+++ b/data/theme-hospital.yaml
@@ -3,6 +3,7 @@
longname: Theme Hospital
copyright: © 1997 Bullfrog Productions
engine: corsix-th
+genre: Simulation
help_text: |
For the full version, provide a Theme Hospital installation,
diff --git a/data/tyrian.yaml b/data/tyrian.yaml
index 040bec0..82b10e7 100644
--- a/data/tyrian.yaml
+++ b/data/tyrian.yaml
@@ -3,6 +3,7 @@
shortname: tyrian
copyright: © 1995 Epic MegaGames
engine: opentyrian
+genre: "Shoot 'em up"
help_text: |
The full version of Tyrian can be downloaded at no cost.
diff --git a/data/wolf3d.yaml b/data/wolf3d.yaml
index 8239dd1..292aeac 100644
--- a/data/wolf3d.yaml
+++ b/data/wolf3d.yaml
@@ -3,6 +3,7 @@
longname: Wolfenstein 3D
copyright: © 1992 Apogee
engine: wolf4sdl
+genre: First-person shooter
packages:
wolf3d-demo-data:
diff --git a/doc/adding_a_game.mdwn b/doc/adding_a_game.mdwn
index 1faa714..3852c55 100644
--- a/doc/adding_a_game.mdwn
+++ b/doc/adding_a_game.mdwn
@@ -18,6 +18,7 @@ which should get you easily started.
* `copyright`: string: © <year_of_first_release> <developper/publisher>
This should match the title screen of the game, if any.
* `engine`: string: package name that contain the program needed to run the game.
+* `genre`: the game genre
* `compress_deb`: boolean, default true: If false, the `.deb` will never be
compressed. Use this if it contains non-compressible files (e.g. `*.pk3`
which are zip files) for which `xz` will waste a lot of time and
@@ -140,14 +141,16 @@ all the field required by policy are present:
* Any required dependencies. For game data packages, we use
`Recommends` to recommend a corresponding engine package, where
appropriate. To document an engine, you should add
- a `debian: engine:` key in the YAML file; the other
- depedencies `debian: depends:/recommends:/suggests:` are also
- supported.
+ a `engine:` key in the YAML file.
If your game is split in several packages, the package with
the full game should `Suggests` all the avaible expansions;
to avoid that those are recognised as useless
and then removed by aptitude or deborphan. This is done
- automatically if you set the correct `expansion_for:`.
+ automatically if you set the correct `expansion_for:`.
+ An expansion will also automatically `Depends` on
+ the matching full game.
+ If ever needed; the standard Debian dependencies are also supported
+ using the `debian: depends:/recommends:/suggests:/replaces:/...` keys.
`game-data-packager` also automatically adds:
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 5044908..dcb3634 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -456,6 +456,10 @@ class GameData(object):
# The game engine used to run the game (package name)
self.engine = None
+ # The game genre
+ # http://en.wikipedia.org/wiki/List_of_video_game_genres
+ self.genre = None
+
# A temporary directory.
self.workdir = workdir
@@ -488,7 +492,7 @@ class GameData(object):
self.argument_parser = None
for k in ('longname', 'copyright', 'compress_deb', 'help_text',
- 'steam','engine'):
+ 'steam','engine', 'genre'):
if k in self.yaml:
setattr(self, k, self.yaml[k])
@@ -1860,6 +1864,9 @@ class GameData(object):
long_desc += ' proprietary game data and must not be redistributed.\n'
long_desc += ' .\n'
+ if self.genre:
+ long_desc += ' Genre: ' + self.genre + '\n'
+
if package.expansion_for:
game_name = self.packages[package.expansion_for].longname or self.longname
long_desc += ' Game: ' + game_name + '\n'
diff --git a/game_data_packager/games/doom_common.py b/game_data_packager/games/doom_common.py
index 3d6b2e1..6a3cac8 100644
--- a/game_data_packager/games/doom_common.py
+++ b/game_data_packager/games/doom_common.py
@@ -76,6 +76,8 @@ class DoomGameData(GameData):
workdir=workdir)
if self.engine is None:
self.engine = "chocolate-doom | doom-engine"
+ if self.genre is None:
+ self.genre = 'First-person shooter'
package_map = {
'doom-engine': 'doom',
diff --git a/game_data_packager/games/residualvm_common.py b/game_data_packager/games/residualvm_common.py
index 0aee4e3..cded213 100644
--- a/game_data_packager/games/residualvm_common.py
+++ b/game_data_packager/games/residualvm_common.py
@@ -34,6 +34,8 @@ class ResidualvmGameData(GameData):
if self.engine is None:
self.engine = 'residualvm'
+ if self.genre is None:
+ self.genre = 'Adventure'
def fill_extra_files(self, package, destdir):
super(ResidualvmGameData, self).fill_extra_files(package, destdir)
diff --git a/game_data_packager/games/scummvm_common.py b/game_data_packager/games/scummvm_common.py
index af59e5f..88282d5 100644
--- a/game_data_packager/games/scummvm_common.py
+++ b/game_data_packager/games/scummvm_common.py
@@ -34,6 +34,8 @@ class ScummvmGameData(GameData):
if self.engine is None:
self.engine = 'scummvm'
+ if self.genre is None:
+ self.genre = 'Adventure'
def fill_extra_files(self, package, destdir):
super(ScummvmGameData, self).fill_extra_files(package, destdir)
diff --git a/game_data_packager/stats.py b/game_data_packager/stats.py
new file mode 100644
index 0000000..aa5eab6
--- /dev/null
+++ b/game_data_packager/stats.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python3
+# encoding=utf-8
+#
+# Copyright © 2015 Alexandre Detiste <alexandre at detiste.be>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# You can find the GPL license text on a Debian system under
+# /usr/share/common-licenses/GPL-2.
+
+import os
+import yaml
+
+from . import load_yaml_games
+
+games = []
+for name, game in load_yaml_games().items():
+ game_struct = {
+ 'genre': game.genre or 'Unknown',
+ 'shortname': name,
+ 'longname': game.longname,
+ }
+ games.append(game_struct)
+
+games = sorted(games, key=lambda k: (k['genre'], k['shortname'], k['longname']))
+
+last_genre = None
+for game in games:
+ if last_genre is None or game['genre'] != last_genre:
+ print('[%s]' % game['genre'])
+ print('%20s - %s' % (game['shortname'], game['longname']))
+ last_genre = game['genre']
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git
More information about the Pkg-games-commits
mailing list