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) [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 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, into an executable demo. The code must be under a [FOSS](https://en.wikipedia.org/wiki/FOSS) license that allows
relevant information is collected regarding code repositories, download possibilities and build instructions. 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. or fork this repository and submit a pull request.
### Adding a new entry ### Adding a new entry
All entries are stored as markdown (quite human readable) format. Adding a new entry is as easy as modifying the Checklist for a new entry
[template](games/template.md) and putting a modified version in a games category subdirectory.
Here is a description of the fields in the template. Comments start with "//". Multiple values given should be - Must be a game, a game maker, a game's tool, a framework or a library, used in games
separated by comma. - 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> <pre>
# {NAME} // name of the game # {NAME} // name of the game
@ -40,24 +48,24 @@ separated by comma.
_{Description}_ // single description line (typically taken from about page of game) _{Description}_ // single description line (typically taken from about page of game)
- Home: {URL} // project main site(s) (most significant first) - 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" - State: {XX} // one of {beta, mature} and optional "inactive since YEAR"
- Play: {URL} // link(s) to online play possibility - Play: {URL} // (optional) link(s) to online play possibility
- Download: {URL} // link(s) to download binary (or source) releases - Download: {URL} // (optional) link(s) to download binary (or source) releases
- Platform: {XX} // list of supported platforms {Linux, Windows, MacOs, Android, ..} - Platform: {XX} // (optional) list of supported platforms {Linux, Windows, MacOs, Android, ..}
- Keywords: {XX} // list of tags describing the game - Keywords: {XX} // (optional) list of tags describing the game
- Code repository: {URL} // code repositories (most significant first) - Code repository: {URL} // code repositories (most significant first)
- Code language: {XX} // programming language(s) used - 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 license: {XX} // (optional) 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 - Code dependencies: {XX} // (optional) important third party libraries / frameworks used by the project
- Assets license: {XX} // license(s) of the assets (artwork, ..) - Assets license: {XX} // (optional) license(s) of the assets (artwork, ..)
// whatever you want to put here // whatever you want to put here
## Building ## Building
- Build system: {XX} // typically one of {CMake, Autoconf, Gradle, ..} - Build system: {XX} // (optional) typically one of {CMake, Autoconf, Gradle, ..}
- Build instructions: {URL} // link(s) to build instructions offered by the project - Build instructions: {URL} // (optional) link(s) to build instructions offered by the project
// whatever you want to put here // whatever you want to put here
</pre> </pre>
@ -71,21 +79,17 @@ Help: [MarkDown Help](https://help.github.com/articles/github-flavored-markdown)
## Background ## Background
I love open source projects and games and I am currently interested in learning more about building systems. I love open source projects and games and I am interested in learning more about building systems.
I see the following benefits of this database and further actions I intend to do. I see the following benefits of having this database.
- General information about open source games - General information about open source games
- Possibility of improving build instructions on the projects side (not all projects actually have build instructions) - 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 - 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 - Conversion of old repository formats like CVS to Git
## Disclaimer ## 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 ## License

View File

@ -15,7 +15,7 @@
<body> <body>
<div class="container"> <div class="container">
<h2>List of Open Source Games</h2> <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> 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><h4>Features</h4></p>
<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>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 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>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>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> <li>Follow the "entry" link to see more details.</li>
</ul> </ul>
@ -36,8 +35,8 @@
</div> </div>
<script> <script>
var dataTable = new DataTable("table", { var dataTable = new DataTable("table", {
perPage: 15, perPage: 30,
perPageSelect: [10, 15, 30], perPageSelect: [15, 30, 50],
ajax: "data.json", ajax: "data.json",
footer: true footer: true
}); });

View File

@ -1,7 +1,7 @@
[comment]: # (autogenerated content, do not edit) [comment]: # (autogenerated content, do not edit)
# Statistics # Statistics
analyzed 406 entries on 2019-06-14 18:35:22 analyzed 406 entries on 2019-06-14 23:05:57
## State ## State
@ -143,7 +143,7 @@ Imperium
## Build systems ## 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) ##### Build systems frequency (77)
@ -165,6 +165,8 @@ Allegro, Annchienta, Arx Libertatis, Astromenace, Atrinik, Battle for Wesnoth, B
## Platform ## Platform
Platform information available for 7.9% of all projects.
##### Platforms frequency ##### Platforms frequency
- Android (31.2%) - 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/ - Home: https://sourceforge.net/projects/blitzkrieg/
- State: beta, inactive since 2012 - State: beta, inactive since 2012
- Download: https://sourceforge.net/projects/blitzkrieg/files/developpement/ - 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 language: Java
- Code license: GPL-3.0 - Code license: GPL-3.0

View File

@ -6,7 +6,7 @@ _Play by email interstellar wargame for multiple players._
- State: mature, inactive since 2005 - State: mature, inactive since 2005
- Download: https://sourceforge.net/projects/galaxyng/files - Download: https://sourceforge.net/projects/galaxyng/files
- Keywords: TBS - 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 language: C
- Code license: GPL-2.0 - 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/ - Home: http://machinations.sourceforge.net/index.php, https://sourceforge.net/projects/machinations/
- State: beta, inactive since 2003 - State: beta, inactive since 2003
- Download: https://sourceforge.net/projects/machinations/ - 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 language: C++
- Code license: GPL-2.0 - Code license: GPL-2.0

View File

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

View File

@ -162,7 +162,7 @@ def check_validity_external_links():
from time to time. from time to time.
""" """
# regex for finding urls (can be in <> or in () or a whitespace # 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 # count
number_checked_links = 0 number_checked_links = 0
@ -180,8 +180,7 @@ def check_validity_external_links():
# for each entry # for each entry
for entry_path in entry_paths: for entry_path in entry_paths:
# read entry # read entry
with open(entry_path, 'r', 'utf-8') as f: content = read_text(entry_path)
content = f.read()
# apply regex # apply regex
matches = regex.findall(content) matches = regex.findall(content)
@ -195,11 +194,13 @@ def check_validity_external_links():
# if there was something # if there was something
if url: if url:
try: 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)'}) req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'})
urllib.request.urlopen(req) urllib.request.urlopen(req)
except urllib.error.HTTPError as e: except urllib.error.HTTPError as e:
print("{}: {} - {}".format(os.path.basename(entry_path), url, e.code)) 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: except http.client.RemoteDisconnected:
print("{}: {} - disconnected without response".format(os.path.basename(entry_path), url)) print("{}: {} - disconnected without response".format(os.path.basename(entry_path), url))
@ -538,7 +539,7 @@ def generate_statistics():
if field in info: if field in info:
build_systems.extend(info[field]) 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 = set(build_systems)
unique_build_systems = [(l, build_systems.count(l) / len(build_systems)) for l in unique_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: if field in info:
platforms.extend(info[field]) 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 = set(platforms)
unique_platforms = [(l, platforms.count(l) / len(platforms)) for l in unique_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 unique_platforms.sort(key=lambda x: x[0]) # first sort by name