update static website generation
This commit is contained in:
parent
967a98eed0
commit
8d5b43e441
@ -3,11 +3,11 @@
|
||||
**[Dynamic HTML table](https://trilarion.github.io/opensourcegames/)** of the entries / Development **[Blog](https://trilarion.blogspot.com/search/label/osgames)** / **[Statistics](statistics.md#statistics)**
|
||||
|
||||
[comment]: # (start of autogenerated content, do not edit)
|
||||
**[Games](entries/tocs/_games.md#Games)** (1276) - **[Tools](entries/tocs/_tools.md#Tools)** (42) - **[Frameworks](entries/tocs/_frameworks.md#Frameworks)** (81) - **[Libraries](entries/tocs/_libraries.md#Libraries)** (49)
|
||||
**[Games](entries/tocs/_games.md#Games)** (1277) - **[Tools](entries/tocs/_tools.md#Tools)** (42) - **[Frameworks](entries/tocs/_frameworks.md#Frameworks)** (81) - **[Libraries](entries/tocs/_libraries.md#Libraries)** (49)
|
||||
|
||||
By category: **[Action](entries/tocs/_action.md#action)** (237), **[Adventure](entries/tocs/_adventure.md#adventure)** (52), **[Arcade](entries/tocs/_arcade.md#arcade)** (116), **[Board](entries/tocs/_board.md#board)** (23), **[Cards](entries/tocs/_cards.md#cards)** (17), **[Educational](entries/tocs/_educational.md#educational)** (12), **[Framework](entries/tocs/_framework.md#framework)** (81), **[Game engine](entries/tocs/_game-engine.md#game-engine)** (116), **[Library](entries/tocs/_library.md#library)** (49), **[Music](entries/tocs/_music.md#music)** (14), **[Platform](entries/tocs/_platform.md#platform)** (56), **[Puzzle](entries/tocs/_puzzle.md#puzzle)** (140), **[Remake](entries/tocs/_remake.md#remake)** (527), **[Role playing](entries/tocs/_role-playing.md#role-playing)** (191), **[Simulation](entries/tocs/_simulation.md#simulation)** (108), **[Sports](entries/tocs/_sports.md#sports)** (23), **[Strategy](entries/tocs/_strategy.md#strategy)** (266), **[Tool](entries/tocs/_tool.md#tool)** (42), **[Visual novel](entries/tocs/_visual-novel.md#visual-novel)** (6)
|
||||
By category: **[Action](entries/tocs/_action.md#action)** (237), **[Adventure](entries/tocs/_adventure.md#adventure)** (52), **[Arcade](entries/tocs/_arcade.md#arcade)** (116), **[Board](entries/tocs/_board.md#board)** (23), **[Cards](entries/tocs/_cards.md#cards)** (17), **[Educational](entries/tocs/_educational.md#educational)** (12), **[Framework](entries/tocs/_framework.md#framework)** (81), **[Game engine](entries/tocs/_game-engine.md#game-engine)** (116), **[Library](entries/tocs/_library.md#library)** (49), **[Music](entries/tocs/_music.md#music)** (14), **[Platform](entries/tocs/_platform.md#platform)** (56), **[Puzzle](entries/tocs/_puzzle.md#puzzle)** (140), **[Remake](entries/tocs/_remake.md#remake)** (528), **[Role playing](entries/tocs/_role-playing.md#role-playing)** (191), **[Simulation](entries/tocs/_simulation.md#simulation)** (109), **[Sports](entries/tocs/_sports.md#sports)** (23), **[Strategy](entries/tocs/_strategy.md#strategy)** (266), **[Tool](entries/tocs/_tool.md#tool)** (42), **[Visual novel](entries/tocs/_visual-novel.md#visual-novel)** (6)
|
||||
|
||||
By platform: **[Windows](entries/tocs/_windows.md#windows)** (438), **[Linux](entries/tocs/_linux.md#linux)** (427), **[macOS](entries/tocs/_macos.md#macos)** (236), **[Android](entries/tocs/_android.md#android)** (68), **[iOS](entries/tocs/_ios.md#ios)** (15), **[Web](entries/tocs/_web.md#web)** (89)
|
||||
By platform: **[Windows](entries/tocs/_windows.md#windows)** (439), **[Linux](entries/tocs/_linux.md#linux)** (428), **[macOS](entries/tocs/_macos.md#macos)** (237), **[Android](entries/tocs/_android.md#android)** (68), **[iOS](entries/tocs/_ios.md#ios)** (15), **[Web](entries/tocs/_web.md#web)** (89)
|
||||
|
||||
[comment]: # (end of autogenerated content)
|
||||
|
||||
|
@ -244,6 +244,7 @@
|
||||
"https://github.com/KDE/blinken.git",
|
||||
"https://github.com/KOBUGE-Games/minilens.git",
|
||||
"https://github.com/KaidemonLP/Open-Fortress-Source.git",
|
||||
"https://github.com/Keriew/augustus.git",
|
||||
"https://github.com/Kerndog73/EnTT-Pacman.git",
|
||||
"https://github.com/Kinniken/NoxImperii.git",
|
||||
"https://github.com/Kromster80/kam_remake.git",
|
||||
|
@ -2,22 +2,6 @@ ftp://ftp.tuxpaint.org/unix/ (all of them)
|
||||
ftp://ftp.tuxpaint.org/unix/x/
|
||||
http://antongerdelan.net/blog/ (other projects besides TestDrive)
|
||||
http://cdetect.sourceforge.net/
|
||||
https://github.com/godlikepanos/anki-3d-engine
|
||||
https://github.com/MrFrenik/gunslinger
|
||||
https://github.com/rockbite/talos
|
||||
https://github.com/Ogmo-Editor-3/OgmoEditor3-CE
|
||||
https://github.com/eduard-permyakov/permafrost-engine
|
||||
https://github.com/codenamecpp/carnage3d
|
||||
https://github.com/WohlSoft/PGE-Project
|
||||
https://github.com/wesnoth/haldric
|
||||
https://github.com/project-imprimis/imprimis
|
||||
https://github.com/WohlSoft/PGE-Project
|
||||
https://github.com/mgerhardy/engine
|
||||
https://github.com/GDQuest/godot-visual-effects
|
||||
https://sourceforge.net/projects/freetrain/
|
||||
https://github.com/ttencate/jfxr
|
||||
https://github.com/godotengine/escoria
|
||||
https://github.com/awkwardpolygons/cartographer
|
||||
http://circularstudios.com/
|
||||
http://cyxdown.free.fr/bs/
|
||||
http://cyxdown.free.fr/f2b/
|
||||
@ -28,8 +12,6 @@ http://evolonline.org/about
|
||||
http://game-editor.com/Main_Page
|
||||
http://giderosmobile.com/
|
||||
http://haxepunk.com/
|
||||
https://github.com/rockbite/talos
|
||||
https://github.com/MrFrenik/gunslinger
|
||||
http://hcsoftware.sourceforge.net/jason-rohrer/ (various games there)
|
||||
http://hge.relishgames.com/
|
||||
http://hgm.nubati.net/
|
||||
@ -48,11 +30,6 @@ http://icculus.org/toby/
|
||||
http://iichantra.ru/en/
|
||||
http://insideastarfilledsky.net/
|
||||
http://lazerbears.wixsite.com/lazerbears/cr-editor
|
||||
https://github.com/vini-guerrero/Godot_Game_Tools
|
||||
https://github.com/nezvers/Godot_goodies
|
||||
https://github.com/eduard-permyakov/permafrost-engine
|
||||
https://github.com/armory3d/iron
|
||||
https://armory3d.org/
|
||||
http://libagar.org/agar/index.html.en
|
||||
http://libsdl-android.sourceforge.net/
|
||||
http://lukaszjakowski.pl/ (games apart from uMario)
|
||||
@ -164,6 +141,7 @@ https://arcade.academy/
|
||||
https://archive.codeplex.com/?p=turnota
|
||||
https://archive.codeplex.com/?p=voxeliq
|
||||
https://archive.org/details/Gna_code_hosting (all of them)
|
||||
https://armory3d.org/
|
||||
https://awesomeopensource.com/categories/games
|
||||
https://blenderartists.org/t/devils-pinball/552785
|
||||
https://blends.debian.org/games/tasks/
|
||||
@ -232,6 +210,7 @@ https://github.com/arturkot/the-house-game
|
||||
https://github.com/asweigart/PythonStdioGames
|
||||
https://github.com/AtomicGameEngine/AtomicGameEngine
|
||||
https://github.com/atphalix/nexuiz
|
||||
https://github.com/awkwardpolygons/cartographer
|
||||
https://github.com/azhirnov/FrameGraph
|
||||
https://github.com/benl23x5/gloss
|
||||
https://github.com/bepu/bepuphysics2
|
||||
@ -262,6 +241,7 @@ https://github.com/cymonsgames/CymonsGames (collection)
|
||||
https://github.com/DaanVanYperen/artemis-odb-contrib
|
||||
https://github.com/danirod/jumpdontdie
|
||||
https://github.com/David20321/7DFPS (http://www.wolfire.com/receiver, not open source, for rejected list)
|
||||
https://github.com/db0/godot-card-gaming
|
||||
https://github.com/DeflatedPickle/FAOSDance
|
||||
https://github.com/delaford/game
|
||||
https://github.com/DethRaid/SanityEngine
|
||||
@ -270,6 +250,7 @@ https://github.com/Drasky-Vanderhoff/CommonDrops
|
||||
https://github.com/Dzierzan/OpenSA
|
||||
https://github.com/EasyRPG/Editor-Qt
|
||||
https://github.com/EaW-Team/equestria_dev
|
||||
https://github.com/eduard-permyakov/permafrost-engine
|
||||
https://github.com/EliFUT/android
|
||||
https://github.com/elishacloud/Silent-Hill-2-Enhancements
|
||||
https://github.com/endlesstravel/Love2dCS
|
||||
@ -289,11 +270,14 @@ https://github.com/Galapix/galapix
|
||||
https://github.com/gamearians
|
||||
https://github.com/GamedevFramework/gf
|
||||
https://github.com/gan74/Yave
|
||||
https://github.com/GDQuest/godot-visual-effects
|
||||
https://github.com/GlPortal/RadixEngine
|
||||
https://github.com/gnFur/Monofoxe
|
||||
https://github.com/GNOME/quadrapassel
|
||||
https://github.com/godlikepanos/anki-3d-engine
|
||||
https://github.com/godot-extended-libraries/godot-next
|
||||
https://github.com/godot-mega-man/Mega-Man-Engine
|
||||
https://github.com/godotengine/escoria
|
||||
https://github.com/godotengine/godot-design
|
||||
https://github.com/Gramps/GodotSteam
|
||||
https://github.com/grantjenks/free-python-games (check all)
|
||||
@ -315,6 +299,7 @@ https://github.com/JohanLi/uncharted-waters-2
|
||||
https://github.com/JohnLamontagne/Lunar-Engine
|
||||
https://github.com/junkdog/artemis-odb
|
||||
https://github.com/jwvhewitt/gearhead-caramel.git
|
||||
https://github.com/Kavex/GameDev-Resources
|
||||
https://github.com/KDE
|
||||
https://github.com/kduske/TrenchBroom
|
||||
https://github.com/kidscancode/circle_jump
|
||||
@ -335,18 +320,23 @@ https://github.com/MatthewTheGlutton/HideousDestructor
|
||||
https://github.com/McKay42/McOsu
|
||||
https://github.com/megamarc/Tilengine
|
||||
https://github.com/mewo2/terrain
|
||||
https://github.com/mgerhardy/engine
|
||||
https://github.com/mofr/Diablerie
|
||||
https://github.com/moonwards1/Moonwards-Virtual-Moon
|
||||
https://github.com/morganbengtsson/mos
|
||||
https://github.com/MrFrenik/Enjon
|
||||
https://github.com/MrFrenik/gunslinger
|
||||
https://github.com/MultiCraft/MultiCraft
|
||||
https://github.com/MustaphaTR/Romanovs-Vengeance
|
||||
https://github.com/MyGUI/mygui
|
||||
https://github.com/MyreMylar/pygame_gui
|
||||
https://github.com/nCine/nCine
|
||||
https://github.com/nezvers/Godot_goodies
|
||||
https://github.com/nfprojects/nfengine
|
||||
https://github.com/NoelFB/blah
|
||||
https://github.com/Noesis/UE4-ShooterGame
|
||||
https://github.com/ogarcia/opensudoku
|
||||
https://github.com/Ogmo-Editor-3/OgmoEditor3-CE
|
||||
https://github.com/OGRECave/scape
|
||||
https://github.com/OpenHV/OpenHV
|
||||
https://github.com/OpenMandrivaAssociation
|
||||
@ -369,6 +359,7 @@ https://github.com/pld-linux/nexuiz/blob/master/nexuiz.spec
|
||||
https://github.com/PolygonTek/BlueshiftEngine
|
||||
https://github.com/ppizarror/pygame-menu
|
||||
https://github.com/prime31/Nez-Samples
|
||||
https://github.com/project-imprimis/imprimis
|
||||
https://github.com/psuong/ig-developer-console
|
||||
https://github.com/qiciengine/qiciengine
|
||||
https://github.com/Quaver/Wobble
|
||||
@ -382,6 +373,7 @@ https://github.com/RetroAchievements/RALibretro
|
||||
https://github.com/RetroAchievements/RAWeb
|
||||
https://github.com/rizwan3d/MotoGameEngine
|
||||
https://github.com/rlguy/FantasyMapGenerator
|
||||
https://github.com/rockbite/talos
|
||||
https://github.com/rotators/Fo1in2
|
||||
https://github.com/RoxasShadow/Sottaceto
|
||||
https://github.com/roy-t/MiniRTS
|
||||
@ -420,12 +412,14 @@ https://github.com/tlgkccampbell/ultraviolet
|
||||
https://github.com/TomBebb/awe
|
||||
https://github.com/tomlooman/SimpleFPSTemplate
|
||||
https://github.com/topics/top-down-shooter
|
||||
https://github.com/ttencate/jfxr
|
||||
https://github.com/uberspot/2048-android
|
||||
https://github.com/untakenstupidnick/nbsdgames (Blockout II)
|
||||
https://github.com/untakenstupidnick/nbsdgames (Cross-platform ncurses/pdcurses based games under active development)
|
||||
https://github.com/UnterrainerInformatik/GameDevelopmentLinks
|
||||
https://github.com/Venom0us/Emberpoint
|
||||
https://github.com/videogamepreservation
|
||||
https://github.com/vini-guerrero/Godot_Game_Tools
|
||||
https://github.com/vocollapse/Blockinger
|
||||
https://github.com/WagicProject/wagic
|
||||
https://github.com/wesnoth/haldric
|
||||
|
@ -39,6 +39,7 @@ Listing:
|
||||
# TODO games: contribute/edit, link to md file unten in klein
|
||||
# TODO games: use top level for genre and status
|
||||
# TODO games/developers/inspirations: split template
|
||||
# TODO all pages: meta/title tag
|
||||
# TODO split games in libraries/tools/frameworks and real games, add menu
|
||||
# TODO statistics with nice graphics (pie charts in SVG) with matplotlib, seaborn, plotly?
|
||||
# TODO statistics, get it from common statistics generator
|
||||
@ -72,6 +73,11 @@ frameworks_path = ['frameworks']
|
||||
inspirations_path = ['inspirations']
|
||||
developers_path = ['developers']
|
||||
|
||||
games_index_path = games_path + ['index.html']
|
||||
frameworks_index_path = frameworks_path + ['index.html']
|
||||
inspirations_index_path = inspirations_path + ['index.html']
|
||||
developers_index_path = developers_path + ['index.html']
|
||||
|
||||
games_by_language_path = games_path + ['languages.html']
|
||||
games_by_genres_path = games_path + ['genres.html']
|
||||
games_by_platform_path = games_path + ['platforms.html']
|
||||
@ -104,7 +110,7 @@ genre_icon_map = {
|
||||
'Music': 'music'
|
||||
}
|
||||
|
||||
plurals = {k: k+'s' for k in ('Assets license', 'Contact', 'Code language', 'Code license', 'Developer', 'Download', 'Inspiration', 'Game', 'Keyword', 'Home', 'Organization', 'Platform')}
|
||||
plurals = {k: k+'s' for k in ('Assets license', 'Contact', 'Code language', 'Code license', 'Developer', 'Download', 'Inspiration', 'Game', 'Keyword', 'Home', 'Organization', 'Platform', 'Tag')}
|
||||
for k in ('Media', 'Play', 'State'):
|
||||
plurals[k] = k
|
||||
for k in ('Code repository', 'Code dependency'):
|
||||
@ -439,10 +445,15 @@ def convert_developers(developers, entries):
|
||||
|
||||
def create_keyword_tag(keyword):
|
||||
if keyword in c.recommended_keywords:
|
||||
if keyword.capitalize() in genre_icon_map:
|
||||
return make_url(games_by_genres_path, [make_icon(genre_icon_map[keyword.capitalize()]), make_text(keyword)], '{} games'.format(keyword), 'tag is-info')
|
||||
if keyword in c.framework_keywords:
|
||||
url = frameworks_index_path.copy()
|
||||
else:
|
||||
return make_url(games_by_genres_path, make_text(keyword), '{} games'.format(keyword), 'tag is-info')
|
||||
url = games_by_genres_path.copy()
|
||||
url[-1] += '#{}'.format(keyword)
|
||||
if keyword.capitalize() in genre_icon_map:
|
||||
return make_url(url, [make_icon(genre_icon_map[keyword.capitalize()]), make_text(keyword)], '{} games'.format(keyword), 'tag is-info')
|
||||
else:
|
||||
return make_url(url, make_text(keyword), '{} games'.format(keyword), 'tag is-info')
|
||||
else:
|
||||
return make_text(keyword, 'tag is-light')
|
||||
|
||||
@ -503,8 +514,12 @@ def convert_entries(entries, inspirations, developers):
|
||||
e = entry['Platform']
|
||||
if isinstance(e[0], osg.osg_parse.ValueWithComment):
|
||||
e = [x.value for x in e]
|
||||
e = [make_url('', make_icon(platform_icon_map[x]), 'Windows') if x in platform_icon_map else make_text(x, 'is-size-7') for x in e]
|
||||
entry['platform'] = e
|
||||
e = [make_url('', make_icon(platform_icon_map[x]), x) if x in platform_icon_map else make_text(x, 'is-size-7') for x in e]
|
||||
namex = make_text('{}:'.format(get_plural_or_singular('Platform', len(e))), 'has-text-weight-semibold')
|
||||
entry['platform'] = [namex] + e
|
||||
else:
|
||||
namex = make_text('{}:'.format(get_plural_or_singular('Platform', 1)), 'has-text-weight-semibold')
|
||||
entry['platform'] = [namex, make_icon(platform_icon_map['Unspecified'])]
|
||||
|
||||
# technical info fields
|
||||
for field in ('Code language', 'Code license', 'Code repository', 'Code dependency', 'Assets license'):
|
||||
@ -664,18 +679,20 @@ def generate(entries, inspirations, developers):
|
||||
|
||||
# frameworks by type
|
||||
index = divide_in_columns(frameworks_by_type, game_index)
|
||||
index['title'] = make_text('Open source frameworks/tools')
|
||||
index['subtitle'] = make_text('Alphabetical index of {} frameworks/tools'.format(len(frameworks)))
|
||||
index['title'] = make_text('Open source game frameworks/tools')
|
||||
index['subtitle'] = make_text('Index of {} game frameworks/tools'.format(len(frameworks)))
|
||||
index['categories'] = c.framework_keywords
|
||||
index['category-names'] = framework_names
|
||||
index['number_entries_per_category_threshold'] = 0
|
||||
write(template_categorical_index.render(index=index), frameworks_path + ['index.html'])
|
||||
index['entry_bold'] = lambda x: 'tags' not in x
|
||||
index['category-infos'] = {}
|
||||
write(template_categorical_index.render(index=index), frameworks_index_path)
|
||||
|
||||
# generate frameworks pages
|
||||
for keyword in c.framework_keywords:
|
||||
listing = {
|
||||
'title': framework_names[keyword],
|
||||
'subtitle': make_url(frameworks_path + ['index.html'], 'Index'),
|
||||
'subtitle': make_url(frameworks_index_path, 'Index'),
|
||||
'items': frameworks_by_type[keyword]
|
||||
}
|
||||
write(template_listing_entries.render(listing=listing), frameworks_path +['{}.html'.format(keyword)])
|
||||
@ -698,8 +715,10 @@ def generate(entries, inspirations, developers):
|
||||
index['subtitle'] = make_text('Alphabetical index of {} games'.format(len(games)))
|
||||
index['categories'] = extended_alphabet
|
||||
index['category-names'] = extended_alphabet_names
|
||||
index['number_entries_per_category_threshold'] = 0
|
||||
write(template_categorical_index.render(index=index), games_path + ['index.html'])
|
||||
index['number_entries_per_category_threshold'] = 20
|
||||
index['entry_bold'] = lambda x: 'tags' not in x
|
||||
index['category-infos'] = {}
|
||||
write(template_categorical_index.render(index=index), games_index_path)
|
||||
|
||||
# genres
|
||||
base['active_nav'] = ['filter', 'genres']
|
||||
@ -708,7 +727,9 @@ def generate(entries, inspirations, developers):
|
||||
index['subtitle'] = make_text('Index by game genre')
|
||||
index['categories'] = genres
|
||||
index['category-names'] = {k:[make_icon(genre_icon_map[k]), make_text(k)] if k in genre_icon_map else make_text(k) for k in index['categories']}
|
||||
index['number_entries_per_category_threshold'] = 15
|
||||
index['number_entries_per_category_threshold'] = 25
|
||||
index['entry_bold'] = lambda x: 'tags' not in x
|
||||
index['category-infos'] = {}
|
||||
write(template_categorical_index.render(index=index), games_by_genres_path)
|
||||
|
||||
# games by language
|
||||
@ -719,6 +740,8 @@ def generate(entries, inspirations, developers):
|
||||
index['categories'] = c.known_languages
|
||||
index['category-names'] = {k:k for k in index['categories']}
|
||||
index['number_entries_per_category_threshold'] = 15
|
||||
index['entry_bold'] = lambda x: 'tags' not in x
|
||||
index['category-infos'] = {category: make_url(c.language_urls[category], 'Language information', css_class='is-size-7') for category in c.known_languages if category in c.language_urls}
|
||||
write(template_categorical_index.render(index=index), games_by_language_path)
|
||||
|
||||
# games by platform
|
||||
@ -729,6 +752,8 @@ def generate(entries, inspirations, developers):
|
||||
index['categories'] = c.valid_platforms + ('Unspecified',)
|
||||
index['category-names'] = {k:[make_icon(platform_icon_map[k]), make_text(k)] for k in index['categories']}
|
||||
index['number_entries_per_category_threshold'] = 15
|
||||
index['entry_bold'] = lambda x: 'tags' not in x
|
||||
index['category-infos'] = {}
|
||||
write(template_categorical_index.render(index=index), games_by_platform_path)
|
||||
|
||||
# inspirations folder
|
||||
@ -743,8 +768,10 @@ def generate(entries, inspirations, developers):
|
||||
index['subtitle'] = make_text('Alphabetical index of {} games used as inspirations'.format(len(inspirations)))
|
||||
index['categories'] = extended_alphabet
|
||||
index['category-names'] = extended_alphabet_names
|
||||
index['number_entries_per_category_threshold'] = 0
|
||||
write(template_categorical_index.render(index=index), inspirations_path + ['index.html'])
|
||||
index['number_entries_per_category_threshold'] = 10
|
||||
index['entry_bold'] = lambda x: 'tags' in x
|
||||
index['category-infos'] = {}
|
||||
write(template_categorical_index.render(index=index), inspirations_index_path)
|
||||
|
||||
# inspirations single pages
|
||||
template_listing_inspirations = environment.get_template('listing_inspirations.jinja')
|
||||
@ -774,8 +801,10 @@ def generate(entries, inspirations, developers):
|
||||
index['subtitle'] = make_text('Alphabetical index of {} developers'.format(len(developers)))
|
||||
index['categories'] = extended_alphabet
|
||||
index['category-names'] = extended_alphabet_names
|
||||
index['number_entries_per_category_threshold'] = 0
|
||||
write(template_categorical_index.render(index=index), developers_path + ['index.html'])
|
||||
index['number_entries_per_category_threshold'] = 10
|
||||
index['entry_bold'] = lambda x: 'tags' in x
|
||||
index['category-infos'] = {}
|
||||
write(template_categorical_index.render(index=index), developers_index_path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@ -9,7 +9,7 @@
|
||||
<link rel="stylesheet" href="{{ base['url_to'](['css', 'osgl.min.css']) }}">
|
||||
</head>
|
||||
<body>
|
||||
{# navigation bar -#}
|
||||
{#- navigation bar -#}
|
||||
<nav class="navbar container is-light" aria-label="main navigation">
|
||||
<div class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
@ -32,9 +32,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{# content block -#}
|
||||
{#- content block -#}
|
||||
{% block content %}{% endblock %}
|
||||
{# footer -#}
|
||||
{#- footer -#}
|
||||
<footer class="footer">
|
||||
<div class="container is-size-7">
|
||||
<div class="block">
|
||||
|
@ -3,12 +3,14 @@
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="box">
|
||||
{#- title and subtitle -#}
|
||||
<div class="block">
|
||||
<h1 class="title">{{ macros.render_element(index['title']) }}</h1>
|
||||
{%- if 'subtitle' in index -%}
|
||||
<h2 class="subtitle">{{ macros.render_element(index['subtitle']) }}</h2>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
{#- index of the categories -#}
|
||||
<div class="tags">
|
||||
{% for category in index['categories'] -%}
|
||||
<span class="tag is-white {% if index['number_entries'][category] > index['number_entries_per_category_threshold'] %}is-size-5{% else %}is-size-6{% endif %}">
|
||||
@ -17,18 +19,21 @@
|
||||
{%- endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{#- each of the categories -#}
|
||||
{% for category in index['categories'] %}
|
||||
<div class="box">
|
||||
<div class="block"><h2 id="{{ category.lower() }}" class="is-size-4 has-text-weight-semibold">{{ macros.render_element(index['category-names'][category]) }}</h2></div>
|
||||
<div class="block">
|
||||
<h2 id="{{ category.lower() }}" class="is-size-4 has-text-weight-semibold">{{ macros.render_element(index['category-names'][category]) }}</h2>
|
||||
{%- if category in index['category-infos'] -%}{{ macros.render_element(index['category-infos'][category]) }}{%- endif -%}
|
||||
</div>
|
||||
<div class="columns">
|
||||
{%- for entries_column in index['entries'][category] -%}
|
||||
<div class="column">
|
||||
<ul>
|
||||
{%- for entry in entries_column -%}
|
||||
<li>{%- if 'tags' in entry -%}{{ macros.render_element(entry['url']) }}{{ macros.render_element(entry['tags']) }}
|
||||
{%- else -%}
|
||||
<span class="has-text-weight-semibold">{{ macros.render_element(entry['url']) }}</span>
|
||||
{%- endif -%}</li>
|
||||
<li>{%- if index['entry_bold'](entry) -%}<span class="has-text-weight-semibold">{%- endif -%}
|
||||
{{ macros.render_element(entry['url']) }}{%- if 'tags' in entry -%}{{ macros.render_element(entry['tags']) }}{%- endif -%}
|
||||
{%- if index['entry_bold'](entry) -%}</span>{%- endif -%}</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
</div>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 305 KiB After Width: | Height: | Size: 280 KiB |
@ -6,7 +6,9 @@
|
||||
<div class="container">
|
||||
<h1 class="title">Open source games list (OSGL)</h1>
|
||||
<p class="subtitle">{{ macros.render_text(index['subtitle']) }}</p>
|
||||
<img src="collage_games.jpg" alt="" width="1200" height="600">
|
||||
<figure class="image is-2by1">
|
||||
<img src="collage_games.jpg" alt="">
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -5,11 +5,11 @@
|
||||
<h1 class="title">{{ listing['title'] }}</h1>
|
||||
{# iterate over items -#}
|
||||
{% for item in listing['items'] %}
|
||||
<div class="box">
|
||||
<div id="{{ item['anchor-id'] }}" class="box">
|
||||
<div class="level">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<h2 id="{{ item['anchor-id'] }}" class="title is-4">{{ item['name'] }}</h2>
|
||||
<h2 class="title is-4">{{ item['name'] }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right is-size-5">
|
||||
|
@ -8,11 +8,11 @@
|
||||
{%- endif -%}
|
||||
{# iterate over items -#}
|
||||
{% for item in listing['items'] %}
|
||||
<div class="box">
|
||||
<div id="{{ item['anchor-id'] }}" class="box">
|
||||
<nav class="level">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
<h2 id="{{ item['anchor-id'] }}" class="title is-4">{{ item['name'] }}</h2>
|
||||
<h2 class="title is-4">{{ item['name'] }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
|
@ -5,9 +5,9 @@
|
||||
<h1 class="title">{{ listing['title'] }}</h1>
|
||||
{# iterate over items -#}
|
||||
{% for item in listing['items'] %}
|
||||
<div class="box">
|
||||
<div id="{{ item['anchor-id'] }}" class="box">
|
||||
<div class="block">
|
||||
<h2 id="{{ item['anchor-id'] }}" class="title is-4">{{ item['name'] }}</h2>
|
||||
<h2 class="title is-4">{{ item['name'] }}</h2>
|
||||
<div class="subtitle is-size-6">{{ macros.render_element(item['inspired']) }}</div>
|
||||
{%- if 'media' in item -%}{{ macros.render_element(item['media']) }}{%- endif -%}
|
||||
</div>
|
||||
|
@ -9,6 +9,7 @@ from PIL import Image
|
||||
from io import BytesIO
|
||||
import numpy as np
|
||||
|
||||
from progress.bar import IncrementalBar
|
||||
|
||||
def download_images():
|
||||
# import the osgameclones data
|
||||
@ -80,14 +81,19 @@ def downsize_images():
|
||||
|
||||
|
||||
def assemble_collage():
|
||||
print('start assembling collage')
|
||||
|
||||
# load all from downsized path
|
||||
files = os.listdir(downsized_path)
|
||||
files = [file for file in files if os.path.isfile(os.path.join(downsized_path, file))]
|
||||
images = []
|
||||
bar = IncrementalBar('Loading', max=len(files))
|
||||
for file in files:
|
||||
im = Image.open(os.path.join(downsized_path, file))
|
||||
im = np.asarray(im)
|
||||
images.append(im)
|
||||
bar.next()
|
||||
bar.finish()
|
||||
|
||||
# compute total amount of light in each image and only keep the N brightest
|
||||
images = [(np.sum(image), image) for image in images]
|
||||
@ -115,6 +121,7 @@ def assemble_collage():
|
||||
r = lambda x: (x + 1) % Ny
|
||||
l = lambda x: (x - 1) % Ny
|
||||
score = lambda i1, j1, i2, j2: np.linalg.norm(U[map[i1, j1]] - D[map[u(i2), j2]]) + np.linalg.norm(D[map[i1, j1]] - U[map[d(i2), j2]]) + np.linalg.norm(L[map[i1, j1]] - R[map[i2, l(j2)]]) + np.linalg.norm(R[map[i1, j1]] - L[map[i2, r(j2)]])
|
||||
bar = IncrementalBar('Optimization', max=Ni)
|
||||
for ai in range(Ni):
|
||||
# get two non-equal random locations
|
||||
i1 = np.random.randint(Nx)
|
||||
@ -133,6 +140,9 @@ def assemble_collage():
|
||||
if x > 0 or np.exp(x / T[ai]) > np.random.uniform():
|
||||
map[i1, j1], map[i2, j2] = map[i2, j2], map[i1, j1]
|
||||
A[ai] = 1
|
||||
|
||||
bar.next()
|
||||
bar.finish()
|
||||
# time evolution of acceptance rate
|
||||
Nc = int(np.floor(Ni / 20))
|
||||
for ai in range(20):
|
||||
@ -169,7 +179,7 @@ if __name__ == "__main__":
|
||||
target_width = 80
|
||||
|
||||
Nx = 12 # vertical
|
||||
Ny = 20 # horizontal
|
||||
Ny = 18 # horizontal
|
||||
N = Nx * Ny
|
||||
|
||||
# paths
|
||||
|
@ -80,7 +80,17 @@ known_languages = (
|
||||
|
||||
language_urls = {
|
||||
'AGS Script': 'https://en.wikipedia.org/wiki/Adventure_Game_Studio',
|
||||
'Action Script': 'https://en.wikipedia.org/wiki/ActionScript'
|
||||
'Action Script': 'https://en.wikipedia.org/wiki/ActionScript',
|
||||
'Ada': 'https://en.wikipedia.org/wiki/Ada_(programming_language)',
|
||||
'AngelScript': 'https://en.wikipedia.org/wiki/AngelScript',
|
||||
'Assembly': 'https://en.wikipedia.org/wiki/Assembly_language',
|
||||
'Basic': 'https://en.wikipedia.org/wiki/BASIC',
|
||||
'Blender Script': 'https://en.wikipedia.org/wiki/Blender_(software)',
|
||||
'BlitzMax': 'https://en.wikipedia.org/wiki/Blitz_BASIC',
|
||||
'C': 'https://en.wikipedia.org/wiki/C_(programming_language)',
|
||||
'C#': 'https://en.wikipedia.org/wiki/C_Sharp_(programming_language)',
|
||||
'C++': 'https://en.wikipedia.org/wiki/C%2B%2B',
|
||||
'Clojure': 'https://en.wikipedia.org/wiki/Clojure'
|
||||
}
|
||||
|
||||
# known licenses, anything outside of this will result in a warning during a maintenance operation
|
||||
@ -92,16 +102,45 @@ known_licenses = (
|
||||
'LGPL-2.1', 'LGPL-3.0', 'MAME', 'MIT', 'MPL-1.1', 'MPL-2.0', 'MS-PL', 'MS-RL', 'NetHack General Public License',
|
||||
'None', 'Proprietary', 'Public domain', 'SWIG license', 'Unlicense', 'WTFPL', 'wxWindows license', 'zlib', '?')
|
||||
|
||||
license_urls = {
|
||||
license_urls_repo = {
|
||||
'2-clause BSD': 'https://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_(%22Simplified_BSD_License%22_or_%22FreeBSD_License%22)',
|
||||
'3-clause BSD': 'https://en.wikipedia.org/wiki/BSD_licenses#3-clause_license_(%22BSD_License_2.0%22,_%22Revised_BSD_License%22,_%22New_BSD_License%22,_or_%22Modified_BSD_License%22)',
|
||||
'AFL-3.0': 'https://en.wikipedia.org/wiki/Academic_Free_License',
|
||||
'AGPL-3.0': 'https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License',
|
||||
'Apache-2.0': 'https://en.wikipedia.org/wiki/Apache_License',
|
||||
'GPL-2.0': 'https://en.wikipedia.org/wiki/GNU_General_Public_License#Version_2',
|
||||
'GPL-3.0': 'https://en.wikipedia.org/wiki/GNU_General_Public_License#Version_3'
|
||||
'AFL': 'https://en.wikipedia.org/wiki/Academic_Free_License',
|
||||
'AGPL': 'https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License',
|
||||
'Apache': 'https://en.wikipedia.org/wiki/Apache_License',
|
||||
'Artistic License': 'https://en.wikipedia.org/wiki/Artistic_License',
|
||||
'Boost': 'https://en.wikipedia.org/wiki/Boost_(C%2B%2B_libraries)#License',
|
||||
'CC': 'https://en.wikipedia.org/wiki/Creative_Commons_license',
|
||||
'EPL': 'https://en.wikipedia.org/wiki/Eclipse_Public_License',
|
||||
'GPL': 'https://en.wikipedia.org/wiki/GNU_General_Public_License',
|
||||
'IJG': 'https://spdx.org/licenses/IJG.html',
|
||||
'ISC': 'https://en.wikipedia.org/wiki/ISC_license',
|
||||
'Java Research License': 'https://en.wikipedia.org/wiki/Java_Research_License',
|
||||
'LGPL': 'https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License',
|
||||
'MAME': 'https://docs.mamedev.org/license.html',
|
||||
'MIT': 'https://en.wikipedia.org/wiki/MIT_License',
|
||||
'MPL': 'https://en.wikipedia.org/wiki/Mozilla_Public_License',
|
||||
'MS': 'https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Public_License_(Ms-PL)',
|
||||
'Nethack': 'https://en.wikipedia.org/wiki/NetHack#Licensing,_ports,_and_derivative_ports',
|
||||
'Public domain': 'https://en.wikipedia.org/wiki/Public_domain',
|
||||
'Unlicense': 'https://en.wikipedia.org/wiki/Unlicense',
|
||||
'WTFPL': 'https://en.wikipedia.org/wiki/WTFPL',
|
||||
'wxWindows': 'https://en.wikipedia.org/wiki/WxWidgets#License',
|
||||
'zlib': 'https://en.wikipedia.org/wiki/Zlib_License'
|
||||
}
|
||||
|
||||
|
||||
def get_license_url(license):
|
||||
if license not in known_licenses:
|
||||
raise RuntimeError('Unknown license')
|
||||
for k, v in license_urls_repo.items():
|
||||
if license.startswith(k):
|
||||
return v
|
||||
return None
|
||||
|
||||
|
||||
license_urls = {license: get_license_url(license) for license in known_licenses if get_license_url(license) is not None}
|
||||
|
||||
# valid multiplayer modes (can be combined with "+" )
|
||||
valid_multiplayer_modes = (
|
||||
'competitive', 'co-op', 'hotseat', 'LAN', 'local', 'massive', 'matchmaking', 'online', 'split-screen')
|
||||
|
@ -1,5 +1,5 @@
|
||||
[comment]: # (partly autogenerated content, edit with care, read the manual before)
|
||||
# Developer [379]
|
||||
# Developer [381]
|
||||
|
||||
## Akira Higuchi [1]
|
||||
|
||||
@ -81,9 +81,9 @@
|
||||
|
||||
- Games: Vertigo
|
||||
|
||||
## Ari Mustonen [1]
|
||||
## Ari Mustonen [2]
|
||||
|
||||
- Games: Hex-a-hop
|
||||
- Games: FreeTrain, Hex-a-hop
|
||||
- Contact: amuzen@SF
|
||||
|
||||
## Armin Bajramovic [1]
|
||||
@ -382,7 +382,7 @@
|
||||
|
||||
- Games: Card Stories
|
||||
|
||||
## fastrgv [7]
|
||||
## fastrgv [1]
|
||||
|
||||
- Games: AdaGate
|
||||
- Contact: fastrgv@GH
|
||||
@ -777,6 +777,10 @@
|
||||
|
||||
- Games: A7Xpg, Consomaton
|
||||
|
||||
## Keriew [1]
|
||||
|
||||
- Games: Augustus
|
||||
|
||||
## Kieran Pilkington [1]
|
||||
|
||||
- Games: 0 A.D.
|
||||
@ -1429,8 +1433,8 @@
|
||||
## Stephen Carlyle-Smith [4]
|
||||
|
||||
- Games: Ares Dogfighter, Moonbase Assault, Sole Collector, SteveTech1
|
||||
- Home: http://meprogrammer.blogspot.com/
|
||||
- Contact: SteveSmith16384@GH
|
||||
- Home: http://meprogrammer.blogspot.com/
|
||||
|
||||
## Stephen Sweeney [2]
|
||||
|
||||
@ -1581,6 +1585,10 @@
|
||||
|
||||
- Games: Gweled
|
||||
|
||||
## whgest [1]
|
||||
|
||||
- Games: Augustus
|
||||
|
||||
## William Crowther [1]
|
||||
|
||||
- Games: Colossal Cave Adventure
|
||||
|
21
entries/augustus.md
Normal file
21
entries/augustus.md
Normal file
@ -0,0 +1,21 @@
|
||||
# Augustus
|
||||
|
||||
- Home: https://github.com/Keriew/augustus
|
||||
- Inspiration: Caesar 3
|
||||
- State: mature
|
||||
- Download: https://github.com/Keriew/augustus/releases
|
||||
- Platform: Windows, Linux, macOS
|
||||
- Keyword: remake, simulation, commercial content, engine recreation
|
||||
- Code repository: https://github.com/Keriew/augustus.git
|
||||
- Code language: C, C++
|
||||
- Code license: AGPL-3.0
|
||||
- Code dependency: SDL2
|
||||
- Assets license: Commercial
|
||||
- Developer: Keriew, whgest
|
||||
|
||||
Augustus is a fork of Julius with more features but with incompatible saves.
|
||||
|
||||
## Building
|
||||
|
||||
- Build system: CMake
|
||||
- Build instruction: https://github.com/Keriew/augustus/blob/master/doc/BUILDING.md
|
@ -68,6 +68,7 @@
|
||||
- **[Atomix](../atomix.md)** (C, GPL-2.0, mature)
|
||||
- **[Atrinik](../atrinik.md)** (C, Python, GPL-2.0, mature, inactive since 2016)
|
||||
- **[Attal: Lords of doom](../attal_lords_of_doom.md)** (C++, GPL-2.0, mature, inactive since 2008)
|
||||
- **[Augustus](../augustus.md)** (C, C++, AGPL-3.0, mature)
|
||||
- **[Aussenposten](../aussenposten.md)** (JavaScript, MIT, beta, inactive since 2015)
|
||||
- **[Avanor](../avanor.md)** (C++, Lua, GPL-2.0, beta, inactive since 2008)
|
||||
- **[Azimuth](../azimuth.md)** (C, GPL-3.0, mature)
|
||||
|
@ -19,6 +19,7 @@
|
||||
- **[AssaultCube](../assaultcube.md)** (C, C++, Custom, mature, inactive since 2018)
|
||||
- **[Athenaeum](../athenaeum.md)** (Python, GPL-3.0, beta)
|
||||
- **[Atomic Tanks](../atomic_tanks.md)** (C++, GPL-2.0, mature, inactive since 2016)
|
||||
- **[Augustus](../augustus.md)** (C, C++, AGPL-3.0, mature)
|
||||
- **[Aussenposten](../aussenposten.md)** (JavaScript, MIT, beta, inactive since 2015)
|
||||
- **[Azimuth](../azimuth.md)** (C, GPL-3.0, mature)
|
||||
- **[Balder2D](../balder2d.md)** (C++, GPL-2.0, beta, inactive since 2009)
|
||||
|
@ -9,6 +9,7 @@
|
||||
- **[Aleph One](../aleph_one.md)** (C++, Lua, GPL-3.0, mature)
|
||||
- **[Alex the Allegator 4](../alex_the_allegator_4.md)** (C, GPL-2.0, mature, inactive since 2003)
|
||||
- **[AssaultCube](../assaultcube.md)** (C, C++, Custom, mature, inactive since 2018)
|
||||
- **[Augustus](../augustus.md)** (C, C++, AGPL-3.0, mature)
|
||||
- **[Azimuth](../azimuth.md)** (C, GPL-3.0, mature)
|
||||
- **[Battle Tanks](../battle_tanks.md)** (C++, GPL-2.0, mature, inactive since 2009)
|
||||
- **[Biniax](../biniax.md)** (C, zlib, mature, inactive since 2012)
|
||||
|
@ -20,6 +20,7 @@
|
||||
- **[Atomic Tanks](../atomic_tanks.md)** (C++, GPL-2.0, mature, inactive since 2016)
|
||||
- **[Atomiks](../atomiks.md)** (C, GPL-3.0, mature, inactive since 2015)
|
||||
- **[Atomix](../atomix.md)** (C, GPL-2.0, mature)
|
||||
- **[Augustus](../augustus.md)** (C, C++, AGPL-3.0, mature)
|
||||
- **[Ballerburg SDL](../ballerburg_sdl.md)** (C, GPL-3.0, mature)
|
||||
- **[Barony](../barony.md)** (C++, GPL-3.0, mature)
|
||||
- **[Batrachians](../batrachians.md)** (C++, GPL-2.0, beta, inactive since 2012)
|
||||
|
@ -4,6 +4,7 @@
|
||||
- **[2Moons Browsergame Engine](../2moons_browsergame_engine.md)** (PHP, JavaScript, MIT, mature)
|
||||
- **[3d.city](../3dcity.md)** (JavaScript, GPL-3.0, mature, inactive since 2016)
|
||||
- **[ACM](../acm.md)** (C, GPL-2.0, mature, inactive since 2000)
|
||||
- **[Augustus](../augustus.md)** (C, C++, AGPL-3.0, mature)
|
||||
- **[Billiards](../billiards.md)** (Lua, Objective-C, GPL-3.0, beta, inactive since 2012)
|
||||
- **[Biogenesis](../biogenesis.md)** (Java, GPL-2.0, beta)
|
||||
- **[Black Shades Elite](../black_shades_elite.md)** (?, ?, beta, inactive since 2007)
|
||||
|
@ -16,6 +16,7 @@
|
||||
- **[Ares Dogfighter](../ares_dogfighter.md)** (Java, GPL-3.0, beta, inactive since 2016)
|
||||
- **[AssaultCube](../assaultcube.md)** (C, C++, Custom, mature, inactive since 2018)
|
||||
- **[Atomic Tanks](../atomic_tanks.md)** (C++, GPL-2.0, mature, inactive since 2016)
|
||||
- **[Augustus](../augustus.md)** (C, C++, AGPL-3.0, mature)
|
||||
- **[Aussenposten](../aussenposten.md)** (JavaScript, MIT, beta, inactive since 2015)
|
||||
- **[Azimuth](../azimuth.md)** (C, GPL-3.0, mature)
|
||||
- **[Battle Tanks](../battle_tanks.md)** (C++, GPL-2.0, mature, inactive since 2009)
|
||||
|
@ -3,7 +3,7 @@
|
||||
- Home: https://github.com/amerkoleci/vortice
|
||||
- State: mature
|
||||
- Download: https://www.nuget.org/packages?q=Tags%3A%22Vortice%22
|
||||
- Keyword: music, graphics framework
|
||||
- Keyword: framework
|
||||
- Code repository: https://github.com/amerkoleci/vortice.git
|
||||
- Code language: C#
|
||||
- Code license: MIT
|
||||
|
@ -299,9 +299,9 @@
|
||||
- Inspired entries: Cadaver
|
||||
- Media: https://en.wikipedia.org/wiki/Cadaver_(video_game)
|
||||
|
||||
## Caesar 3 [2]
|
||||
## Caesar 3 [3]
|
||||
|
||||
- Inspired entries: CaesarIA, Julius
|
||||
- Inspired entries: Augustus, CaesarIA, Julius
|
||||
|
||||
## Call to Power II [1]
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user