updated readme, checked external links

This commit is contained in:
Trilarion 2019-06-14 23:08:40 +02:00
parent 59e111f6e8
commit 1c367117a3
8 changed files with 59 additions and 51 deletions

View File

@ -16,23 +16,31 @@
[comment]: # (end of autogenerated content)
A list of open source games sorted by genre. The projects are at least in beta stage with a code basis that builds
into an executable demo. The code must be under a license that allows modification and sharing by others. For each entry,
relevant information is collected regarding code repositories, download possibilities and build instructions.
into an executable demo. The code must be under a [FOSS](https://en.wikipedia.org/wiki/FOSS) license that allows
modification and sharing by others. For each entry, relevant information is collected regarding code repositories,
download possibilities and build instructions.
Similar collections: [Open Source Clones](https://github.com/opengaming/osgameclones) of Popular Games, Popular games, add-ons, maps, etc. [hosted on GitHub.](https://github.com/leereilly/games), [List of open-source video games](https://en.wikipedia.org/wiki/List_of_open-source_video_games) on Wikipedia
Similar collections include [Open Source Clones](https://github.com/opengaming/osgameclones) of popular games;
Popular games, add-ons, maps, etc. [hosted on GitHub](https://github.com/leereilly/games); [List of open-source video games](https://en.wikipedia.org/wiki/List_of_open-source_video_games) on Wikipedia.
## Contributing
## Contribute
If you'd like to add or modify entries, please use the [Issue tracker](https://github.com/Trilarion/opensourcegames/issues),
To add or modify entries, please use the [Issue tracker](https://github.com/Trilarion/opensourcegames/issues),
or fork this repository and submit a pull request.
### Adding a new entry
All entries are stored as markdown (quite human readable) format. Adding a new entry is as easy as modifying the
[template](games/template.md) and putting a modified version in a games category subdirectory.
Checklist for a new entry
Here is a description of the fields in the template. Comments start with "//". Multiple values given should be
separated by comma.
- Must be a game, a game maker, a game's tool, a framework or a library, used in games
- Must be under a FOSS license (GPL, MIT, ...) and code must be available
- Must be mature or at least in beta (with an executable demo)
- Active or inactive is irrelevant.
All entries are stored as [markdown](https://en.wikipedia.org/wiki/Markdown) text with some specific conventions.
Adding a new entry is as easy as modifying the [template](games/template.md) and adding the modified markdown file in a subdirectory of [games](games).
Description of the fields in the template. Comments start with "//".
<pre>
# {NAME} // name of the game
@ -40,24 +48,24 @@ separated by comma.
_{Description}_ // single description line (typically taken from about page of game)
- Home: {URL} // project main site(s) (most significant first)
- Media: {URL} // links to wikipedia and other significant mentions
- Media: {URL} // (optional) links to wikipedia and other significant mentions
- State: {XX} // one of {beta, mature} and optional "inactive since YEAR"
- Play: {URL} // link(s) to online play possibility
- Download: {URL} // link(s) to download binary (or source) releases
- Platform: {XX} // list of supported platforms {Linux, Windows, MacOs, Android, ..}
- Keywords: {XX} // list of tags describing the game
- Play: {URL} // (optional) link(s) to online play possibility
- Download: {URL} // (optional) link(s) to download binary (or source) releases
- Platform: {XX} // (optional) list of supported platforms {Linux, Windows, MacOs, Android, ..}
- Keywords: {XX} // (optional) list of tags describing the game
- Code repository: {URL} // code repositories (most significant first)
- Code language: {XX} // programming language(s) used
- Code license: {XX} // license of the code, use "Custom" with comment in () if the license is project-specific
- Code dependencies: {XX} // important third party libraries / frameworks used by the project
- Assets license: {XX} // license(s) of the assets (artwork, ..)
- Code license: {XX} // (optional) license of the code, use "Custom" with comment in () if the license is project-specific
- Code dependencies: {XX} // (optional) important third party libraries / frameworks used by the project
- Assets license: {XX} // (optional) license(s) of the assets (artwork, ..)
// whatever you want to put here
## Building
- Build system: {XX} // typically one of {CMake, Autoconf, Gradle, ..}
- Build instructions: {URL} // link(s) to build instructions offered by the project
- Build system: {XX} // (optional) typically one of {CMake, Autoconf, Gradle, ..}
- Build instructions: {URL} // (optional) link(s) to build instructions offered by the project
// whatever you want to put here
</pre>
@ -71,21 +79,17 @@ Help: [MarkDown Help](https://help.github.com/articles/github-flavored-markdown)
## Background
I love open source projects and games and I am currently interested in learning more about building systems.
I see the following benefits of this database and further actions I intend to do.
I love open source projects and games and I am interested in learning more about building systems.
I see the following benefits of having this database.
- General information about open source games
- Possibility of improving build instructions on the projects side (not all projects actually have build instructions)
- Simplifying builds
- Adding infrastructure for automatic testing and deploying where not already present
- Revival of abandoned games that do not build anymore
- Simplifying dependencies
- Increasing the number of supported platforms
- Conversion of old repository formats like CVS to Git
## Disclaimer
No warranty whatsoever of the information presented herein for any purpose. There could be errors in here.
No warranty whatsoever of the information presented herein for any purpose. There could (will) be errors in here.
## License

View File

@ -15,7 +15,7 @@
<body>
<div class="container">
<h2>List of Open Source Games</h2>
<p>List of open source games in beta or mature state under a license that allows sharing and modification. The list is managed on <a href="https://github.com/Trilarion/opensourcegames">Github</a> (see also the <a href="https://trilarion.blogspot.com/search/label/osgames">Blog</a>). For feedback (additions, corrections, ..) use the <a href="https://github.com/Trilarion/opensourcegames/issues">Issue tracker</a>.</p>
<p>List of open source games in beta or mature state under a license that allows sharing and modification. The list is managed on <a href="https://github.com/Trilarion/opensourcegames">Github</a> (see also the <a href="https://trilarion.blogspot.com/search/label/osgames">Blog</a>). For feedback (additions, corrections, ..) use the <a href="https://github.com/Trilarion/opensourcegames/issues">Issue tracker</a>. Some <a href="https://github.com/Trilarion/opensourcegames/blob/master/games/statistics.md#statistics">statistics</a> about the games.</p>
<p> Other collections: <a href="https://osgameclones.com/">Open Source Game Clones</a>, <a href="https://github.com/leereilly/games/blob/master/README.md">Games on Github</a>, <a href="https://en.wikipedia.org/wiki/List_of_open-source_video_games">Open source games (Wikipedia)</a></p>
<p><h4>Features</h4></p>
<p>
@ -23,7 +23,6 @@
<li>Over 400 game entries. About 60% of the projects are mature and about 40% are currently inactive.</li>
<li>Games mostly written in C++, C, Java, Python, Lua, Javascript or PHP.</li>
<li>Games mostly published under GPL-2.0/3.0, MIT or Apache-2.0 license.</li>
<li>Tagged with keywords like: TBS, RTS, roguelike, remake, MMO, ..</li>
<li>Columns in the table (below) can be sorted and the rows can be filtered using the "Search" field.</li>
<li>Follow the "entry" link to see more details.</li>
</ul>
@ -36,8 +35,8 @@
</div>
<script>
var dataTable = new DataTable("table", {
perPage: 15,
perPageSelect: [10, 15, 30],
perPage: 30,
perPageSelect: [15, 30, 50],
ajax: "data.json",
footer: true
});

View File

@ -1,7 +1,7 @@
[comment]: # (autogenerated content, do not edit)
# Statistics
analyzed 406 entries on 2019-06-14 18:35:22
analyzed 406 entries on 2019-06-14 23:05:57
## State
@ -143,7 +143,7 @@ Imperium
## Build systems
Build systems information available for 19.0% of all projects
Build systems information available for 19.0% of all projects.
##### Build systems frequency (77)
@ -165,6 +165,8 @@ Allegro, Annchienta, Arx Libertatis, Astromenace, Atrinik, Battle for Wesnoth, B
## Platform
Platform information available for 7.9% of all projects.
##### Platforms frequency
- Android (31.2%)

View File

@ -5,7 +5,7 @@ _Little turn-based strategy game based on Pendulous shareware rules._
- Home: https://sourceforge.net/projects/blitzkrieg/
- State: beta, inactive since 2012
- Download: https://sourceforge.net/projects/blitzkrieg/files/developpement/
- Code repository: https://gitlab.com/osgames/blitzkrieg.git(backup of cvs), http://blitzkrieg.cvs.sourceforge.net/ (cvs)
- Code repository: https://gitlab.com/osgames/blitzkrieg.git (backup of cvs), http://blitzkrieg.cvs.sourceforge.net/ (cvs)
- Code language: Java
- Code license: GPL-3.0

View File

@ -6,7 +6,7 @@ _Play by email interstellar wargame for multiple players._
- State: mature, inactive since 2005
- Download: https://sourceforge.net/projects/galaxyng/files
- Keywords: TBS
- Code repository: https://gitlab.com/osgames/galaxyng.git(backup of cvs), http://galaxyng.cvs.sourceforge.net/ (cvs)
- Code repository: https://gitlab.com/osgames/galaxyng.git (backup of cvs), http://galaxyng.cvs.sourceforge.net/ (cvs)
- Code language: C
- Code license: GPL-2.0

View File

@ -5,7 +5,7 @@ _3D RTS game similar to Starcraft and Total Annihilation._
- Home: http://machinations.sourceforge.net/index.php, https://sourceforge.net/projects/machinations/
- State: beta, inactive since 2003
- Download: https://sourceforge.net/projects/machinations/
- Code repository: https://gitlab.com/osgames/machinations.git(backup of cvs), http://machinations.cvs.sourceforge.net/ (cvs)
- Code repository: https://gitlab.com/osgames/machinations.git (backup of cvs), http://machinations.cvs.sourceforge.net/ (cvs)
- Code language: C++
- Code license: GPL-2.0

View File

@ -3,19 +3,19 @@
_{Description}_
- Home: {URL}
- Media: {URL}
- State: {XX}
- Play: {URL}
- Download: {URL}
- Platform: {XX}
- Keywords: {XX}
- Media: {URL} (optional)
- State: {XX}
- Play: {URL} (optional)
- Download: {URL} (optional)
- Platform: {XX} (optional)
- Keywords: {XX} (optional)
- Code repository: {URL}
- Code language: {XX}
- Code license: {XX}
- Code dependencies: {XX}
- Assets license: {XX}
- Code license: {XX} (optional)
- Code dependencies: {XX} (optional)
- Assets license: {XX} (optional)
## Building
- Build system: {XX}
- Build instructions: {XX}
- Build system: {XX} (optional)
- Build instructions: {XX} (optional)

View File

@ -162,7 +162,7 @@ def check_validity_external_links():
from time to time.
"""
# regex for finding urls (can be in <> or in () or a whitespace
regex = re.compile(r"[\s\n]<(http.+?)>|\]\((http.+?)\)|[\s\n](http[^\s\n]+)")
regex = re.compile(r"[\s\n]<(http.+?)>|\]\((http.+?)\)|[\s\n](http[^\s\n,]+)")
# count
number_checked_links = 0
@ -180,8 +180,7 @@ def check_validity_external_links():
# for each entry
for entry_path in entry_paths:
# read entry
with open(entry_path, 'r', 'utf-8') as f:
content = f.read()
content = read_text(entry_path)
# apply regex
matches = regex.findall(content)
@ -195,11 +194,13 @@ def check_validity_external_links():
# if there was something
if url:
try:
# without a special headers, frequent 403 responses occur
# without a special header, frequent 403 responses occur
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'})
urllib.request.urlopen(req)
except urllib.error.HTTPError as e:
print("{}: {} - {}".format(os.path.basename(entry_path), url, e.code))
except urllib.error.URLError as e:
print("{}: {} - {}".format(os.path.basename(entry_path), url, e.reason))
except http.client.RemoteDisconnected:
print("{}: {} - disconnected without response".format(os.path.basename(entry_path), url))
@ -538,7 +539,7 @@ def generate_statistics():
if field in info:
build_systems.extend(info[field])
statistics += 'Build systems information available for {:.1f}% of all projects\n\n'.format(len(build_systems) / len(infois) * 100)
statistics += 'Build systems information available for {:.1f}% of all projects.\n\n'.format(len(build_systems) / len(infois) * 100)
unique_build_systems = set(build_systems)
unique_build_systems = [(l, build_systems.count(l) / len(build_systems)) for l in unique_build_systems]
@ -573,6 +574,8 @@ def generate_statistics():
if field in info:
platforms.extend(info[field])
statistics += 'Platform information available for {:.1f}% of all projects.\n\n'.format(len(platforms) / len(infois) * 100)
unique_platforms = set(platforms)
unique_platforms = [(l, platforms.count(l) / len(platforms)) for l in unique_platforms]
unique_platforms.sort(key=lambda x: x[0]) # first sort by name