additions from backlog

This commit is contained in:
Trilarion 2019-10-04 15:18:09 +02:00
parent a4529af611
commit 99b3eb5e74
38 changed files with 459 additions and 194 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)** **[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) [comment]: # (start of autogenerated content, do not edit)
**[All entries](entries/tocs/_all.md#All)** (1079) **[All entries](entries/tocs/_all.md#All)** (1088)
By category: **[Action](entries/tocs/_action.md#action)** (187), **[Adventure](entries/tocs/_adventure.md#adventure)** (34), **[Arcade](entries/tocs/_arcade.md#arcade)** (61), **[Board game](entries/tocs/_board-game.md#board-game)** (9), **[Card game](entries/tocs/_card-game.md#card-game)** (2), **[Educational](entries/tocs/_educational.md#educational)** (5), **[Framework](entries/tocs/_framework.md#framework)** (69), **[Game engine](entries/tocs/_game-engine.md#game-engine)** (91), **[Library](entries/tocs/_library.md#library)** (29), **[Music](entries/tocs/_music.md#music)** (10), **[Platform](entries/tocs/_platform.md#platform)** (33), **[Puzzle](entries/tocs/_puzzle.md#puzzle)** (84), **[Remake](entries/tocs/_remake.md#remake)** (462), **[Role playing](entries/tocs/_role-playing.md#role-playing)** (151), **[Simulation](entries/tocs/_simulation.md#simulation)** (78), **[Sports](entries/tocs/_sports.md#sports)** (19), **[Strategy](entries/tocs/_strategy.md#strategy)** (222), **[Tool](entries/tocs/_tool.md#tool)** (26), **[Visual novel](entries/tocs/_visual-novel.md#visual-novel)** (4) By category: **[Action](entries/tocs/_action.md#action)** (188), **[Adventure](entries/tocs/_adventure.md#adventure)** (34), **[Arcade](entries/tocs/_arcade.md#arcade)** (62), **[Board game](entries/tocs/_board-game.md#board-game)** (9), **[Card game](entries/tocs/_card-game.md#card-game)** (2), **[Educational](entries/tocs/_educational.md#educational)** (5), **[Framework](entries/tocs/_framework.md#framework)** (71), **[Game engine](entries/tocs/_game-engine.md#game-engine)** (92), **[Library](entries/tocs/_library.md#library)** (32), **[Music](entries/tocs/_music.md#music)** (10), **[Platform](entries/tocs/_platform.md#platform)** (33), **[Puzzle](entries/tocs/_puzzle.md#puzzle)** (84), **[Remake](entries/tocs/_remake.md#remake)** (462), **[Role playing](entries/tocs/_role-playing.md#role-playing)** (152), **[Simulation](entries/tocs/_simulation.md#simulation)** (78), **[Sports](entries/tocs/_sports.md#sports)** (19), **[Strategy](entries/tocs/_strategy.md#strategy)** (222), **[Tool](entries/tocs/_tool.md#tool)** (29), **[Visual novel](entries/tocs/_visual-novel.md#visual-novel)** (4)
By platform: **[Windows](entries/tocs/_windows.md#windows)** (290), **[Linux](entries/tocs/_linux.md#linux)** (267), **[macOS](entries/tocs/_macos.md#macos)** (159), **[Android](entries/tocs/_android.md#android)** (54), **[iOS](entries/tocs/_ios.md#ios)** (9), **[Web](entries/tocs/_web.md#web)** (56) By platform: **[Windows](entries/tocs/_windows.md#windows)** (299), **[Linux](entries/tocs/_linux.md#linux)** (274), **[macOS](entries/tocs/_macos.md#macos)** (164), **[Android](entries/tocs/_android.md#android)** (56), **[iOS](entries/tocs/_ios.md#ios)** (10), **[Web](entries/tocs/_web.md#web)** (57)
[comment]: # (end of autogenerated content) [comment]: # (end of autogenerated content)

View File

@ -384,6 +384,14 @@
"arcade", "arcade",
"<a href=\"https://github.com/yiotro/Antiyoy.git\">Source</a> - Java - GPL-3.0" "<a href=\"https://github.com/yiotro/Antiyoy.git\">Source</a> - Java - GPL-3.0"
], ],
[
"Anura (<a href=\"https://github.com/anura-engine/anura\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/anura.md\">entry</a>)",
"Engine for Frogatto and Friends.",
"",
"mature / active",
"arcade, game engine",
"<a href=\"https://github.com/anura-engine/anura.git\">Source</a> - C, C++ - zlib"
],
[ [
"Apricots (<a href=\"https://web.archive.org/web/20110819212117/http://www.fishies.org.uk/apricots.html\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/apricots.md\">entry</a>)", "Apricots (<a href=\"https://web.archive.org/web/20110819212117/http://www.fishies.org.uk/apricots.html\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/apricots.md\">entry</a>)",
"Fly an airplane, fire missiles, drop bombs, destroy enemy..", "Fly an airplane, fire missiles, drop bombs, destroy enemy..",
@ -1544,6 +1552,14 @@
"role playing, massive multiplayer online", "role playing, massive multiplayer online",
"<a href=\"https://svn.code.sf.net/p/crossfire/code/\">Source</a> - C, Java - GPL-2.0" "<a href=\"https://svn.code.sf.net/p/crossfire/code/\">Source</a> - C, Java - GPL-2.0"
], ],
[
"CrossUO (<a href=\"https://crossuo.com/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/crossuo.md\">entry</a>)",
"Ultima Online client.",
"",
"mature / active",
"role playing, requires online access",
"<a href=\"https://github.com/crossuo/crossuo.git\">Source</a> - C, C++ - GPL-3.0"
],
[ [
"Crown (<a href=\"https://github.com/dbartolini/crown\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/crown.md\">entry</a>)", "Crown (<a href=\"https://github.com/dbartolini/crown\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/crown.md\">entry</a>)",
"Data-driven game engine.", "Data-driven game engine.",
@ -1718,7 +1734,7 @@
"", "",
"mature / inactive since 2002", "mature / inactive since 2002",
"remake, inspired by 3D Deathchase, shooter", "remake, inspired by 3D Deathchase, shooter",
"<a href=\"https://web.archive.org/web/20070711231311/http://www.robsons.org.uk/archive/www.autismuk.freeserve.co.uk/deathchase3d-0.9.tar.gz\">Source</a> - C - GPL-2.0" "<a href=\"https://gitlab.com/osgames/deathchase3d.git\">Source</a> - C, Perl - GPL-2.0"
], ],
[ [
"Decker (<a href=\"https://web.archive.org/web/20110926115405/http://www10.caro.net:80/dsi/decker/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/decker.md\">entry</a>)", "Decker (<a href=\"https://web.archive.org/web/20110926115405/http://www10.caro.net:80/dsi/decker/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/decker.md\">entry</a>)",
@ -2544,6 +2560,14 @@
"framework", "framework",
"<a href=\"https://github.com/AdamAtomic/flixel.git\">Source</a> - ActionScript - MIT" "<a href=\"https://github.com/AdamAtomic/flixel.git\">Source</a> - ActionScript - MIT"
], ],
[
"flixel-gdx (<a href=\"https://web.archive.org/web/20190623151758/http://flixel-gdx.com/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/flixel-gdx.md\">entry</a>)",
"2D game engine in Java based on Flixel.",
"",
"beta / inactive since 2017",
"framework, 2D",
"<a href=\"https://github.com/flixel-gdx/flixel-gdx.git\">Source</a> - Java - 3-clause BSD"
],
[ [
"Fluid Table Tennis (<a href=\"https://github.com/anirudhjoshi/fluid_table_tennis\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/fluid_table_tennis.md\">entry</a>)", "Fluid Table Tennis (<a href=\"https://github.com/anirudhjoshi/fluid_table_tennis\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/fluid_table_tennis.md\">entry</a>)",
"Remake of Plasma Pong.", "Remake of Plasma Pong.",
@ -4448,6 +4472,14 @@
"action, shooter", "action, shooter",
"<a href=\"https://gitlab.com/osgames/microwar.git\">Source</a> - Python - 3-clause BSD" "<a href=\"https://gitlab.com/osgames/microwar.git\">Source</a> - Python - 3-clause BSD"
], ],
[
"Mindustry (<a href=\"https://mindustrygame.github.io/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/mindustry.md\">entry</a>)",
"Sandbox tower defense game.",
"<a href=\"https://play.google.com/store/apps/details?id=io.anuke.mindustry\">Link</a>",
"mature / active",
"action, sandbox, tower defense",
"<a href=\"https://github.com/Anuken/Mindustry.git\">Source</a> - Java - GPL-3.0"
],
[ [
"MineCraft-One-Week-Challenge (<a href=\"https://github.com/Hopson97/MineCraft-One-Week-Challenge\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/minecraft-one-week-challenge.md\">entry</a>)", "MineCraft-One-Week-Challenge (<a href=\"https://github.com/Hopson97/MineCraft-One-Week-Challenge\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/minecraft-one-week-challenge.md\">entry</a>)",
"Clone of Minecraft.", "Clone of Minecraft.",
@ -5848,6 +5880,14 @@
"strategy", "strategy",
"<a href=\"https://gitlab.com/osgames/planets.git\">Source</a> - Java - GPL-2.0" "<a href=\"https://gitlab.com/osgames/planets.git\">Source</a> - Java - GPL-2.0"
], ],
[
"PLIB (<a href=\"http://plib.sourceforge.net/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/plib.md\">entry</a>)",
"Game framework.",
"<a href=\"http://plib.sourceforge.net/download.html\">Link</a>",
"mature / inactive since 2012",
"framework, library",
"<a href=\"https://svn.code.sf.net/p/plib/code/\">Source</a> - C++ - LGPL-2.0"
],
[ [
"PokerTH (<a href=\"https://www.pokerth.net/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pokerth.md\">entry</a>)", "PokerTH (<a href=\"https://www.pokerth.net/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pokerth.md\">entry</a>)",
"Texas Hold'em poker game playable against up to nine..", "Texas Hold'em poker game playable against up to nine..",
@ -5968,6 +6008,14 @@
"puzzle, clone, inspired by Minesweeper", "puzzle, clone, inspired by Minesweeper",
"<a href=\"https://github.com/GoogleChromeLabs/proxx.git\">Source</a> - TypeScript, JavaScript - Apache-2.0" "<a href=\"https://github.com/GoogleChromeLabs/proxx.git\">Source</a> - TypeScript, JavaScript - Apache-2.0"
], ],
[
"Psyco (<a href=\"http://psyco.sourceforge.net/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/psyco.md\">entry</a>)",
"Python specializing compiler.",
"<a href=\"http://psyco.sourceforge.net/download.html\">Link</a>",
"mature / inactive since 2008",
"tool",
"C - MIT"
],
[ [
"Pthreads-win32 (<a href=\"https://sourceware.org/pthreads-win32/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pthreads-win32.md\">entry</a>)", "Pthreads-win32 (<a href=\"https://sourceware.org/pthreads-win32/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pthreads-win32.md\">entry</a>)",
"Implements a large subset of the POSIX standard threads..", "Implements a large subset of the POSIX standard threads..",
@ -6040,6 +6088,14 @@
"framework", "framework",
"<a href=\"https://github.com/marcusmoller/pyorpg-client.git\">Source</a> - Python - MIT" "<a href=\"https://github.com/marcusmoller/pyorpg-client.git\">Source</a> - Python - MIT"
], ],
[
"pyscroll (<a href=\"https://pypi.org/project/pyscroll/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pyscroll.md\">entry</a>)",
"Animated scrolling maps in pygame library.",
"",
"mature / inactive since 2018",
"library",
"<a href=\"https://github.com/bitcraft/pyscroll.git\">Source</a> - Python - LGPL-3.0"
],
[ [
"pyskool (<a href=\"http://pyskool.ca/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pyskool.md\">entry</a>)", "pyskool (<a href=\"http://pyskool.ca/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pyskool.md\">entry</a>)",
"Remake of Skool Daze.", "Remake of Skool Daze.",
@ -6056,6 +6112,14 @@
"strategy, cards", "strategy, cards",
"Python - GPL-2.0" "Python - GPL-2.0"
], ],
[
"PyTMX (<a href=\"https://pypi.org/project/PyTMX/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/pytmx.md\">entry</a>)",
"Read Tiled Map Editor's TMX maps.",
"",
"mature / active",
"tool, library",
"<a href=\"https://github.com/bitcraft/PyTMX.git\">Source</a> - Python - LGPL-3.0"
],
[ [
"Q-Gears (<a href=\"https://github.com/q-gears/q-gears\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/q-gears.md\">entry</a>)", "Q-Gears (<a href=\"https://github.com/q-gears/q-gears\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/q-gears.md\">entry</a>)",
"Remake of Final Fantasy VII.", "Remake of Final Fantasy VII.",
@ -6224,6 +6288,14 @@
"action, inspired by Rescue!, real time, remake, space, strategy", "action, inspired by Rescue!, real time, remake, space, strategy",
"<a href=\"https://gitlab.com/osgames/rescue.git\">Source</a> - Java - GPL-3.0" "<a href=\"https://gitlab.com/osgames/rescue.git\">Source</a> - Java - GPL-3.0"
], ],
[
"ReShade (<a href=\"https://reshade.me/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/reshade.md\">entry</a>)",
"Post-processing graphics injector.",
"<a href=\"https://reshade.me/releases\">Link</a>",
"mature / active",
"tool",
"<a href=\"https://github.com/crosire/reshade.git\">Source</a> - C++ - 3-clause BSD"
],
[ [
"ResidualVM (<a href=\"http://residualvm.org/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/residualvm.md\">entry</a>)", "ResidualVM (<a href=\"http://residualvm.org/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/residualvm.md\">entry</a>)",
"Remake of Grim Fandango, Escape from Monkey Island, Myst..", "Remake of Grim Fandango, Escape from Monkey Island, Myst..",
@ -6789,8 +6861,8 @@
"Remake of Solar Fox.", "Remake of Solar Fox.",
"<a href=\"https://www.pygame.org/shredwheat/solarwolf/index.shtml#download\">Link</a>", "<a href=\"https://www.pygame.org/shredwheat/solarwolf/index.shtml#download\">Link</a>",
"mature / inactive since 2004", "mature / inactive since 2004",
"action, arcade, inspired by Solar Fox, remake", "action, arcade, inspired by Solar Fox, open content, remake",
"<a href=\"http://pygame.org/shredwheat/solarwolf/solarwolf-1.5.tar.gz\">Source</a> - Python - LGPL-2.1" "<a href=\"https://gitlab.com/osgames/solarwolf.git\">Source</a> - Python - LGPL-2.1"
], ],
[ [
"Song of Albion (<a href=\"https://code.google.com/archive/p/songofalbion/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/song_of_albion.md\">entry</a>)", "Song of Albion (<a href=\"https://code.google.com/archive/p/songofalbion/\">home</a>, <a href=\"https://github.com/Trilarion/opensourcegames/blob/master/entries/song_of_albion.md\">entry</a>)",

14
entries/anura.md Normal file
View File

@ -0,0 +1,14 @@
# Anura
_Engine for Frogatto and Friends._
- Home: https://github.com/anura-engine/anura
- State: mature
- Platform: Windows
- Keywords: arcade, game engine
- Code repository: https://github.com/anura-engine/anura.git
- Code language: C, C++
- Code license: zlib (src folder)
## Building

18
entries/crossuo.md Normal file
View File

@ -0,0 +1,18 @@
# CrossUO
_ Ultima Online client._
- Home: https://crossuo.com/
- Media: https://en.wikipedia.org/wiki/Ultima_Online
- State: mature
- Platform: Windows, Linux, macOS
- Keywords: role playing, requires online access
- Code repository: https://github.com/crossuo/crossuo.git
- Code language: C, C++
- Code license: GPL-3.0
Fork of OrionUO
## Building
- Build system: CMake

View File

@ -5,8 +5,9 @@ _Remake of 3D Deathchase._
- Home: https://web.archive.org/web/20070711231311/http://www.robsons.org.uk/archive/www.autismuk.freeserve.co.uk/index.htm - Home: https://web.archive.org/web/20070711231311/http://www.robsons.org.uk/archive/www.autismuk.freeserve.co.uk/index.htm
- State: mature, inactive since 2002 - State: mature, inactive since 2002
- Keywords: remake, inspired by 3D Deathchase, shooter - Keywords: remake, inspired by 3D Deathchase, shooter
- Code repository: https://web.archive.org/web/20070711231311/http://www.robsons.org.uk/archive/www.autismuk.freeserve.co.uk/deathchase3d-0.9.tar.gz - Code repository: https://gitlab.com/osgames/deathchase3d.git (import of source release at https://web.archive.org/web/20070711231311/http://www.robsons.org.uk/archive/www.autismuk.freeserve.co.uk/deathchase3d-0.9.tar.gz)
- Code language: C - Code language: C, Perl
- Code license: GPL-2.0 - Code license: GPL-2.0
- Code dependencies: SDL
## Building ## Building

14
entries/flixel-gdx.md Normal file
View File

@ -0,0 +1,14 @@
# flixel-gdx
_2D game engine in Java based on Flixel._
- Home: https://web.archive.org/web/20190623151758/http://flixel-gdx.com/
- State: beta, inactive since 2017
- Platform: Windows, Linux, macOS, Android, iOS, Web
- Keywords: framework, 2D
- Code repository: https://github.com/flixel-gdx/flixel-gdx.git
- Code language: Java
- Code license: 3-clause BSD
- Code dependencies: libGDX
## Building

View File

@ -11,4 +11,6 @@ _Remake of Jump 'n Bump._
- Code license: GPL-2.0 - Code license: GPL-2.0
- Code dependencies: SDL - Code dependencies: SDL
See also https://gitlab.com/LibreGames/jumpnbump (same game?)
## Building ## Building

17
entries/mindustry.md Normal file
View File

@ -0,0 +1,17 @@
# Mindustry
_Sandbox tower defense game._
- Home: https://mindustrygame.github.io/
- State: mature
- Download: https://play.google.com/store/apps/details?id=io.anuke.mindustry, https://f-droid.org/packages/io.anuke.mindustry/, https://anuke.itch.io/mindustry
- Platform: Windows, Linux, Android
- Keywords: action, sandbox, tower defense
- Code repository: https://github.com/Anuken/Mindustry.git
- Code language: Java
- Code license: GPL-3.0
- Code dependencies: libGDX
## Building
- Build system: Gradle

16
entries/plib.md Normal file
View File

@ -0,0 +1,16 @@
# PLIB
_Game framework._
- Home: http://plib.sourceforge.net/, https://sourceforge.net/projects/plib/
- State: mature, inactive since 2012
- Download: http://plib.sourceforge.net/download.html
- Platform: Windows, Linux, macOS
- Keywords: framework, library
- Code repository: https://svn.code.sf.net/p/plib/code/ (svn)
- Code language: C++
- Code license: LGPL-2.0
## Building
- Build system: Autoconf

View File

@ -10,4 +10,6 @@ _Remake of Quake._
- Code language: C - Code language: C
- Code license: GPL-2.0 - Code license: GPL-2.0
See also: http://quakeone.com/markv/
## Building ## Building

16
entries/psyco.md Normal file
View File

@ -0,0 +1,16 @@
# Psyco
_Python specializing compiler._
- Home: http://psyco.sourceforge.net/, https://sourceforge.net/projects/psyco/
- State: mature, inactive since 2008
- Download: http://psyco.sourceforge.net/download.html
- Platform: Windows, Linux
- Keywords: tool
- Code repository: (see download)
- Code language: C
- Code license: MIT
Unmaintained, refers to pypy.org
## Building

15
entries/pyscroll.md Normal file
View File

@ -0,0 +1,15 @@
# pyscroll
_Animated scrolling maps in pygame library._
- Home: https://pypi.org/project/pyscroll/
- State: mature, inactive since 2018
- Platform: Windows, Linux, macOS (all that pygame supports)
- Keywords: library
- Code repository: https://github.com/bitcraft/pyscroll.git
- Code language: Python
- Code license: LGPL-3.0
- Code dependencies: pygame
## Building

13
entries/pytmx.md Normal file
View File

@ -0,0 +1,13 @@
# PyTMX
_Read Tiled Map Editor's TMX maps._
- Home: https://pypi.org/project/PyTMX/
- State: mature
- Platform: Windows, Linux, macOS (all supported by pygame)
- Keywords: tool, library
- Code repository: https://github.com/bitcraft/PyTMX.git
- Code language: Python
- Code license: LGPL-3.0
## Building

17
entries/reshade.md Normal file
View File

@ -0,0 +1,17 @@
# ReShade
_Post-processing graphics injector._
- Home: https://reshade.me/
- State: mature
- Download: https://reshade.me/releases
- Platform: Windows
- Keywords: tool
- Code repository: https://github.com/crosire/reshade.git
- Code language: C++
- Code license: 3-clause BSD
## Building
- Build system: VisualStudio

View File

@ -6,10 +6,14 @@ _Remake of Solar Fox._
- State: mature, inactive since 2004 - State: mature, inactive since 2004
- Download: https://www.pygame.org/shredwheat/solarwolf/index.shtml#download - Download: https://www.pygame.org/shredwheat/solarwolf/index.shtml#download
- Platform: Windows, Linux, macOS - Platform: Windows, Linux, macOS
- Keywords: action, arcade, inspired by Solar Fox, remake - Keywords: action, arcade, inspired by Solar Fox, open content, remake
- Code repository: http://pygame.org/shredwheat/solarwolf/solarwolf-1.5.tar.gz - Code repository: https://gitlab.com/osgames/solarwolf.git (import of source releases)
- Code language: Python - Code language: Python
- Code license: LGPL-2.1 - Code license: LGPL-2.1
- Code dependencies: pygame - Code dependencies: pygame
Developer: Pete Shinners, Eero Tamminen
## Building ## Building
- Build system: Make

View File

@ -111,6 +111,7 @@
- **[Mega Mario](../mega_mario.md)** (C++, LGPL-2.1, mature, inactive since 2012) - **[Mega Mario](../mega_mario.md)** (C++, LGPL-2.1, mature, inactive since 2012)
- **[Memory Game](../memory_game.md)** (Java, Apache-2.0, mature) - **[Memory Game](../memory_game.md)** (Java, Apache-2.0, mature)
- **[MicroWar 2.0](../microwar_20.md)** (Python, 3-clause BSD, mature, inactive since 2009) - **[MicroWar 2.0](../microwar_20.md)** (Python, 3-clause BSD, mature, inactive since 2009)
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
- **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017) - **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017)
- **[mk.js](../mkjs.md)** (JavaScript, MIT, beta) - **[mk.js](../mkjs.md)** (JavaScript, MIT, beta)
- **[Mr.Boom](../mrboom.md)** (C++, MIT, mature) - **[Mr.Boom](../mrboom.md)** (C++, MIT, mature)

View File

@ -48,6 +48,7 @@
- **[Antares](../antares.md)** (C++, LGPL-3.0, beta) - **[Antares](../antares.md)** (C++, LGPL-3.0, beta)
- **[AntiChess](../antichess.md)** (Java, MIT, mature, inactive since 2003) - **[AntiChess](../antichess.md)** (Java, MIT, mature, inactive since 2003)
- **[antiyoy](../antiyoy.md)** (Java, GPL-3.0, beta) - **[antiyoy](../antiyoy.md)** (Java, GPL-3.0, beta)
- **[Anura](../anura.md)** (C, C++, zlib, mature)
- **[Apricots](../apricots.md)** (C++, GPL-2.0, beta, inactive since 2003) - **[Apricots](../apricots.md)** (C++, GPL-2.0, beta, inactive since 2003)
- **[aquastax](../aquastax.md)** (JavaScript, MIT, beta) - **[aquastax](../aquastax.md)** (JavaScript, MIT, beta)
- **[Arashi-JS](../arashi-js.md)** (JavaScript, GPL-2.0, beta, inactive since 2010) - **[Arashi-JS](../arashi-js.md)** (JavaScript, GPL-2.0, beta, inactive since 2010)
@ -193,6 +194,7 @@
- **[CrappyBird](../crappybird.md)** (JavaScript, MIT, mature, inactive since 2017) - **[CrappyBird](../crappybird.md)** (JavaScript, MIT, mature, inactive since 2017)
- **[Crimson Fields](../crimson_fields.md)** (C++, GPL-2.0, mature, inactive since 2010) - **[Crimson Fields](../crimson_fields.md)** (C++, GPL-2.0, mature, inactive since 2010)
- **[Crossfire](../crossfire.md)** (C, Java, GPL-2.0, mature) - **[Crossfire](../crossfire.md)** (C, Java, GPL-2.0, mature)
- **[CrossUO](../crossuo.md)** (C, C++, GPL-3.0, mature)
- **[Crown and Cutlass](../crown_and_cutlass.md)** (C++, Custom, beta, inactive since 2009) - **[Crown and Cutlass](../crown_and_cutlass.md)** (C++, Custom, beta, inactive since 2009)
- **[Crown](../crown.md)** (C, C++, Vala, MIT, beta) - **[Crown](../crown.md)** (C, C++, Vala, MIT, beta)
- **[Crypto++](../crypto.md)** (C++, Boost-1.0, mature) - **[Crypto++](../crypto.md)** (C++, Boost-1.0, mature)
@ -214,7 +216,7 @@
- **[Dave Gnukem](../dave_gnukem.md)** (C++, GPL-2.0, mature) - **[Dave Gnukem](../dave_gnukem.md)** (C++, GPL-2.0, mature)
- **[Dawn](../dawn.md)** (C++, GPL-3.0, beta, inactive since 2011) - **[Dawn](../dawn.md)** (C++, GPL-3.0, beta, inactive since 2011)
- **[Dear ImGui](../dear_imgui.md)** (C, C++, MIT, mature) - **[Dear ImGui](../dear_imgui.md)** (C, C++, MIT, mature)
- **[Deathchase 3D](../deathchase_3d.md)** (C, GPL-2.0, mature, inactive since 2002) - **[Deathchase 3D](../deathchase_3d.md)** (C, Perl, GPL-2.0, mature, inactive since 2002)
- **[Decker](../decker.md)** (Java, GPL-2.0, beta, inactive since 2013) - **[Decker](../decker.md)** (Java, GPL-2.0, beta, inactive since 2013)
- **[Dedalus](../dedalus.md)** (JavaScript, GPL-2.0, beta, inactive since 2018) - **[Dedalus](../dedalus.md)** (JavaScript, GPL-2.0, beta, inactive since 2018)
- **[Defendguin](../defendguin.md)** (C, GPL-2.0, mature, inactive since 2009) - **[Defendguin](../defendguin.md)** (C, GPL-2.0, mature, inactive since 2009)
@ -317,6 +319,7 @@
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature) - **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
- **[Flex Engine](../flex_engine.md)** (C++, MIT, beta) - **[Flex Engine](../flex_engine.md)** (C++, MIT, beta)
- **[FlightGear](../flightgear.md)** (C++, GPL-2.0, mature) - **[FlightGear](../flightgear.md)** (C++, GPL-2.0, mature)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[Flixel](../flixel.md)** (ActionScript, MIT, mature) - **[Flixel](../flixel.md)** (ActionScript, MIT, mature)
- **[Fluid Table Tennis](../fluid_table_tennis.md)** (JavaScript, MIT, mature, inactive since 2013) - **[Fluid Table Tennis](../fluid_table_tennis.md)** (JavaScript, MIT, mature, inactive since 2013)
- **[fonline](../fonline.md)** (C, C++, GPL-3.0, beta) - **[fonline](../fonline.md)** (C, C++, GPL-3.0, beta)
@ -556,6 +559,7 @@
- **[micropolisJS](../micropolisjs.md)** (JavaScript, GPL-3.0, mature) - **[micropolisJS](../micropolisjs.md)** (JavaScript, GPL-3.0, mature)
- **[Microracers](../microracers.md)** (C, C++, GPL-2.0, beta, inactive since 2005) - **[Microracers](../microracers.md)** (C, C++, GPL-2.0, beta, inactive since 2005)
- **[MicroWar 2.0](../microwar_20.md)** (Python, 3-clause BSD, mature, inactive since 2009) - **[MicroWar 2.0](../microwar_20.md)** (Python, 3-clause BSD, mature, inactive since 2009)
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
- **[MineCraft-One-Week-Challenge](../minecraft-one-week-challenge.md)** (C++, MIT, beta) - **[MineCraft-One-Week-Challenge](../minecraft-one-week-challenge.md)** (C++, MIT, beta)
- **[Minesweeper (in C)](../minesweeper_in_c.md)** (C, 3-clause BSD, beta, inactive since 2015) - **[Minesweeper (in C)](../minesweeper_in_c.md)** (C, 3-clause BSD, beta, inactive since 2015)
- **[Minesweeper.Zone](../minesweeperzone.md)** (JavaScript, PHP, MIT, mature) - **[Minesweeper.Zone](../minesweeperzone.md)** (JavaScript, PHP, MIT, mature)
@ -731,6 +735,7 @@
- **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature) - **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature)
- **[PlaneShift](../planeshift.md)** (C++, GPL-2.0, mature) - **[PlaneShift](../planeshift.md)** (C++, GPL-2.0, mature)
- **[Planetary Hoppers](../planetary_hoppers.md)** (Java, GPL-2.0, beta, inactive since 2003) - **[Planetary Hoppers](../planetary_hoppers.md)** (Java, GPL-2.0, beta, inactive since 2003)
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
- **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017) - **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017)
- **[Polis](../polis.md)** (Java, GPL-3.0, mature, inactive since 2016) - **[Polis](../polis.md)** (Java, GPL-3.0, mature, inactive since 2016)
- **[Polycode](../polycode.md)** (C, C++, MIT, beta) - **[Polycode](../polycode.md)** (C, C++, MIT, beta)
@ -746,6 +751,7 @@
- **[Project Helena](../project_helena.md)** (Pascal, GPL-3.0, beta) - **[Project Helena](../project_helena.md)** (Pascal, GPL-3.0, beta)
- **[ProQuake 4](../proquake_4.md)** (C, GPL-2.0, mature, inactive since 2018) - **[ProQuake 4](../proquake_4.md)** (C, GPL-2.0, mature, inactive since 2018)
- **[proxx](../proxx.md)** (TypeScript, JavaScript, Apache-2.0, mature) - **[proxx](../proxx.md)** (TypeScript, JavaScript, Apache-2.0, mature)
- **[Psyco](../psyco.md)** (C, MIT, mature, inactive since 2008)
- **[Pthreads-win32](../pthreads-win32.md)** (C, LGPL-2.1, mature) - **[Pthreads-win32](../pthreads-win32.md)** (C, LGPL-2.1, mature)
- **[Pushover](../pushover.md)** (C++, C, Lua, GPL-3.0, beta, inactive since 2018) - **[Pushover](../pushover.md)** (C++, C, Lua, GPL-3.0, beta, inactive since 2018)
- **[PyBreak360](../pybreak360.md)** (Python, GPL-3.0, mature, inactive since 2015) - **[PyBreak360](../pybreak360.md)** (Python, GPL-3.0, mature, inactive since 2015)
@ -755,8 +761,10 @@
- **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011) - **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011)
- **[Pymapper](../pymapper.md)** (Python, GPL-3.0, mature) - **[Pymapper](../pymapper.md)** (Python, GPL-3.0, mature)
- **[pyORPG](../pyorpg.md)** (Python, MIT, beta, inactive since 2015) - **[pyORPG](../pyorpg.md)** (Python, MIT, beta, inactive since 2015)
- **[pyscroll](../pyscroll.md)** (Python, LGPL-3.0, mature, inactive since 2018)
- **[pyskool](../pyskool.md)** (Python, GPL-3.0, mature) - **[pyskool](../pyskool.md)** (Python, GPL-3.0, mature)
- **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004) - **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004)
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
- **[Q-Gears](../q-gears.md)** (C, C++, GPL-2.0, beta, inactive since 2015) - **[Q-Gears](../q-gears.md)** (C, C++, GPL-2.0, beta, inactive since 2015)
- **[Qt](../qt.md)** (C++, LGPL-3.0, mature) - **[Qt](../qt.md)** (C++, LGPL-3.0, mature)
- **[Quad-engine](../quad-engine.md)** (Pascal, MIT, beta) - **[Quad-engine](../quad-engine.md)** (Pascal, MIT, beta)
@ -778,6 +786,7 @@
- **[Remixed Dungeon](../remixed_dungeon.md)** (Java, GPL-3.0, mature) - **[Remixed Dungeon](../remixed_dungeon.md)** (Java, GPL-3.0, mature)
- **[ReQbert](../reqbert.md)** (JavaScript, GPL-3.0, beta) - **[ReQbert](../reqbert.md)** (JavaScript, GPL-3.0, beta)
- **[Rescue! Max](../rescue_max.md)** (Java, GPL-3.0, beta, inactive since 2013) - **[Rescue! Max](../rescue_max.md)** (Java, GPL-3.0, beta, inactive since 2013)
- **[ReShade](../reshade.md)** (C++, 3-clause BSD, mature)
- **[ResidualVM](../residualvm.md)** (C++, GPL-2.0, beta) - **[ResidualVM](../residualvm.md)** (C++, GPL-2.0, beta)
- **[Return of Dr. Destructo](../return_of_dr_destructo.md)** (C++, MIT, mature, inactive since 2015) - **[Return of Dr. Destructo](../return_of_dr_destructo.md)** (C++, MIT, mature, inactive since 2015)
- **[Return to the Roots](../return_to_the_roots.md)** (C++, GPL-3.0, mature) - **[Return to the Roots](../return_to_the_roots.md)** (C++, GPL-3.0, mature)

View File

@ -17,6 +17,7 @@
- **[Esenthel Engine](../esenthel_engine.md)** (C, C++, Custom, beta) - **[Esenthel Engine](../esenthel_engine.md)** (C, C++, Custom, beta)
- **[EternalWinterWars](../eternalwinterwars.md)** (Java, MIT, beta, inactive since 2014) - **[EternalWinterWars](../eternalwinterwars.md)** (Java, MIT, beta, inactive since 2014)
- **[Flappy Cow](../flappy_cow.md)** (Java, MIT, mature) - **[Flappy Cow](../flappy_cow.md)** (Java, MIT, mature)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[FreeBlocks](../freeblocks.md)** (C, Java, GPL-3.0, beta, inactive since 2015) - **[FreeBlocks](../freeblocks.md)** (C, Java, GPL-3.0, beta, inactive since 2015)
- **[GL4ES](../gl4es.md)** (C, MIT, mature) - **[GL4ES](../gl4es.md)** (C, MIT, mature)
- **[Golly](../golly.md)** (C++, Java, GPL-2.0, mature) - **[Golly](../golly.md)** (C++, Java, GPL-2.0, mature)
@ -32,6 +33,7 @@
- **[LÖVE](../love.md)** (C++, zlib, mature) - **[LÖVE](../love.md)** (C++, zlib, mature)
- **[Memory Game](../memory_game.md)** (Java, Apache-2.0, mature) - **[Memory Game](../memory_game.md)** (Java, Apache-2.0, mature)
- **[Mercenary Commander](../mercenary_commander.md)** (Java, 3-clause BSD, beta, inactive since 2010) - **[Mercenary Commander](../mercenary_commander.md)** (Java, 3-clause BSD, beta, inactive since 2010)
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
- **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature) - **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature)
- **[Morpheus Web Remake](../morpheus_web_remake.md)** (Javascript, MIT, beta) - **[Morpheus Web Remake](../morpheus_web_remake.md)** (Javascript, MIT, beta)
- **[NOVA PINBALL](../nova_pinball.md)** (Lua, GPL-3.0, beta, inactive since 2017) - **[NOVA PINBALL](../nova_pinball.md)** (Lua, GPL-3.0, beta, inactive since 2017)

View File

@ -6,6 +6,7 @@
- **[Airstrike](../airstrike.md)** (C, GPL-2.0, beta, inactive since 2014) - **[Airstrike](../airstrike.md)** (C, GPL-2.0, beta, inactive since 2014)
- **[Aisleriot](../aisleriot.md)** (C, Scheme, GPL-3.0, mature) - **[Aisleriot](../aisleriot.md)** (C, Scheme, GPL-3.0, mature)
- **[antiyoy](../antiyoy.md)** (Java, GPL-3.0, beta) - **[antiyoy](../antiyoy.md)** (Java, GPL-3.0, beta)
- **[Anura](../anura.md)** (C, C++, zlib, mature)
- **[Apricots](../apricots.md)** (C++, GPL-2.0, beta, inactive since 2003) - **[Apricots](../apricots.md)** (C++, GPL-2.0, beta, inactive since 2003)
- **[Batalla Naval](../batalla_naval.md)** (C, GPL-2.0, mature, inactive since 2002) - **[Batalla Naval](../batalla_naval.md)** (C, GPL-2.0, mature, inactive since 2002)
- **[Battery](../battery.md)** (Java, EPL-2.0, Custom, mature, inactive since 2009) - **[Battery](../battery.md)** (Java, EPL-2.0, Custom, mature, inactive since 2009)

View File

@ -17,6 +17,7 @@
- **[F.LF](../flf.md)** (JavaScript, ?, mature) - **[F.LF](../flf.md)** (JavaScript, ?, mature)
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature) - **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
- **[Flex Engine](../flex_engine.md)** (C++, MIT, beta) - **[Flex Engine](../flex_engine.md)** (C++, MIT, beta)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[Flixel](../flixel.md)** (ActionScript, MIT, mature) - **[Flixel](../flixel.md)** (ActionScript, MIT, mature)
- **[GemRB](../gemrb.md)** (C++, Python, GPL-2.0, mature) - **[GemRB](../gemrb.md)** (C++, Python, GPL-2.0, mature)
- **[Godot](../godot.md)** (C, C++, MIT, mature) - **[Godot](../godot.md)** (C, C++, MIT, mature)
@ -46,6 +47,7 @@
- **[OpenRPG](../openrpg.md)** (Python, GPL-2.0, mature, inactive since 2013) - **[OpenRPG](../openrpg.md)** (Python, GPL-2.0, mature, inactive since 2013)
- **[Orx](../orx.md)** (C, zlib, mature) - **[Orx](../orx.md)** (C, zlib, mature)
- **[Panda 3D](../panda_3d.md)** (C++, C, 3-clause BSD, mature) - **[Panda 3D](../panda_3d.md)** (C++, C, 3-clause BSD, mature)
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
- **[Polycode](../polycode.md)** (C, C++, MIT, beta) - **[Polycode](../polycode.md)** (C, C++, MIT, beta)
- **[pygame](../pygame.md)** (C, Python, LGPL-2.1, mature) - **[pygame](../pygame.md)** (C, Python, LGPL-2.1, mature)
- **[pyORPG](../pyorpg.md)** (Python, MIT, beta, inactive since 2015) - **[pyORPG](../pyorpg.md)** (Python, MIT, beta, inactive since 2015)

View File

@ -3,6 +3,7 @@
- **[adventure engine](../adventure_engine.md)** (Lua, MIT, mature, inactive since 2013) - **[adventure engine](../adventure_engine.md)** (Lua, MIT, mature, inactive since 2013)
- **[Alimer](../alimer.md)** (C++, MIT, beta) - **[Alimer](../alimer.md)** (C++, MIT, beta)
- **[Anura](../anura.md)** (C, C++, zlib, mature)
- **[Bacon2D](../bacon2d.md)** (C++, MIT, beta, inactive since 2018) - **[Bacon2D](../bacon2d.md)** (C++, MIT, beta, inactive since 2018)
- **[Bladecoder Adventure Engine](../bladecoder_adventure_engine.md)** (Java, Apache-2.0, mature) - **[Bladecoder Adventure Engine](../bladecoder_adventure_engine.md)** (Java, Apache-2.0, mature)
- **[Blitwizard](../blitwizard.md)** (C, C++, Lua, zlib, beta, inactive since 2015) - **[Blitwizard](../blitwizard.md)** (C, C++, Lua, zlib, beta, inactive since 2015)

View File

@ -3,6 +3,7 @@
- **[DOOM-iOS](../doom-ios.md)** (C++, GPL-2.0, mature, inactive since 2012) - **[DOOM-iOS](../doom-ios.md)** (C++, GPL-2.0, mature, inactive since 2012)
- **[Esenthel Engine](../esenthel_engine.md)** (C, C++, Custom, beta) - **[Esenthel Engine](../esenthel_engine.md)** (C, C++, Custom, beta)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[Gorillas](../gorillas.md)** (Objective-C, JavaScript, Java Research License, mature, inactive since 2014) - **[Gorillas](../gorillas.md)** (Objective-C, JavaScript, Java Research License, mature, inactive since 2014)
- **[Hedgewars](../hedgewars.md)** (Lua, C, C++, Pascal, Haskell, GPL-2.0, mature) - **[Hedgewars](../hedgewars.md)** (Lua, C, C++, Pascal, Haskell, GPL-2.0, mature)
- **[LÖVE](../love.md)** (C++, zlib, mature) - **[LÖVE](../love.md)** (C++, zlib, mature)

View File

@ -21,7 +21,10 @@
- **[OpenSSL](../openssl.md)** (C, Custom, mature) - **[OpenSSL](../openssl.md)** (C, Custom, mature)
- **[Penumbra](../penumbra.md)** (C#, MIT, mature) - **[Penumbra](../penumbra.md)** (C#, MIT, mature)
- **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature) - **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature)
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
- **[Pthreads-win32](../pthreads-win32.md)** (C, LGPL-2.1, mature) - **[Pthreads-win32](../pthreads-win32.md)** (C, LGPL-2.1, mature)
- **[pyscroll](../pyscroll.md)** (Python, LGPL-3.0, mature, inactive since 2018)
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
- **[Ragel](../ragel.md)** (C++, MIT, mature) - **[Ragel](../ragel.md)** (C++, MIT, mature)
- **[Simple and Fast Multimedia Library](../simple_and_fast_multimedia_library.md)** (C++, zlib, mature) - **[Simple and Fast Multimedia Library](../simple_and_fast_multimedia_library.md)** (C++, zlib, mature)
- **[Simple DirectMedia Layer](../simple_directmedia_layer.md)** (C, zlib, mature) - **[Simple DirectMedia Layer](../simple_directmedia_layer.md)** (C, zlib, mature)

View File

@ -54,6 +54,7 @@
- **[Cosmosmash](../cosmosmash.md)** (C++, GPL-2.0, mature, inactive since 2013) - **[Cosmosmash](../cosmosmash.md)** (C++, GPL-2.0, mature, inactive since 2013)
- **[Crack Attack!](../crack_attack.md)** (C++, GPL-2.0, mature, inactive since 2005) - **[Crack Attack!](../crack_attack.md)** (C++, GPL-2.0, mature, inactive since 2005)
- **[Craft](../craft.md)** (C, Python, MIT, mature, inactive since 2017) - **[Craft](../craft.md)** (C, Python, MIT, mature, inactive since 2017)
- **[CrossUO](../crossuo.md)** (C, C++, GPL-3.0, mature)
- **[Crown](../crown.md)** (C, C++, Vala, MIT, beta) - **[Crown](../crown.md)** (C, C++, Vala, MIT, beta)
- **[Curse of War](../curse_of_war.md)** (C, C++, GPL-3.0, mature, inactive since 2014) - **[Curse of War](../curse_of_war.md)** (C, C++, GPL-3.0, mature, inactive since 2014)
- **[Cytadela](../cytadela.md)** (C++, GPL-3.0, beta, inactive since 2013) - **[Cytadela](../cytadela.md)** (C++, GPL-3.0, beta, inactive since 2013)
@ -87,6 +88,7 @@
- **[Falltergeist](../falltergeist.md)** (C++, GPL-3.0, beta) - **[Falltergeist](../falltergeist.md)** (C++, GPL-3.0, beta)
- **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature) - **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature)
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature) - **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[Free Mars](../free_mars.md)** (Java, GPL-3.0, mature) - **[Free Mars](../free_mars.md)** (Java, GPL-3.0, mature)
- **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta) - **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta)
- **[FreeBlocks](../freeblocks.md)** (C, Java, GPL-3.0, beta, inactive since 2015) - **[FreeBlocks](../freeblocks.md)** (C, Java, GPL-3.0, beta, inactive since 2015)
@ -134,6 +136,7 @@
- **[Mari0](../mari0.md)** (Lua, MIT, mature, inactive since 2012) - **[Mari0](../mari0.md)** (Lua, MIT, mature, inactive since 2012)
- **[Maxit](../maxit.md)** (C++, ?, mature, inactive since 2014) - **[Maxit](../maxit.md)** (C++, ?, mature, inactive since 2014)
- **[Me and My Shadow](../me_and_my_shadow.md)** (C++, GPL-3.0, beta) - **[Me and My Shadow](../me_and_my_shadow.md)** (C++, GPL-3.0, beta)
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
- **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature) - **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature)
- **[mini2Dx](../mini2dx.md)** (Java, C#, Apache-2.0, mature) - **[mini2Dx](../mini2dx.md)** (Java, C#, Apache-2.0, mature)
- **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017) - **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017)
@ -178,13 +181,17 @@
- **[Pingus](../pingus.md)** (C++, GPL-3.0, mature) - **[Pingus](../pingus.md)** (C++, GPL-3.0, mature)
- **[Pink Pony](../pink_pony.md)** (C++, GPL-3.0, mature, inactive since 2017) - **[Pink Pony](../pink_pony.md)** (C++, GPL-3.0, mature, inactive since 2017)
- **[PixelLight](../pixellight.md)** (C, C++, MIT, mature, inactive since 2012) - **[PixelLight](../pixellight.md)** (C, C++, MIT, mature, inactive since 2012)
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
- **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017) - **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017)
- **[Powerslide remake](../powerslide_remake.md)** (C++, MIT, beta) - **[Powerslide remake](../powerslide_remake.md)** (C++, MIT, beta)
- **[Privateer - Gemini Gold](../privateer-gemini_gold.md)** (C++, GPL-2.0, mature, inactive since 2012) - **[Privateer - Gemini Gold](../privateer-gemini_gold.md)** (C++, GPL-2.0, mature, inactive since 2012)
- **[Psyco](../psyco.md)** (C, MIT, mature, inactive since 2008)
- **[Pygame---Alien-Invasion](../pygame-alien-invasion.md)** (Python, GPL-3.0, beta, inactive since 2018) - **[Pygame---Alien-Invasion](../pygame-alien-invasion.md)** (Python, GPL-3.0, beta, inactive since 2018)
- **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011) - **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011)
- **[pyscroll](../pyscroll.md)** (Python, LGPL-3.0, mature, inactive since 2018)
- **[pyskool](../pyskool.md)** (Python, GPL-3.0, mature) - **[pyskool](../pyskool.md)** (Python, GPL-3.0, mature)
- **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004) - **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004)
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
- **[QuakeSpasm](../quakespasm.md)** (C, GPL-2.0, mature) - **[QuakeSpasm](../quakespasm.md)** (C, GPL-2.0, mature)
- **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature) - **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature)
- **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature) - **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature)

View File

@ -25,6 +25,7 @@
- **[Circus Linux!](../circus_linux.md)** (C, GPL-2.0, mature, inactive since 2000) - **[Circus Linux!](../circus_linux.md)** (C, GPL-2.0, mature, inactive since 2000)
- **[Colditz Escape](../colditz_escape.md)** (C, GPL-3.0, mature) - **[Colditz Escape](../colditz_escape.md)** (C, GPL-3.0, mature)
- **[Craft](../craft.md)** (C, Python, MIT, mature, inactive since 2017) - **[Craft](../craft.md)** (C, Python, MIT, mature, inactive since 2017)
- **[CrossUO](../crossuo.md)** (C, C++, GPL-3.0, mature)
- **[Cytadela](../cytadela.md)** (C++, GPL-3.0, beta, inactive since 2013) - **[Cytadela](../cytadela.md)** (C++, GPL-3.0, beta, inactive since 2013)
- **[D2X-XL](../d2x-xl.md)** (C++, Custom, GPL-2.0, mature, inactive since 2015) - **[D2X-XL](../d2x-xl.md)** (C++, Custom, GPL-2.0, mature, inactive since 2015)
- **[Daggerfall Unity](../daggerfall_unity.md)** (C#, MIT, mature) - **[Daggerfall Unity](../daggerfall_unity.md)** (C#, MIT, mature)
@ -55,6 +56,7 @@
- **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature) - **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature)
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature) - **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
- **[FlightGear](../flightgear.md)** (C++, GPL-2.0, mature) - **[FlightGear](../flightgear.md)** (C++, GPL-2.0, mature)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[Free Mars](../free_mars.md)** (Java, GPL-3.0, mature) - **[Free Mars](../free_mars.md)** (Java, GPL-3.0, mature)
- **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta) - **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta)
- **[Freedoom](../freedoom.md)** (Not applicable, Not applicable, beta) - **[Freedoom](../freedoom.md)** (Not applicable, Not applicable, beta)
@ -112,11 +114,14 @@
- **[Pentagram](../pentagram.md)** (C++, GPL-2.0, beta, inactive since 2018) - **[Pentagram](../pentagram.md)** (C++, GPL-2.0, beta, inactive since 2018)
- **[Performous](../performous.md)** (C, C++, GPL-2.0, mature) - **[Performous](../performous.md)** (C, C++, GPL-2.0, mature)
- **[Pingus](../pingus.md)** (C++, GPL-3.0, mature) - **[Pingus](../pingus.md)** (C++, GPL-3.0, mature)
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
- **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017) - **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017)
- **[Privateer - Gemini Gold](../privateer-gemini_gold.md)** (C++, GPL-2.0, mature, inactive since 2012) - **[Privateer - Gemini Gold](../privateer-gemini_gold.md)** (C++, GPL-2.0, mature, inactive since 2012)
- **[Pygame---Alien-Invasion](../pygame-alien-invasion.md)** (Python, GPL-3.0, beta, inactive since 2018) - **[Pygame---Alien-Invasion](../pygame-alien-invasion.md)** (Python, GPL-3.0, beta, inactive since 2018)
- **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011) - **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011)
- **[pyscroll](../pyscroll.md)** (Python, LGPL-3.0, mature, inactive since 2018)
- **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004) - **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004)
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
- **[QuakeSpasm](../quakespasm.md)** (C, GPL-2.0, mature) - **[QuakeSpasm](../quakespasm.md)** (C, GPL-2.0, mature)
- **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature) - **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature)
- **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature) - **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature)

View File

@ -68,7 +68,7 @@
- **[Danger from the Deep](../danger_from_the_deep.md)** (C++, GPL-2.0, beta, inactive since 2011) - **[Danger from the Deep](../danger_from_the_deep.md)** (C++, GPL-2.0, beta, inactive since 2011)
- **[DarkPlaces](../darkplaces.md)** (C, GPL-2.0, mature, inactive since 2014) - **[DarkPlaces](../darkplaces.md)** (C, GPL-2.0, mature, inactive since 2014)
- **[Data Storm](../data_storm.md)** (C, Apache-2.0, mature, inactive since 2017) - **[Data Storm](../data_storm.md)** (C, Apache-2.0, mature, inactive since 2017)
- **[Deathchase 3D](../deathchase_3d.md)** (C, GPL-2.0, mature, inactive since 2002) - **[Deathchase 3D](../deathchase_3d.md)** (C, Perl, GPL-2.0, mature, inactive since 2002)
- **[Defendguin](../defendguin.md)** (C, GPL-2.0, mature, inactive since 2009) - **[Defendguin](../defendguin.md)** (C, GPL-2.0, mature, inactive since 2009)
- **[DelverEngine](../delverengine.md)** (Java, Custom, beta) - **[DelverEngine](../delverengine.md)** (Java, Custom, beta)
- **[DesktopAdventures](../desktopadventures.md)** (C, LGPL-2.1, beta) - **[DesktopAdventures](../desktopadventures.md)** (C, LGPL-2.1, beta)

View File

@ -25,6 +25,7 @@
- **[Classic Blades of Exile](../classic_blades_of_exile.md)** (C++, GPL-2.0, mature) - **[Classic Blades of Exile](../classic_blades_of_exile.md)** (C++, GPL-2.0, mature)
- **[coab](../coab.md)** (C#, ???, mature) - **[coab](../coab.md)** (C#, ???, mature)
- **[Crossfire](../crossfire.md)** (C, Java, GPL-2.0, mature) - **[Crossfire](../crossfire.md)** (C, Java, GPL-2.0, mature)
- **[CrossUO](../crossuo.md)** (C, C++, GPL-3.0, mature)
- **[Daggerfall Unity](../daggerfall_unity.md)** (C#, MIT, mature) - **[Daggerfall Unity](../daggerfall_unity.md)** (C#, MIT, mature)
- **[Daimonin](../daimonin.md)** (C, GPL-2.0, mature) - **[Daimonin](../daimonin.md)** (C, GPL-2.0, mature)
- **[DarkCity](../darkcity.md)** (PHP, GPL-3.0, mature, inactive since 2012) - **[DarkCity](../darkcity.md)** (PHP, GPL-3.0, mature, inactive since 2012)

View File

@ -17,7 +17,10 @@
- **[PCGen](../pcgen.md)** (Java, LGPL-2.1, mature) - **[PCGen](../pcgen.md)** (Java, LGPL-2.1, mature)
- **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature) - **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature)
- **[Procedural Map Generator](../procedural_map_generator.md)** (C++, MIT, mature, inactive since 2018) - **[Procedural Map Generator](../procedural_map_generator.md)** (C++, MIT, mature, inactive since 2018)
- **[Psyco](../psyco.md)** (C, MIT, mature, inactive since 2008)
- **[Pymapper](../pymapper.md)** (Python, GPL-3.0, mature) - **[Pymapper](../pymapper.md)** (Python, GPL-3.0, mature)
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
- **[ReShade](../reshade.md)** (C++, 3-clause BSD, mature)
- **[rFXGen](../rfxgen.md)** (C, zlib, mature) - **[rFXGen](../rfxgen.md)** (C, zlib, mature)
- **[Rolemaster Office](../rolemaster_office.md)** (Java, Apache-2.0, mature) - **[Rolemaster Office](../rolemaster_office.md)** (Java, Apache-2.0, mature)
- **[Rolisteam](../rolisteam.md)** (C++, JavaScript, GPL-2.0, mature) - **[Rolisteam](../rolisteam.md)** (C++, JavaScript, GPL-2.0, mature)

View File

@ -19,6 +19,7 @@
- **[Executive Man](../executive_man.md)** (JavaScript, Custom, mature, inactive since 2017) - **[Executive Man](../executive_man.md)** (JavaScript, Custom, mature, inactive since 2017)
- **[F.LF](../flf.md)** (JavaScript, ?, mature) - **[F.LF](../flf.md)** (JavaScript, ?, mature)
- **[Fantasy Map Generator](../fantasy_map_generator.md)** (JavaScript, MIT, mature) - **[Fantasy Map Generator](../fantasy_map_generator.md)** (JavaScript, MIT, mature)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[gist-txt](../gist-txt.md)** (JavaScript, MIT, mature, inactive since 2018) - **[gist-txt](../gist-txt.md)** (JavaScript, MIT, mature, inactive since 2018)
- **[Grimsonland](../grimsonland.md)** (JavaScript, ?, mature, inactive since 2017) - **[Grimsonland](../grimsonland.md)** (JavaScript, ?, mature, inactive since 2017)
- **[HexGL](../hexgl.md)** (JavaScript, CoffeeScript, MIT, mature, inactive since 2016) - **[HexGL](../hexgl.md)** (JavaScript, CoffeeScript, MIT, mature, inactive since 2016)

View File

@ -10,6 +10,7 @@
- **[Alex the Allegator 4](../alex_the_allegator_4.md)** (C, GPL-2.0, mature, inactive since 2003) - **[Alex the Allegator 4](../alex_the_allegator_4.md)** (C, GPL-2.0, mature, inactive since 2003)
- **[alive](../alive.md)** (C++, MIT, beta, inactive since 2017) - **[alive](../alive.md)** (C++, MIT, beta, inactive since 2017)
- **[Annex: Conquer the World](../annex_conquer_the_world.md)** (MegaGlest Script, GPL-3.0, mature, inactive since 2014) - **[Annex: Conquer the World](../annex_conquer_the_world.md)** (MegaGlest Script, GPL-3.0, mature, inactive since 2014)
- **[Anura](../anura.md)** (C, C++, zlib, mature)
- **[Arcane-Engine](../arcane-engine.md)** (C++, MIT, beta) - **[Arcane-Engine](../arcane-engine.md)** (C++, MIT, beta)
- **[AssaultCube](../assaultcube.md)** (C, C++, Custom, mature, inactive since 2018) - **[AssaultCube](../assaultcube.md)** (C, C++, Custom, mature, inactive since 2018)
- **[Atomic Tanks](../atomic_tanks.md)** (C++, GPL-2.0, mature, inactive since 2016) - **[Atomic Tanks](../atomic_tanks.md)** (C++, GPL-2.0, mature, inactive since 2016)
@ -45,6 +46,7 @@
- **[Colditz Escape](../colditz_escape.md)** (C, GPL-3.0, mature) - **[Colditz Escape](../colditz_escape.md)** (C, GPL-3.0, mature)
- **[Crack Attack!](../crack_attack.md)** (C++, GPL-2.0, mature, inactive since 2005) - **[Crack Attack!](../crack_attack.md)** (C++, GPL-2.0, mature, inactive since 2005)
- **[Craft](../craft.md)** (C, Python, MIT, mature, inactive since 2017) - **[Craft](../craft.md)** (C, Python, MIT, mature, inactive since 2017)
- **[CrossUO](../crossuo.md)** (C, C++, GPL-3.0, mature)
- **[Curse of War](../curse_of_war.md)** (C, C++, GPL-3.0, mature, inactive since 2014) - **[Curse of War](../curse_of_war.md)** (C, C++, GPL-3.0, mature, inactive since 2014)
- **[Cytadela](../cytadela.md)** (C++, GPL-3.0, beta, inactive since 2013) - **[Cytadela](../cytadela.md)** (C++, GPL-3.0, beta, inactive since 2013)
- **[D-Fend Reloaded](../d-fend_reloaded.md)** (Pascal, GPL-3.0, mature, inactive since 2015) - **[D-Fend Reloaded](../d-fend_reloaded.md)** (Pascal, GPL-3.0, mature, inactive since 2015)
@ -86,6 +88,7 @@
- **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature) - **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature)
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature) - **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
- **[FlightGear](../flightgear.md)** (C++, GPL-2.0, mature) - **[FlightGear](../flightgear.md)** (C++, GPL-2.0, mature)
- **[flixel-gdx](../flixel-gdx.md)** (Java, 3-clause BSD, beta, inactive since 2017)
- **[Free Mars](../free_mars.md)** (Java, GPL-3.0, mature) - **[Free Mars](../free_mars.md)** (Java, GPL-3.0, mature)
- **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta) - **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta)
- **[Freedoom](../freedoom.md)** (Not applicable, Not applicable, beta) - **[Freedoom](../freedoom.md)** (Not applicable, Not applicable, beta)
@ -140,6 +143,7 @@
- **[Me and My Shadow](../me_and_my_shadow.md)** (C++, GPL-3.0, beta) - **[Me and My Shadow](../me_and_my_shadow.md)** (C++, GPL-3.0, beta)
- **[Mega Mario](../mega_mario.md)** (C++, LGPL-2.1, mature, inactive since 2012) - **[Mega Mario](../mega_mario.md)** (C++, LGPL-2.1, mature, inactive since 2012)
- **[MicroWar 2.0](../microwar_20.md)** (Python, 3-clause BSD, mature, inactive since 2009) - **[MicroWar 2.0](../microwar_20.md)** (Python, 3-clause BSD, mature, inactive since 2009)
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
- **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature) - **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature)
- **[mini2Dx](../mini2dx.md)** (Java, C#, Apache-2.0, mature) - **[mini2Dx](../mini2dx.md)** (Java, C#, Apache-2.0, mature)
- **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017) - **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017)
@ -195,17 +199,22 @@
- **[Pingus](../pingus.md)** (C++, GPL-3.0, mature) - **[Pingus](../pingus.md)** (C++, GPL-3.0, mature)
- **[Pink Pony](../pink_pony.md)** (C++, GPL-3.0, mature, inactive since 2017) - **[Pink Pony](../pink_pony.md)** (C++, GPL-3.0, mature, inactive since 2017)
- **[PixelLight](../pixellight.md)** (C, C++, MIT, mature, inactive since 2012) - **[PixelLight](../pixellight.md)** (C, C++, MIT, mature, inactive since 2012)
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
- **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017) - **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017)
- **[Powerslide remake](../powerslide_remake.md)** (C++, MIT, beta) - **[Powerslide remake](../powerslide_remake.md)** (C++, MIT, beta)
- **[Privateer - Gemini Gold](../privateer-gemini_gold.md)** (C++, GPL-2.0, mature, inactive since 2012) - **[Privateer - Gemini Gold](../privateer-gemini_gold.md)** (C++, GPL-2.0, mature, inactive since 2012)
- **[Procedural Map Generator](../procedural_map_generator.md)** (C++, MIT, mature, inactive since 2018) - **[Procedural Map Generator](../procedural_map_generator.md)** (C++, MIT, mature, inactive since 2018)
- **[Psyco](../psyco.md)** (C, MIT, mature, inactive since 2008)
- **[Pygame---Alien-Invasion](../pygame-alien-invasion.md)** (Python, GPL-3.0, beta, inactive since 2018) - **[Pygame---Alien-Invasion](../pygame-alien-invasion.md)** (Python, GPL-3.0, beta, inactive since 2018)
- **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011) - **[PyKaraoke](../pykaraoke.md)** (Python, LGPL-2.1, beta, inactive since 2011)
- **[pyscroll](../pyscroll.md)** (Python, LGPL-3.0, mature, inactive since 2018)
- **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004) - **[PySol](../pysol.md)** (Python, GPL-2.0, mature, inactive since 2004)
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
- **[QuakeSpasm](../quakespasm.md)** (C, GPL-2.0, mature) - **[QuakeSpasm](../quakespasm.md)** (C, GPL-2.0, mature)
- **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature) - **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature)
- **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature) - **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature)
- **[raylib](../raylib.md)** (C, C++, zlib, mature) - **[raylib](../raylib.md)** (C, C++, zlib, mature)
- **[ReShade](../reshade.md)** (C++, 3-clause BSD, mature)
- **[ResidualVM](../residualvm.md)** (C++, GPL-2.0, beta) - **[ResidualVM](../residualvm.md)** (C++, GPL-2.0, beta)
- **[rFXGen](../rfxgen.md)** (C, zlib, mature) - **[rFXGen](../rfxgen.md)** (C, zlib, mature)
- **[Rigs of Rods](../rigs_of_rods.md)** (C, C++, AngelScript, GPL-3.0, mature) - **[Rigs of Rods](../rigs_of_rods.md)** (C, C++, AngelScript, GPL-3.0, mature)

File diff suppressed because one or more lines are too long

View File

@ -99,6 +99,7 @@
"https://github.com/AndO3131/lgeneral.git", "https://github.com/AndO3131/lgeneral.git",
"https://github.com/Andrettin/Wyrmgus.git", "https://github.com/Andrettin/Wyrmgus.git",
"https://github.com/Anthonymcqueen21/Pygame---Alien-Invasion.git", "https://github.com/Anthonymcqueen21/Pygame---Alien-Invasion.git",
"https://github.com/Anuken/Mindustry.git",
"https://github.com/Arantis/Meridian59_112.git", "https://github.com/Arantis/Meridian59_112.git",
"https://github.com/Argentum-Online/Argentum-Online.git", "https://github.com/Argentum-Online/Argentum-Online.git",
"https://github.com/ArmageddonGames/ZeldaClassic.git", "https://github.com/ArmageddonGames/ZeldaClassic.git",
@ -352,6 +353,7 @@
"https://github.com/antionio/game-off-2013.git", "https://github.com/antionio/game-off-2013.git",
"https://github.com/anttisalonen/freekick3.git", "https://github.com/anttisalonen/freekick3.git",
"https://github.com/anttisalonen/kingdoms.git", "https://github.com/anttisalonen/kingdoms.git",
"https://github.com/anura-engine/anura.git",
"https://github.com/aperture-software/colditz-escape.git", "https://github.com/aperture-software/colditz-escape.git",
"https://github.com/apsillers/Taggem.git", "https://github.com/apsillers/Taggem.git",
"https://github.com/apsillers/lords-of-the-fey.git", "https://github.com/apsillers/lords-of-the-fey.git",
@ -366,6 +368,8 @@
"https://github.com/basicallydan/skifree.js.git", "https://github.com/basicallydan/skifree.js.git",
"https://github.com/benjaminfoo/OpenTriad.git", "https://github.com/benjaminfoo/OpenTriad.git",
"https://github.com/bibendovsky/bstone.git", "https://github.com/bibendovsky/bstone.git",
"https://github.com/bitcraft/PyTMX.git",
"https://github.com/bitcraft/pyscroll.git",
"https://github.com/bladecoder/bladecoder-adventure-engine.git", "https://github.com/bladecoder/bladecoder-adventure-engine.git",
"https://github.com/blakeohare/pyweek-sentientstorage.git", "https://github.com/blakeohare/pyweek-sentientstorage.git",
"https://github.com/blockattack/blockattack-game.git", "https://github.com/blockattack/blockattack-game.git",
@ -401,6 +405,8 @@
"https://github.com/cortex-command-community/Cortex-Command-Community-Project-Source.git", "https://github.com/cortex-command-community/Cortex-Command-Community-Project-Source.git",
"https://github.com/craftworkgames/infiniminer.git", "https://github.com/craftworkgames/infiniminer.git",
"https://github.com/crawl/crawl.git", "https://github.com/crawl/crawl.git",
"https://github.com/crosire/reshade.git",
"https://github.com/crossuo/crossuo.git",
"https://github.com/cthielen/Epiar.git", "https://github.com/cthielen/Epiar.git",
"https://github.com/cubei/FlappyCow.git", "https://github.com/cubei/FlappyCow.git",
"https://github.com/cubosphere/cubosphere-code.git", "https://github.com/cubosphere/cubosphere-code.git",
@ -461,6 +467,7 @@
"https://github.com/fasterthanlime/isaac-paper.git", "https://github.com/fasterthanlime/isaac-paper.git",
"https://github.com/fastrgv/AdaVenture.git", "https://github.com/fastrgv/AdaVenture.git",
"https://github.com/fifengine/fifengine.git", "https://github.com/fifengine/fifengine.git",
"https://github.com/flixel-gdx/flixel-gdx.git",
"https://github.com/fofix/fofix.git", "https://github.com/fofix/fofix.git",
"https://github.com/fogleman/Craft.git", "https://github.com/fogleman/Craft.git",
"https://github.com/fph/bastet.git", "https://github.com/fph/bastet.git",
@ -862,6 +869,7 @@
"https://gitlab.com/osgames/dark-oberon.git", "https://gitlab.com/osgames/dark-oberon.git",
"https://gitlab.com/osgames/darkcity.git", "https://gitlab.com/osgames/darkcity.git",
"https://gitlab.com/osgames/darkdestiny.git", "https://gitlab.com/osgames/darkdestiny.git",
"https://gitlab.com/osgames/deathchase3d.git",
"https://gitlab.com/osgames/deity.git", "https://gitlab.com/osgames/deity.git",
"https://gitlab.com/osgames/deliantra.git", "https://gitlab.com/osgames/deliantra.git",
"https://gitlab.com/osgames/devana.git", "https://gitlab.com/osgames/devana.git",
@ -948,6 +956,7 @@
"https://gitlab.com/osgames/slaygame.git", "https://gitlab.com/osgames/slaygame.git",
"https://gitlab.com/osgames/snowstorm.git", "https://gitlab.com/osgames/snowstorm.git",
"https://gitlab.com/osgames/softpixelengine.git", "https://gitlab.com/osgames/softpixelengine.git",
"https://gitlab.com/osgames/solarwolf.git",
"https://gitlab.com/osgames/sopwith3.git", "https://gitlab.com/osgames/sopwith3.git",
"https://gitlab.com/osgames/spaceopera.git", "https://gitlab.com/osgames/spaceopera.git",
"https://gitlab.com/osgames/spicetrade.git", "https://gitlab.com/osgames/spicetrade.git",
@ -1008,6 +1017,7 @@
"https://svn.code.sf.net/p/lgames/code/", "https://svn.code.sf.net/p/lgames/code/",
"https://svn.code.sf.net/p/pio/code/", "https://svn.code.sf.net/p/pio/code/",
"https://svn.code.sf.net/p/planeshift/code/", "https://svn.code.sf.net/p/planeshift/code/",
"https://svn.code.sf.net/p/plib/code/",
"https://svn.code.sf.net/p/privateer/code/", "https://svn.code.sf.net/p/privateer/code/",
"https://svn.code.sf.net/p/quakespasm/code/", "https://svn.code.sf.net/p/quakespasm/code/",
"https://svn.code.sf.net/p/spacezero/code/", "https://svn.code.sf.net/p/spacezero/code/",

View File

@ -36,10 +36,12 @@ http://openapoc.pmprog.co.uk/
http://pathfinder.wikia.com/wiki/Pathfinder_Roleplaying_Game http://pathfinder.wikia.com/wiki/Pathfinder_Roleplaying_Game
http://phaser.io/ http://phaser.io/
http://playir.com/ http://playir.com/
http://plib.sourceforge.net/
http://psyco.sourceforge.net/
http://pyglet.org/ http://pyglet.org/
http://pyopengl.sourceforge.net/ http://pyopengl.sourceforge.net/
https://appimage.github.io/categories/Game
https://github.com/gnFur/Monofoxe
https://github.com/moonwards1/Moonwards-Virtual-Moon
http://pypy.org/
http://rcbasic.com/ http://rcbasic.com/
http://retrospec.sgn.net http://retrospec.sgn.net
http://sam.zoy.org/monsterz/ http://sam.zoy.org/monsterz/
@ -157,13 +159,10 @@ https://freegamer.blogspot.com (maybe there is something interesting)
https://futurepinball.com/ https://futurepinball.com/
https://gamejolt.com/ (search there) https://gamejolt.com/ (search there)
https://gdevelop-app.com/ https://gdevelop-app.com/
https://github.com/anura-engine/anura https://github.com/amerkoleci/Vortice.Windows
https://github.com/ao-libre/ao-cliente https://github.com/ao-libre/ao-cliente
https://github.com/atphalix/nexuiz https://github.com/atphalix/nexuiz
https://github.com/azhirnov/FrameGraph https://github.com/azhirnov/FrameGraph
https://github.com/bitcraft/pyscroll
https://github.com/bitcraft/PyTMX
https://github.com/born2snipe/flixel-gdx
https://github.com/bsmr-games (also contains copies) https://github.com/bsmr-games (also contains copies)
https://github.com/CatacombGames/ https://github.com/CatacombGames/
https://github.com/Chluverman/android-gltron https://github.com/Chluverman/android-gltron
@ -176,8 +175,6 @@ https://github.com/collections/tools-for-open-source (maybe we can apply some)
https://github.com/collections/web-games (only OS) https://github.com/collections/web-games (only OS)
https://github.com/Cortrah/SpaceOperaDesign, https://github.com/Cortrah/SpaceOperaRuby/blob/master/design/turnstyles.md https://github.com/Cortrah/SpaceOperaDesign, https://github.com/Cortrah/SpaceOperaRuby/blob/master/design/turnstyles.md
https://github.com/cping/LGame https://github.com/cping/LGame
https://github.com/crosire/reshade
https://github.com/crossuo/crossuo
https://github.com/DaanVanYperen/artemis-odb-contrib https://github.com/DaanVanYperen/artemis-odb-contrib
https://github.com/DeflatedPickle/FAOSDance https://github.com/DeflatedPickle/FAOSDance
https://github.com/Donerkebap13/DonerComponents https://github.com/Donerkebap13/DonerComponents
@ -190,9 +187,11 @@ https://github.com/fallahn/xygine
https://github.com/fegennari/3DWorld https://github.com/fegennari/3DWorld
https://github.com/flathub (all repositories which are games there) https://github.com/flathub (all repositories which are games there)
https://github.com/FUSEEProjectTeam/Fusee https://github.com/FUSEEProjectTeam/Fusee
https://github.com/fynnfluegge/oreon-engine
https://github.com/gamearians https://github.com/gamearians
https://github.com/GamedevFramework/gf https://github.com/GamedevFramework/gf
https://github.com/grantjenks/free-python-games (check all) https://github.com/grantjenks/free-python-games (check all)
https://github.com/Hotride/OrionUO
https://github.com/hparcells/cards-against-humanity https://github.com/hparcells/cards-against-humanity
https://github.com/i42output/neoGFX https://github.com/i42output/neoGFX
https://github.com/id-Software https://github.com/id-Software
@ -200,6 +199,7 @@ https://github.com/JohanLi/uncharted-waters-2
https://github.com/junkdog/artemis-odb https://github.com/junkdog/artemis-odb
https://github.com/LgLinus/StrategyGame https://github.com/LgLinus/StrategyGame
https://github.com/libretro/libretro-prboom https://github.com/libretro/libretro-prboom
https://github.com/ligurio/awesome-ttygames
https://github.com/MarcoLizza/tofu-engine https://github.com/MarcoLizza/tofu-engine
https://github.com/mewo2/terrain https://github.com/mewo2/terrain
https://github.com/morganbengtsson/mos https://github.com/morganbengtsson/mos
@ -216,6 +216,7 @@ https://github.com/pld-linux
https://github.com/pld-linux/nexuiz/blob/master/nexuiz.spec https://github.com/pld-linux/nexuiz/blob/master/nexuiz.spec
https://github.com/psuong/ig-developer-console https://github.com/psuong/ig-developer-console
https://github.com/qiciengine/qiciengine https://github.com/qiciengine/qiciengine
https://github.com/Renanse/Ardor3D
https://github.com/rizwan3d/MotoGameEngine https://github.com/rizwan3d/MotoGameEngine
https://github.com/rlguy/FantasyMapGenerator https://github.com/rlguy/FantasyMapGenerator
https://github.com/RoxasShadow/Sottaceto https://github.com/RoxasShadow/Sottaceto
@ -234,6 +235,7 @@ https://github.com/Tinob/Ishiiruka (https://github.com/shiiion/Ishiiruka, https:
https://github.com/TomBebb/awe https://github.com/TomBebb/awe
https://github.com/Wargus/stratagus https://github.com/Wargus/stratagus
https://github.com/wesnoth/haldric https://github.com/wesnoth/haldric
https://github.com/Zal0/ZGB
https://gitlab.com/LibreGames https://gitlab.com/LibreGames
https://gitlab.com/nyov/nyovs-nexuiz https://gitlab.com/nyov/nyovs-nexuiz
https://gitlab.com/vgstation/vgstation-old (and vgstation in general) https://gitlab.com/vgstation/vgstation-old (and vgstation in general)
@ -381,6 +383,7 @@ https://www.reddit.com/r/opensourcegames/comments/celw6c/top_3_open_source_pinba
https://www.renpy.org/ (also all projects linked there) https://www.renpy.org/ (also all projects linked there)
https://www.scirra.com/construct2 https://www.scirra.com/construct2
https://www.tapatalk.com/groups/imperilist/ https://www.tapatalk.com/groups/imperilist/
https://www.tuxfamily.org/ (if there are games)
https://www.wurfelengine.net/ https://www.wurfelengine.net/
https://wxpython.org/ https://wxpython.org/
https://zope.readthedocs.io/en/latest/ https://zope.readthedocs.io/en/latest/

View File

@ -5,11 +5,14 @@ Also parse rejected games (https://libregamewiki.org/Libregamewiki:Rejected_game
Unique left column names in the game info boxes: Unique left column names in the game info boxes:
['Code license', 'Code licenses', 'Developer', 'Developers', 'Engine', 'Engines', 'Genre', 'Genres', 'Libraries', 'Library', 'Media license', 'Media licenses', 'P. language', 'P. languages', 'Platforms'] ['Code license', 'Code licenses', 'Developer', 'Developers', 'Engine', 'Engines', 'Genre', 'Genres', 'Libraries', 'Library', 'Media license', 'Media licenses', 'P. language', 'P. languages', 'Platforms']
TODO there are games on LGW which are not part of the Games category but part of XXX-Games sub-categories
""" """
import os import os
import requests import requests
import json import json
import re
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from utils import constants, utils, osg from utils import constants, utils, osg
@ -210,6 +213,39 @@ def lower_case_content(entries, field):
entries[index] = entry entries[index] = entry
return entries return entries
def remove_parenthized_content(entries, fields):
if not isinstance(fields, tuple):
fields = (fields, )
for index, entry in enumerate(entries):
for field in fields:
if field in entry:
content = entry[field]
if not isinstance(content, list):
content = [content]
content = [re.sub(r'\([^)]*\)', '', c) for c in content] # remove parentheses content
content = [x.strip() for x in content]
content = list(set(content))
entry[field] = content
entries[index] = entry
return entries
def ignore_nonnumbers(entries, fields):
if not isinstance(fields, tuple):
fields = (fields, )
for index, entry in enumerate(entries):
for field in fields:
if field in entry:
content = entry[field]
if not isinstance(content, list):
content = [content]
content = [x for x in content if x.isdigit()]
entry[field] = content
entries[index] = entry
return entries
def clean_lgw_content(): def clean_lgw_content():
# paths # paths
@ -257,6 +293,7 @@ def clean_lgw_content():
print('mandatory lgw fields: {}'.format(sorted(list(mandatory_fields)))) print('mandatory lgw fields: {}'.format(sorted(list(mandatory_fields))))
# content replacements # content replacements
entries = remove_parenthized_content(entries, ('assets license', 'code language', 'code license', 'engine', 'genre', 'last active', 'library'))
entries = remove_prefix_suffix(entries, ('code license', 'assets license'), ('"', 'GNU', ), ('"', '[3]', '[2]', '[1]', 'only')) entries = remove_prefix_suffix(entries, ('code license', 'assets license'), ('"', 'GNU', ), ('"', '[3]', '[2]', '[1]', 'only'))
entries = replace_content(entries, ('code license', 'assets license'), 'GPL', ('General Public License', )) entries = replace_content(entries, ('code license', 'assets license'), 'GPL', ('General Public License', ))
entries = replace_content(entries, ('code license', 'assets license'), 'GPLv2', ('GPL v2', 'GPL version 2.0', 'GPL 2.0')) entries = replace_content(entries, ('code license', 'assets license'), 'GPLv2', ('GPL v2', 'GPL version 2.0', 'GPL 2.0'))
@ -267,6 +304,8 @@ def clean_lgw_content():
entries = replace_content(entries, ('code license', 'assets license'), 'zlib', ('zlib/libpng license', )) entries = replace_content(entries, ('code license', 'assets license'), 'zlib', ('zlib/libpng license', ))
entries = replace_content(entries, ('code license', 'assets license'), 'BSD', ('Original BSD License', )) entries = replace_content(entries, ('code license', 'assets license'), 'BSD', ('Original BSD License', ))
entries = replace_content(entries, ('code license', 'assets license'), 'CC-BY-SA-3.0', ('Creative Commons Attribution-ShareAlike 3.0 Unported License', 'CC-BY-SA 3.0', 'CC BY-SA 3.0')) entries = replace_content(entries, ('code license', 'assets license'), 'CC-BY-SA-3.0', ('Creative Commons Attribution-ShareAlike 3.0 Unported License', 'CC-BY-SA 3.0', 'CC BY-SA 3.0'))
entries = replace_content(entries, ('code license', 'assets license'), 'CC-BY-SA', ('CC BY-SA',))
entries = replace_content(entries, ('code license', 'assets license'), 'MIT', ('MIT License',))
entries = replace_content(entries, 'platform', 'macOS', ('Mac', )) entries = replace_content(entries, 'platform', 'macOS', ('Mac', ))
entries = remove_prefix_suffix(entries, 'code language', (), ('[3]', '[2]', '[1]')) entries = remove_prefix_suffix(entries, 'code language', (), ('[3]', '[2]', '[1]'))
entries = ignore_content(entries, 'code language', ('HTML5', 'HTML', 'English', 'XML', 'WML')) entries = ignore_content(entries, 'code language', ('HTML5', 'HTML', 'English', 'XML', 'WML'))
@ -282,6 +321,9 @@ def clean_lgw_content():
entries = replace_content(entries, 'library', 'pygame', ('Pygame', )) entries = replace_content(entries, 'library', 'pygame', ('Pygame', ))
entries = replace_content(entries, 'library', 'Qt', ('QT', )) entries = replace_content(entries, 'library', 'Qt', ('QT', ))
entries = ignore_content(entries, 'library', ('C++', 'Lua', 'Mozilla Firefox')) entries = ignore_content(entries, 'library', ('C++', 'Lua', 'Mozilla Firefox'))
entries = ignore_nonnumbers(entries, 'last active')
entries = ignore_content(entries, 'last active', ('2019', ))
entries = ignore_content(entries, 'platform', ('DOS', ))
# list for every unique field # list for every unique field
# fields = sorted(list(unique_fields)) # fields = sorted(list(unique_fields))

View File

@ -19,34 +19,20 @@ linux-packages - > free text (info)
name -> name name -> name
platform -> platform platform -> platform
TODO also ignore our rejected entries
""" """
import json import json
from utils.osg import * import os
from utils import constants, utils, osg
def get_unique_field_content(field, entries):
"""
"""
unique_content = {}
for entry in entries:
for element in entry.get(field, []):
unique_content[element] = unique_content.get(element, 0) + 1
unique_content = list(unique_content.items())
unique_content.sort(key=lambda x: -x[1])
unique_content = ['{}({})'.format(k, v) for k, v in unique_content]
return unique_content
name_replacements = {'Eat the Whistle': 'Eat The Whistle', 'Scorched 3D': 'Scorched3D', 'Silver Tree': 'SilverTree', 'Blob Wars Episode 1 : Metal Blob Solid': 'Blobwars: Metal Blob Solid', 'Adventure': 'Colossal Cave Adventure', name_replacements = {'Eat the Whistle': 'Eat The Whistle', 'Scorched 3D': 'Scorched3D', 'Silver Tree': 'SilverTree', 'Blob Wars Episode 1 : Metal Blob Solid': 'Blobwars: Metal Blob Solid', 'Adventure': 'Colossal Cave Adventure',
'Fall Of Imiryn': 'Fall of Imiryn', 'Liquid War 6': 'Liquid War', 'Gusanos': 'GUSANOS', 'Corewars': 'Core War', 'FLARE': 'Flare', 'Vitetris': 'vitetris', 'Powder Toy': 'The Powder Toy', 'Asylum': 'SDL Asylum', 'Fall Of Imiryn': 'Fall of Imiryn', 'Liquid War 6': 'Liquid War', 'Gusanos': 'GUSANOS', 'Corewars': 'Core War', 'FLARE': 'Flare', 'Vitetris': 'vitetris', 'Powder Toy': 'The Powder Toy', 'Asylum': 'SDL Asylum',
'Atanks': 'Atomic Tanks'} 'Atanks': 'Atomic Tanks', 'HeXon': 'heXon', 'Unnethack': 'UnNetHack', 'Nova Pinball': 'NOVA PINBALL', 'Jump n Bump': "Jump'n'Bump"}
ignored_names = ['Hetris', '8 Kingdoms', 'Antigravitaattori', 'Arena of Honour', 'Arkhart', 'Ascent of Justice', 'Balazar III', 'Balder3D', 'Barbie Seahorse Adventures', 'Barrage', 'Gnome Batalla Naval', 'User:AVRS/sandbox'] ignored_names = ['Hetris', '8 Kingdoms', 'Antigravitaattori', 'Arena of Honour', 'Arkhart', 'Ascent of Justice', 'Balazar III', 'Balder3D', 'Barbie Seahorse Adventures', 'Barrage', 'Gnome Batalla Naval', 'User:AVRS/sandbox']
def list_compare(a, b, k): def list_compare(a, b, k):
""" """
@ -64,24 +50,20 @@ if __name__ == "__main__":
maximal_newly_created_entries = 40 maximal_newly_created_entries = 40
# paths # paths
root_path = os.path.realpath(os.path.join(os.path.dirname(__file__), os.path.pardir)) import_path = os.path.join(constants.root_path, 'tools', 'lgw-import')
lgw_entries_file = os.path.join(import_path, '_lgw.cleaned.json')
# import lgw import # import lgw import
json_path = os.path.join(root_path, os.pardir, 'lgw_import.json') text = utils.read_text(lgw_entries_file)
text = read_text(json_path)
lgw_entries = json.loads(text) lgw_entries = json.loads(text)
# perform replacements and disregarding # perform name replacements
lgw_entries = [x for x in lgw_entries if x['name'] not in ignored_names] lgw_entries = [x for x in lgw_entries if x['name'] not in ignored_names]
for index, lgw_entry in enumerate(lgw_entries): for index, lgw_entry in enumerate(lgw_entries):
if lgw_entry['name'] in name_replacements: if lgw_entry['name'] in name_replacements:
lgw_entry['name'] = name_replacements[lgw_entry['name']] lgw_entry['name'] = name_replacements[lgw_entry['name']]
if 'code language' in lgw_entry: if 'code language' in lgw_entry:
languages = lgw_entry['code language'] languages = lgw_entry['code language']
languages = ['Python' if x.startswith('Python') else x for x in languages]
languages = ['PHP' if x.startswith('PHP') else x for x in languages]
languages = ['Lua' if x.lower().startswith('lua') else x for x in languages]
languages = ['JavaScript' if x.lower().startswith('javascript') else x for x in languages]
h = [] h = []
for l in languages: for l in languages:
for g in ('/', 'and'): for g in ('/', 'and'):
@ -91,71 +73,13 @@ if __name__ == "__main__":
if type(l) == str: if type(l) == str:
l = [l] l = [l]
h.extend(l) h.extend(l)
languages = ['C++' if x.startswith('C++') else x for x in h] languages = h
languages = ['C' if x.startswith('C ') or x.startswith('C[') else x for x in languages]
languages = [x for x in languages if x not in ignored_languages]
if languages: if languages:
lgw_entry['code language'] = languages lgw_entry['code language'] = languages
else: else:
del lgw_entry['code language'] del lgw_entry['code language']
if 'categories' in lgw_entry:
categories = lgw_entry['categories']
categories = [x for x in categories if not x.startswith('Game')]
categories = [x for x in categories if not x.startswith('Article')]
categories = [x for x in categories if not x.startswith('Page')]
categories = [x for x in categories if x not in ignored_categories]
categories = [x.lower() if len(x) > 2 else x for x in categories]
if categories:
lgw_entry['categories'] = categories
else:
del lgw_entry['categories']
if 'genre' in lgw_entry:
genres = lgw_entry['genre']
genres = [x for x in genres if len(x) > 0]
genres = [x.lower() for x in genres]
genres = [x[:-5] if x.endswith(' game') else x for x in genres]
genres = [x[:-5] if x.endswith(' games') else x for x in genres]
genres = [genre_replacements[x] if x in genre_replacements else x for x in genres]
for h in ('platform',):
genres = [h if x.startswith(h) else x for x in genres]
if genres:
lgw_entry['genre'] = genres
else:
del lgw_entry['genre']
if 'library' in lgw_entry:
libraries = lgw_entry['library']
libraries = [library_replacements[x] if x in library_replacements else x for x in libraries]
lgw_entry['library'] = libraries
if 'code license' in lgw_entry:
licenses = lgw_entry['code license']
licenses = [x.strip() for x in licenses] # strip
licenses = [x[1:] if x.startswith('"') else x for x in licenses] # cut " at the beginning
licenses = [x[:-1] if x.endswith('"') else x for x in licenses] # cut " at the end
licenses = [x[4:] if x.startswith('GNU ') else x for x in licenses]
licenses = [x[:-3] if x.endswith('[1]') or x.endswith('[2]') else x for x in licenses]
licenses = [x[:-8] if x.lower().endswith(' license') else x for x in licenses]
licenses = [x.strip() for x in licenses] # strip
#licenses = ['GPL-2.0' if x.startswith('GPLv2') or x.startswith('GPL v2') or x.startswith('GPL 2') else x for x in licenses]
#licenses = ['GPL-3.0' if x.startswith('GPLv3') or x.startswith('GPL v3') or x.startswith('GPL 3') or x.startswith('GPL v.3') else x for x in licenses]
licenses = ['Public domain' if x.lower().startswith('public domain') else x for x in licenses]
lgw_entry['code license'] = licenses
if 'assets license' in lgw_entry:
licenses = lgw_entry['assets license']
licenses = [x.strip() for x in licenses] # strip
licenses = [x[1:] if x.startswith('"') else x for x in licenses] # cut " at the beginning
licenses = [x[:-1] if x.endswith('"') else x for x in licenses] # cut " at the end
licenses = [x[4:] if x.startswith('GNU ') else x for x in licenses]
licenses = [x[:-3] if x.endswith('[1]') or x.endswith('[2]') else x for x in licenses]
licenses = [x[:-8] if x.lower().endswith(' license') else x for x in licenses]
licenses = [x.strip() for x in licenses] # strip
licenses = ['GPL-2.0' if x.startswith('GPLv2') or x.startswith('GPL v2') or x.startswith('GPL 2') else x for x in licenses]
licenses = ['GPL-3.0' if x.startswith('GPLv3') or x.startswith('GPL v3') or x.startswith('GPL 3') or x.startswith('GPL v.3') else x for x in licenses]
licenses = ['Public domain' if x.lower().startswith('public domain') else x for x in licenses]
lgw_entry['assets license'] = licenses
lgw_entries[index] = lgw_entry lgw_entries[index] = lgw_entry
# check for unique field names # check for unique field names
unique_fields = set() unique_fields = set()
for lgw_entry in lgw_entries: for lgw_entry in lgw_entries:
@ -163,23 +87,14 @@ if __name__ == "__main__":
print('unique lgw fields: {}'.format(sorted(list(unique_fields)))) print('unique lgw fields: {}'.format(sorted(list(unique_fields))))
# which fields are mandatory # which fields are mandatory
mandatory_fields = unique_fields.copy()
for lgw_entry in lgw_entries: for lgw_entry in lgw_entries:
remove_fields = [field for field in unique_fields if field not in lgw_entry] remove_fields = [field for field in mandatory_fields if field not in lgw_entry]
unique_fields -= set(remove_fields) mandatory_fields -= set(remove_fields)
print('mandatory lgw fields: {}'.format(sorted(list(unique_fields)))) print('mandatory lgw fields: {}'.format(sorted(list(mandatory_fields ))))
# unique contents
print('{}: {}'.format('platform', get_unique_field_content('platform', lgw_entries)))
print('{}: {}'.format('code language', get_unique_field_content('code language', lgw_entries)))
print('{}: {}'.format('categories', get_unique_field_content('categories', lgw_entries)))
print('{}: {}'.format('genre', get_unique_field_content('genre', lgw_entries)))
print('{}: {}'.format('library', get_unique_field_content('library', lgw_entries)))
print('{}: {}'.format('code license', get_unique_field_content('code license', lgw_entries)))
print('{}: {}'.format('assets license', get_unique_field_content('assets license', lgw_entries)))
print('{}: {}'.format('engine', get_unique_field_content('engine', lgw_entries)))
# read our database # read our database
our_entries = assemble_infos(c.entries_path) our_entries = osg.assemble_infos()
print('{} entries with us'.format(len(our_entries))) print('{} entries with us'.format(len(our_entries)))
# just the names # just the names
@ -194,7 +109,7 @@ if __name__ == "__main__":
#print('similar names') #print('similar names')
#for lgw_name in lgw_names: #for lgw_name in lgw_names:
# for our_name in our_names: # for our_name in our_names:
# if game_name_similarity(lgw_name, our_name) > similarity_threshold: # if osg.game_name_similarity(lgw_name, our_name) > similarity_threshold:
# print('{} - {}'.format(lgw_name, our_name)) # print('{} - {}'.format(lgw_name, our_name))
newly_created_entries = 0 newly_created_entries = 0
@ -234,11 +149,11 @@ if __name__ == "__main__":
# determine file name # determine file name
print('create new entry for {}'.format(lgw_name)) print('create new entry for {}'.format(lgw_name))
file_name = canonical_game_name(lgw_name) + '.md' file_name = osg.canonical_game_name(lgw_name) + '.md'
target_file = os.path.join(entries_path, file_name) target_file = os.path.join(constants.entries_path, file_name)
if os.path.isfile(target_file): if os.path.isfile(target_file):
print('warning: file {} already existing, save under slightly different name'.format(file_name)) print('warning: file {} already existing, save under slightly different name'.format(file_name))
target_file = os.path.join(entries_path, file_name[:-3] + '-duplicate.md') target_file = os.path.join(constants.entries_path, file_name[:-3] + '-duplicate.md')
if os.path.isfile(target_file): if os.path.isfile(target_file):
continue # just for safety reasons continue # just for safety reasons
@ -300,5 +215,5 @@ if __name__ == "__main__":
entry += '\n## Building\n' entry += '\n## Building\n'
# finally write to file # finally write to file
write_text(target_file, entry) # utils.write_text(target_file, entry)
newly_created_entries += 1 newly_created_entries += 1

View File

@ -32,10 +32,13 @@ info -> after fields
updated not used updated not used
images not used images not used
video: not used video: not used
TODO also ignore our rejected entries
""" """
import ruamel_yaml as yaml import ruamel_yaml as yaml
from utils.osg import * import os
from utils import constants, utils, osg
# should change on osgameclones # should change on osgameclones
osgc_name_aliases = {'4DTris': '4D-TRIS', 'fheroes2': 'Free Heroes 2', 'DrCreep': 'The Castles of Dr. Creep', 'Duke3d_win32': 'Duke3d_w32', 'erampage (EDuke32 fork)': 'erampage', 'GNOME Atomix': 'Atomix', 'Head over Heels 2': 'Head over Heels', osgc_name_aliases = {'4DTris': '4D-TRIS', 'fheroes2': 'Free Heroes 2', 'DrCreep': 'The Castles of Dr. Creep', 'Duke3d_win32': 'Duke3d_w32', 'erampage (EDuke32 fork)': 'erampage', 'GNOME Atomix': 'Atomix', 'Head over Heels 2': 'Head over Heels',
@ -64,10 +67,10 @@ def unique_field_contents(entries, field):
for entry in entries: for entry in entries:
if field in entry: if field in entry:
field_content = entry[field] field_content = entry[field]
if type(field_content) is str: if type(field_content) is list:
unique_content.add(field_content)
else:
unique_content.update(field_content) unique_content.update(field_content)
else:
unique_content.add(field_content)
unique_content = sorted(list(unique_content), key=str.casefold) unique_content = sorted(list(unique_content), key=str.casefold)
return unique_content return unique_content
@ -98,7 +101,26 @@ if __name__ == "__main__":
osgc_entries.extend(_) osgc_entries.extend(_)
print('{} entries in osgameclones'.format(len(osgc_entries))) print('{} entries in osgameclones'.format(len(osgc_entries)))
print('osgc-languages: {}'.format(unique_field_contents(osgc_entries, 'lang'))) # which fields do they have
osgc_fields = set()
for osgc_entry in osgc_entries:
osgc_fields.update(osgc_entry.keys())
print('unique osgc-fields: {}'.format(osgc_fields))
for field in osgc_fields:
if field in ('video', 'feed', 'url', 'repo', 'info', 'updated', 'images', 'name', 'originals'):
continue
content = [entry[field] for entry in osgc_entries if field in entry]
# flatten
flat_content = []
for c in content:
if isinstance(c, list):
flat_content.extend(c)
else:
flat_content.append(c)
statistics = utils.unique_elements_and_occurrences(flat_content)
statistics.sort(key=str.casefold)
print('\n{}: {}'.format(field, ', '.join(statistics)))
# eliminate the ignored entries # eliminate the ignored entries
osgc_entries = [x for x in osgc_entries if x['name'] not in osgc_ignored_entries] osgc_entries = [x for x in osgc_entries if x['name'] not in osgc_ignored_entries]
@ -146,7 +168,7 @@ if __name__ == "__main__":
print('osgc-content: {}'.format(unique_field_contents(osgc_entries, 'content'))) print('osgc-content: {}'.format(unique_field_contents(osgc_entries, 'content')))
# read our database # read our database
our_entries = assemble_infos(c.entries_path) our_entries = osg.assemble_infos()
print('{} entries with us'.format(len(our_entries))) print('{} entries with us'.format(len(our_entries)))
# just the names # just the names
@ -160,7 +182,7 @@ if __name__ == "__main__":
# find similar names among the rest # find similar names among the rest
for osgc_name in osgc_names: for osgc_name in osgc_names:
for our_name in our_names: for our_name in our_names:
if game_name_similarity(osgc_name, our_name) > similarity_threshold: if osg.game_name_similarity(osgc_name, our_name) > similarity_threshold:
print('{} - {}'.format(osgc_name, our_name)) print('{} - {}'.format(osgc_name, our_name))
newly_created_entries = 0 newly_created_entries = 0
@ -231,9 +253,9 @@ if __name__ == "__main__":
urls = osgc_entry['url'] urls = osgc_entry['url']
if type(urls) == str: if type(urls) == str:
urls = [urls] urls = [urls]
urls = [strip_url(url) for url in urls] urls = [utils.strip_url(url) for url in urls]
our_urls = our_entry['home'] our_urls = our_entry['home']
our_urls = [strip_url(url) for url in our_urls] our_urls = [utils.strip_url(url) for url in our_urls]
for url in urls: for url in urls:
if url not in our_urls: if url not in our_urls:
p += ' home url {} missing\n'.format(url) p += ' home url {} missing\n'.format(url)
@ -311,11 +333,11 @@ if __name__ == "__main__":
# determine file name # determine file name
print('create new entry for {}'.format(osgc_name)) print('create new entry for {}'.format(osgc_name))
file_name = canonical_game_name(osgc_name) + '.md' file_name = osg.canonical_game_name(osgc_name) + '.md'
target_file = os.path.join(entries_path, file_name) target_file = os.path.join(constants.entries_path, file_name)
if os.path.isfile(target_file): if os.path.isfile(target_file):
print('warning: file {} already existing, save under slightly different name'.format(file_name)) print('warning: file {} already existing, save under slightly different name'.format(file_name))
target_file = os.path.join(entries_path, file_name[:-3] + '-duplicate.md') target_file = os.path.join(constants.entries_path, file_name[:-3] + '-duplicate.md')
if os.path.isfile(target_file): if os.path.isfile(target_file):
continue # just for safety reasons continue # just for safety reasons
@ -393,7 +415,7 @@ if __name__ == "__main__":
entry += '\n## Building\n' entry += '\n## Building\n'
# finally write to file # finally write to file
# write_text(target_file, entry) # utils.write_text(target_file, entry)
newly_created_entries += 1 newly_created_entries += 1

View File

@ -57,6 +57,7 @@ MultiGame (https://github.com/whendricso/MultiGame): Commercial
New RAW (http://sourceforge.net/projects/newraw/, http://svn.code.sf.net/p/newraw/code/): Early development, requires original content, abandoned New RAW (http://sourceforge.net/projects/newraw/, http://svn.code.sf.net/p/newraw/code/): Early development, requires original content, abandoned
Open General (http://www.open-general.com/, https://sourceforge.net/projects/opengeneral/, https://svn.code.sf.net/p/opengeneral/code/): Proprietary license (see credits.txt) Open General (http://www.open-general.com/, https://sourceforge.net/projects/opengeneral/, https://svn.code.sf.net/p/opengeneral/code/): Proprietary license (see credits.txt)
OpenDeathValley (https://github.com/OpenDeathValley/OpenDeathValley.git): No instructions, no releases, no website, not much code OpenDeathValley (https://github.com/OpenDeathValley/OpenDeathValley.git): No instructions, no releases, no website, not much code
OpenMB (https://github.com/cookgreen/OpenMB): Very early development stage, maybe later
OpenOutcast (https://sourceforge.net/projects/ocmod/): Very early development, no release, short svn history, abandoned OpenOutcast (https://sourceforge.net/projects/ocmod/): Very early development, no release, short svn history, abandoned
OpenPop (http://openpopulous.sourceforge.net/, https://sourceforge.net/projects/openpopulous/, https://svn.code.sf.net/p/openpopulous/code/): Very early development OpenPop (http://openpopulous.sourceforge.net/, https://sourceforge.net/projects/openpopulous/, https://svn.code.sf.net/p/openpopulous/code/): Very early development
openStrato (https://github.com/gerdl/openStrato.git): Not much code, no release or demo site, short code history, abandoned openStrato (https://github.com/gerdl/openStrato.git): Not much code, no release or demo site, short code history, abandoned

View File

@ -301,7 +301,10 @@ def unique_elements_and_occurrences(elements):
""" """
unique_elements = {} unique_elements = {}
for element in elements: for element in elements:
try:
unique_elements[element] = unique_elements.get(element, 0) + 1 unique_elements[element] = unique_elements.get(element, 0) + 1
except Exception as e:
print(e)
unique_elements = list(unique_elements.items()) unique_elements = list(unique_elements.items())
unique_elements.sort(key=lambda x: -x[1]) unique_elements.sort(key=lambda x: -x[1])
unique_elements = ['{}({})'.format(k, v) for k, v in unique_elements] unique_elements = ['{}({})'.format(k, v) for k, v in unique_elements]