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)
|
[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
|
||||||
|
|
||||||
|
@ -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
|
||||||
});
|
});
|
||||||
|
@ -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%)
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user