update static website generation

This commit is contained in:
Trilarion 2020-12-04 13:19:14 +01:00
parent 967a98eed0
commit 8d5b43e441
24 changed files with 204 additions and 89 deletions

View File

@ -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)

View File

@ -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",

View File

@ -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

View File

@ -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__":

View File

@ -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">

View File

@ -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

View File

@ -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>

View File

@ -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">

View File

@ -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">

View File

@ -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>

View File

@ -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

View File

@ -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')

View File

@ -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
View 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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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