updated readme, checked external links
This commit is contained in:
parent
59e111f6e8
commit
1c367117a3
56
README.md
56
README.md
@ -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
|
||||
|
||||
|
@ -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
|
||||
});
|
||||
|
@ -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%)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user