additions from backlog
This commit is contained in:
parent
a4529af611
commit
99b3eb5e74
@ -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)**
|
||||
|
||||
[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)
|
||||
|
||||
|
@ -384,6 +384,14 @@
|
||||
"arcade",
|
||||
"<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>)",
|
||||
"Fly an airplane, fire missiles, drop bombs, destroy enemy..",
|
||||
@ -1544,6 +1552,14 @@
|
||||
"role playing, massive multiplayer online",
|
||||
"<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>)",
|
||||
"Data-driven game engine.",
|
||||
@ -1718,7 +1734,7 @@
|
||||
"",
|
||||
"mature / inactive since 2002",
|
||||
"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>)",
|
||||
@ -2544,6 +2560,14 @@
|
||||
"framework",
|
||||
"<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>)",
|
||||
"Remake of Plasma Pong.",
|
||||
@ -4448,6 +4472,14 @@
|
||||
"action, shooter",
|
||||
"<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>)",
|
||||
"Clone of Minecraft.",
|
||||
@ -5848,6 +5880,14 @@
|
||||
"strategy",
|
||||
"<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>)",
|
||||
"Texas Hold'em poker game playable against up to nine..",
|
||||
@ -5968,6 +6008,14 @@
|
||||
"puzzle, clone, inspired by Minesweeper",
|
||||
"<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>)",
|
||||
"Implements a large subset of the POSIX standard threads..",
|
||||
@ -6040,6 +6088,14 @@
|
||||
"framework",
|
||||
"<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>)",
|
||||
"Remake of Skool Daze.",
|
||||
@ -6056,6 +6112,14 @@
|
||||
"strategy, cards",
|
||||
"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>)",
|
||||
"Remake of Final Fantasy VII.",
|
||||
@ -6224,6 +6288,14 @@
|
||||
"action, inspired by Rescue!, real time, remake, space, strategy",
|
||||
"<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>)",
|
||||
"Remake of Grim Fandango, Escape from Monkey Island, Myst..",
|
||||
@ -6789,8 +6861,8 @@
|
||||
"Remake of Solar Fox.",
|
||||
"<a href=\"https://www.pygame.org/shredwheat/solarwolf/index.shtml#download\">Link</a>",
|
||||
"mature / inactive since 2004",
|
||||
"action, arcade, inspired by Solar Fox, remake",
|
||||
"<a href=\"http://pygame.org/shredwheat/solarwolf/solarwolf-1.5.tar.gz\">Source</a> - Python - LGPL-2.1"
|
||||
"action, arcade, inspired by Solar Fox, open content, remake",
|
||||
"<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>)",
|
||||
|
14
entries/anura.md
Normal file
14
entries/anura.md
Normal 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
18
entries/crossuo.md
Normal 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
|
@ -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
|
||||
- State: mature, inactive since 2002
|
||||
- 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 language: C
|
||||
- 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, Perl
|
||||
- Code license: GPL-2.0
|
||||
- Code dependencies: SDL
|
||||
|
||||
## Building
|
||||
|
14
entries/flixel-gdx.md
Normal file
14
entries/flixel-gdx.md
Normal 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
|
@ -11,4 +11,6 @@ _Remake of Jump 'n Bump._
|
||||
- Code license: GPL-2.0
|
||||
- Code dependencies: SDL
|
||||
|
||||
See also https://gitlab.com/LibreGames/jumpnbump (same game?)
|
||||
|
||||
## Building
|
||||
|
17
entries/mindustry.md
Normal file
17
entries/mindustry.md
Normal 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
16
entries/plib.md
Normal 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
|
@ -10,4 +10,6 @@ _Remake of Quake._
|
||||
- Code language: C
|
||||
- Code license: GPL-2.0
|
||||
|
||||
See also: http://quakeone.com/markv/
|
||||
|
||||
## Building
|
||||
|
16
entries/psyco.md
Normal file
16
entries/psyco.md
Normal 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
15
entries/pyscroll.md
Normal 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
13
entries/pytmx.md
Normal 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
17
entries/reshade.md
Normal 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
|
||||
|
@ -6,10 +6,14 @@ _Remake of Solar Fox._
|
||||
- State: mature, inactive since 2004
|
||||
- Download: https://www.pygame.org/shredwheat/solarwolf/index.shtml#download
|
||||
- Platform: Windows, Linux, macOS
|
||||
- Keywords: action, arcade, inspired by Solar Fox, remake
|
||||
- Code repository: http://pygame.org/shredwheat/solarwolf/solarwolf-1.5.tar.gz
|
||||
- Keywords: action, arcade, inspired by Solar Fox, open content, remake
|
||||
- Code repository: https://gitlab.com/osgames/solarwolf.git (import of source releases)
|
||||
- Code language: Python
|
||||
- Code license: LGPL-2.1
|
||||
- Code dependencies: pygame
|
||||
|
||||
Developer: Pete Shinners, Eero Tamminen
|
||||
|
||||
## Building
|
||||
|
||||
- Build system: Make
|
||||
|
@ -111,6 +111,7 @@
|
||||
- **[Mega Mario](../mega_mario.md)** (C++, LGPL-2.1, mature, inactive since 2012)
|
||||
- **[Memory Game](../memory_game.md)** (Java, Apache-2.0, mature)
|
||||
- **[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)
|
||||
- **[mk.js](../mkjs.md)** (JavaScript, MIT, beta)
|
||||
- **[Mr.Boom](../mrboom.md)** (C++, MIT, mature)
|
||||
|
@ -48,6 +48,7 @@
|
||||
- **[Antares](../antares.md)** (C++, LGPL-3.0, beta)
|
||||
- **[AntiChess](../antichess.md)** (Java, MIT, mature, inactive since 2003)
|
||||
- **[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)
|
||||
- **[aquastax](../aquastax.md)** (JavaScript, MIT, beta)
|
||||
- **[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)
|
||||
- **[Crimson Fields](../crimson_fields.md)** (C++, GPL-2.0, mature, inactive since 2010)
|
||||
- **[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](../crown.md)** (C, C++, Vala, MIT, beta)
|
||||
- **[Crypto++](../crypto.md)** (C++, Boost-1.0, mature)
|
||||
@ -214,7 +216,7 @@
|
||||
- **[Dave Gnukem](../dave_gnukem.md)** (C++, GPL-2.0, mature)
|
||||
- **[Dawn](../dawn.md)** (C++, GPL-3.0, beta, inactive since 2011)
|
||||
- **[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)
|
||||
- **[Dedalus](../dedalus.md)** (JavaScript, GPL-2.0, beta, inactive since 2018)
|
||||
- **[Defendguin](../defendguin.md)** (C, GPL-2.0, mature, inactive since 2009)
|
||||
@ -317,6 +319,7 @@
|
||||
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
|
||||
- **[Flex Engine](../flex_engine.md)** (C++, MIT, beta)
|
||||
- **[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)
|
||||
- **[Fluid Table Tennis](../fluid_table_tennis.md)** (JavaScript, MIT, mature, inactive since 2013)
|
||||
- **[fonline](../fonline.md)** (C, C++, GPL-3.0, beta)
|
||||
@ -556,6 +559,7 @@
|
||||
- **[micropolisJS](../micropolisjs.md)** (JavaScript, GPL-3.0, mature)
|
||||
- **[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)
|
||||
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
|
||||
- **[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.Zone](../minesweeperzone.md)** (JavaScript, PHP, MIT, mature)
|
||||
@ -731,6 +735,7 @@
|
||||
- **[pkg-config](../pkg-config.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)
|
||||
- **[PLIB](../plib.md)** (C++, LGPL-2.0, mature, inactive since 2012)
|
||||
- **[PokerTH](../pokerth.md)** (C++, AGPL-3.0, mature, inactive since 2017)
|
||||
- **[Polis](../polis.md)** (Java, GPL-3.0, mature, inactive since 2016)
|
||||
- **[Polycode](../polycode.md)** (C, C++, MIT, beta)
|
||||
@ -746,6 +751,7 @@
|
||||
- **[Project Helena](../project_helena.md)** (Pascal, GPL-3.0, beta)
|
||||
- **[ProQuake 4](../proquake_4.md)** (C, GPL-2.0, mature, inactive since 2018)
|
||||
- **[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)
|
||||
- **[Pushover](../pushover.md)** (C++, C, Lua, GPL-3.0, beta, inactive since 2018)
|
||||
- **[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)
|
||||
- **[Pymapper](../pymapper.md)** (Python, GPL-3.0, mature)
|
||||
- **[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)
|
||||
- **[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)
|
||||
- **[Qt](../qt.md)** (C++, LGPL-3.0, mature)
|
||||
- **[Quad-engine](../quad-engine.md)** (Pascal, MIT, beta)
|
||||
@ -778,6 +786,7 @@
|
||||
- **[Remixed Dungeon](../remixed_dungeon.md)** (Java, GPL-3.0, mature)
|
||||
- **[ReQbert](../reqbert.md)** (JavaScript, GPL-3.0, beta)
|
||||
- **[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)
|
||||
- **[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)
|
||||
|
@ -17,6 +17,7 @@
|
||||
- **[Esenthel Engine](../esenthel_engine.md)** (C, C++, Custom, beta)
|
||||
- **[EternalWinterWars](../eternalwinterwars.md)** (Java, MIT, beta, inactive since 2014)
|
||||
- **[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)
|
||||
- **[GL4ES](../gl4es.md)** (C, MIT, mature)
|
||||
- **[Golly](../golly.md)** (C++, Java, GPL-2.0, mature)
|
||||
@ -32,6 +33,7 @@
|
||||
- **[LÖVE](../love.md)** (C++, zlib, mature)
|
||||
- **[Memory Game](../memory_game.md)** (Java, Apache-2.0, mature)
|
||||
- **[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)
|
||||
- **[Morpheus Web Remake](../morpheus_web_remake.md)** (Javascript, MIT, beta)
|
||||
- **[NOVA PINBALL](../nova_pinball.md)** (Lua, GPL-3.0, beta, inactive since 2017)
|
||||
|
@ -6,6 +6,7 @@
|
||||
- **[Airstrike](../airstrike.md)** (C, GPL-2.0, beta, inactive since 2014)
|
||||
- **[Aisleriot](../aisleriot.md)** (C, Scheme, GPL-3.0, mature)
|
||||
- **[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)
|
||||
- **[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)
|
||||
|
@ -17,6 +17,7 @@
|
||||
- **[F.LF](../flf.md)** (JavaScript, ?, mature)
|
||||
- **[Flare](../flare.md)** (C++, Java, GPL-3.0, mature)
|
||||
- **[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)
|
||||
- **[GemRB](../gemrb.md)** (C++, Python, GPL-2.0, mature)
|
||||
- **[Godot](../godot.md)** (C, C++, MIT, mature)
|
||||
@ -46,6 +47,7 @@
|
||||
- **[OpenRPG](../openrpg.md)** (Python, GPL-2.0, mature, inactive since 2013)
|
||||
- **[Orx](../orx.md)** (C, zlib, 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)
|
||||
- **[pygame](../pygame.md)** (C, Python, LGPL-2.1, mature)
|
||||
- **[pyORPG](../pyorpg.md)** (Python, MIT, beta, inactive since 2015)
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
- **[adventure engine](../adventure_engine.md)** (Lua, MIT, mature, inactive since 2013)
|
||||
- **[Alimer](../alimer.md)** (C++, MIT, beta)
|
||||
- **[Anura](../anura.md)** (C, C++, zlib, mature)
|
||||
- **[Bacon2D](../bacon2d.md)** (C++, MIT, beta, inactive since 2018)
|
||||
- **[Bladecoder Adventure Engine](../bladecoder_adventure_engine.md)** (Java, Apache-2.0, mature)
|
||||
- **[Blitwizard](../blitwizard.md)** (C, C++, Lua, zlib, beta, inactive since 2015)
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
- **[DOOM-iOS](../doom-ios.md)** (C++, GPL-2.0, mature, inactive since 2012)
|
||||
- **[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)
|
||||
- **[Hedgewars](../hedgewars.md)** (Lua, C, C++, Pascal, Haskell, GPL-2.0, mature)
|
||||
- **[LÖVE](../love.md)** (C++, zlib, mature)
|
||||
|
@ -21,7 +21,10 @@
|
||||
- **[OpenSSL](../openssl.md)** (C, Custom, mature)
|
||||
- **[Penumbra](../penumbra.md)** (C#, MIT, 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)
|
||||
- **[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)
|
||||
- **[Simple and Fast Multimedia Library](../simple_and_fast_multimedia_library.md)** (C++, zlib, mature)
|
||||
- **[Simple DirectMedia Layer](../simple_directmedia_layer.md)** (C, zlib, mature)
|
||||
|
@ -54,6 +54,7 @@
|
||||
- **[Cosmosmash](../cosmosmash.md)** (C++, GPL-2.0, mature, inactive since 2013)
|
||||
- **[Crack Attack!](../crack_attack.md)** (C++, GPL-2.0, mature, inactive since 2005)
|
||||
- **[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)
|
||||
- **[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)
|
||||
@ -87,6 +88,7 @@
|
||||
- **[Falltergeist](../falltergeist.md)** (C++, GPL-3.0, beta)
|
||||
- **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.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)
|
||||
- **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta)
|
||||
- **[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)
|
||||
- **[Maxit](../maxit.md)** (C++, ?, mature, inactive since 2014)
|
||||
- **[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)
|
||||
- **[mini2Dx](../mini2dx.md)** (Java, C#, Apache-2.0, mature)
|
||||
- **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017)
|
||||
@ -178,13 +181,17 @@
|
||||
- **[Pingus](../pingus.md)** (C++, GPL-3.0, mature)
|
||||
- **[Pink Pony](../pink_pony.md)** (C++, GPL-3.0, mature, inactive since 2017)
|
||||
- **[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)
|
||||
- **[Powerslide remake](../powerslide_remake.md)** (C++, MIT, beta)
|
||||
- **[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)
|
||||
- **[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)
|
||||
- **[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)
|
||||
- **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature)
|
||||
- **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature)
|
||||
|
@ -25,6 +25,7 @@
|
||||
- **[Circus Linux!](../circus_linux.md)** (C, GPL-2.0, mature, inactive since 2000)
|
||||
- **[Colditz Escape](../colditz_escape.md)** (C, GPL-3.0, mature)
|
||||
- **[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)
|
||||
- **[D2X-XL](../d2x-xl.md)** (C++, Custom, GPL-2.0, mature, inactive since 2015)
|
||||
- **[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)
|
||||
- **[Flare](../flare.md)** (C++, Java, GPL-3.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)
|
||||
- **[freeablo](../freeablo.md)** (C++, GPL-3.0, beta)
|
||||
- **[Freedoom](../freedoom.md)** (Not applicable, Not applicable, beta)
|
||||
@ -112,11 +114,14 @@
|
||||
- **[Pentagram](../pentagram.md)** (C++, GPL-2.0, beta, inactive since 2018)
|
||||
- **[Performous](../performous.md)** (C, C++, GPL-2.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)
|
||||
- **[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)
|
||||
- **[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)
|
||||
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
|
||||
- **[QuakeSpasm](../quakespasm.md)** (C, 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)
|
||||
|
@ -68,7 +68,7 @@
|
||||
- **[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)
|
||||
- **[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)
|
||||
- **[DelverEngine](../delverengine.md)** (Java, Custom, beta)
|
||||
- **[DesktopAdventures](../desktopadventures.md)** (C, LGPL-2.1, beta)
|
||||
|
@ -25,6 +25,7 @@
|
||||
- **[Classic Blades of Exile](../classic_blades_of_exile.md)** (C++, GPL-2.0, mature)
|
||||
- **[coab](../coab.md)** (C#, ???, 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)
|
||||
- **[Daimonin](../daimonin.md)** (C, GPL-2.0, mature)
|
||||
- **[DarkCity](../darkcity.md)** (PHP, GPL-3.0, mature, inactive since 2012)
|
||||
|
@ -17,7 +17,10 @@
|
||||
- **[PCGen](../pcgen.md)** (Java, LGPL-2.1, mature)
|
||||
- **[pkg-config](../pkg-config.md)** (C, GPL-2.0, mature)
|
||||
- **[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)
|
||||
- **[PyTMX](../pytmx.md)** (Python, LGPL-3.0, mature)
|
||||
- **[ReShade](../reshade.md)** (C++, 3-clause BSD, mature)
|
||||
- **[rFXGen](../rfxgen.md)** (C, zlib, mature)
|
||||
- **[Rolemaster Office](../rolemaster_office.md)** (Java, Apache-2.0, mature)
|
||||
- **[Rolisteam](../rolisteam.md)** (C++, JavaScript, GPL-2.0, mature)
|
||||
|
@ -19,6 +19,7 @@
|
||||
- **[Executive Man](../executive_man.md)** (JavaScript, Custom, mature, inactive since 2017)
|
||||
- **[F.LF](../flf.md)** (JavaScript, ?, 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)
|
||||
- **[Grimsonland](../grimsonland.md)** (JavaScript, ?, mature, inactive since 2017)
|
||||
- **[HexGL](../hexgl.md)** (JavaScript, CoffeeScript, MIT, mature, inactive since 2016)
|
||||
|
@ -10,6 +10,7 @@
|
||||
- **[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)
|
||||
- **[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)
|
||||
- **[AssaultCube](../assaultcube.md)** (C, C++, Custom, mature, inactive since 2018)
|
||||
- **[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)
|
||||
- **[Crack Attack!](../crack_attack.md)** (C++, GPL-2.0, mature, inactive since 2005)
|
||||
- **[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)
|
||||
- **[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)
|
||||
@ -86,6 +88,7 @@
|
||||
- **[Fish Fillets - Next Generation](../fish_fillets-next_generation.md)** (C++, GPL-2.0, mature)
|
||||
- **[Flare](../flare.md)** (C++, Java, GPL-3.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)
|
||||
- **[freeablo](../freeablo.md)** (C++, GPL-3.0, 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)
|
||||
- **[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)
|
||||
- **[Mindustry](../mindustry.md)** (Java, GPL-3.0, mature)
|
||||
- **[Minetest](../minetest.md)** (C, C++, Lua, LGPL-2.1, mature)
|
||||
- **[mini2Dx](../mini2dx.md)** (Java, C#, Apache-2.0, mature)
|
||||
- **[Mininim](../mininim.md)** (C, GPL-3.0, beta, inactive since 2017)
|
||||
@ -195,17 +199,22 @@
|
||||
- **[Pingus](../pingus.md)** (C++, GPL-3.0, mature)
|
||||
- **[Pink Pony](../pink_pony.md)** (C++, GPL-3.0, mature, inactive since 2017)
|
||||
- **[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)
|
||||
- **[Powerslide remake](../powerslide_remake.md)** (C++, MIT, beta)
|
||||
- **[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)
|
||||
- **[Psyco](../psyco.md)** (C, MIT, mature, inactive since 2008)
|
||||
- **[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)
|
||||
- **[pyscroll](../pyscroll.md)** (Python, LGPL-3.0, mature, inactive since 2018)
|
||||
- **[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)
|
||||
- **[Rabbit Escape](../rabbit_escape.md)** (Java, GPL-2.0, mature)
|
||||
- **[Race Into Space](../race_into_space.md)** (C, C++, GPL-2.0, mature)
|
||||
- **[raylib](../raylib.md)** (C, C++, zlib, mature)
|
||||
- **[ReShade](../reshade.md)** (C++, 3-clause BSD, mature)
|
||||
- **[ResidualVM](../residualvm.md)** (C++, GPL-2.0, beta)
|
||||
- **[rFXGen](../rfxgen.md)** (C, zlib, mature)
|
||||
- **[Rigs of Rods](../rigs_of_rods.md)** (C, C++, AngelScript, GPL-3.0, mature)
|
||||
|
114
statistics.md
114
statistics.md
File diff suppressed because one or more lines are too long
@ -99,6 +99,7 @@
|
||||
"https://github.com/AndO3131/lgeneral.git",
|
||||
"https://github.com/Andrettin/Wyrmgus.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/Argentum-Online/Argentum-Online.git",
|
||||
"https://github.com/ArmageddonGames/ZeldaClassic.git",
|
||||
@ -352,6 +353,7 @@
|
||||
"https://github.com/antionio/game-off-2013.git",
|
||||
"https://github.com/anttisalonen/freekick3.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/apsillers/Taggem.git",
|
||||
"https://github.com/apsillers/lords-of-the-fey.git",
|
||||
@ -366,6 +368,8 @@
|
||||
"https://github.com/basicallydan/skifree.js.git",
|
||||
"https://github.com/benjaminfoo/OpenTriad.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/blakeohare/pyweek-sentientstorage.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/craftworkgames/infiniminer.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/cubei/FlappyCow.git",
|
||||
"https://github.com/cubosphere/cubosphere-code.git",
|
||||
@ -461,6 +467,7 @@
|
||||
"https://github.com/fasterthanlime/isaac-paper.git",
|
||||
"https://github.com/fastrgv/AdaVenture.git",
|
||||
"https://github.com/fifengine/fifengine.git",
|
||||
"https://github.com/flixel-gdx/flixel-gdx.git",
|
||||
"https://github.com/fofix/fofix.git",
|
||||
"https://github.com/fogleman/Craft.git",
|
||||
"https://github.com/fph/bastet.git",
|
||||
@ -862,6 +869,7 @@
|
||||
"https://gitlab.com/osgames/dark-oberon.git",
|
||||
"https://gitlab.com/osgames/darkcity.git",
|
||||
"https://gitlab.com/osgames/darkdestiny.git",
|
||||
"https://gitlab.com/osgames/deathchase3d.git",
|
||||
"https://gitlab.com/osgames/deity.git",
|
||||
"https://gitlab.com/osgames/deliantra.git",
|
||||
"https://gitlab.com/osgames/devana.git",
|
||||
@ -948,6 +956,7 @@
|
||||
"https://gitlab.com/osgames/slaygame.git",
|
||||
"https://gitlab.com/osgames/snowstorm.git",
|
||||
"https://gitlab.com/osgames/softpixelengine.git",
|
||||
"https://gitlab.com/osgames/solarwolf.git",
|
||||
"https://gitlab.com/osgames/sopwith3.git",
|
||||
"https://gitlab.com/osgames/spaceopera.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/pio/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/quakespasm/code/",
|
||||
"https://svn.code.sf.net/p/spacezero/code/",
|
||||
|
@ -36,10 +36,12 @@ http://openapoc.pmprog.co.uk/
|
||||
http://pathfinder.wikia.com/wiki/Pathfinder_Roleplaying_Game
|
||||
http://phaser.io/
|
||||
http://playir.com/
|
||||
http://plib.sourceforge.net/
|
||||
http://psyco.sourceforge.net/
|
||||
http://pyglet.org/
|
||||
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://retrospec.sgn.net
|
||||
http://sam.zoy.org/monsterz/
|
||||
@ -157,13 +159,10 @@ https://freegamer.blogspot.com (maybe there is something interesting)
|
||||
https://futurepinball.com/
|
||||
https://gamejolt.com/ (search there)
|
||||
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/atphalix/nexuiz
|
||||
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/CatacombGames/
|
||||
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/Cortrah/SpaceOperaDesign, https://github.com/Cortrah/SpaceOperaRuby/blob/master/design/turnstyles.md
|
||||
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/DeflatedPickle/FAOSDance
|
||||
https://github.com/Donerkebap13/DonerComponents
|
||||
@ -190,9 +187,11 @@ https://github.com/fallahn/xygine
|
||||
https://github.com/fegennari/3DWorld
|
||||
https://github.com/flathub (all repositories which are games there)
|
||||
https://github.com/FUSEEProjectTeam/Fusee
|
||||
https://github.com/fynnfluegge/oreon-engine
|
||||
https://github.com/gamearians
|
||||
https://github.com/GamedevFramework/gf
|
||||
https://github.com/grantjenks/free-python-games (check all)
|
||||
https://github.com/Hotride/OrionUO
|
||||
https://github.com/hparcells/cards-against-humanity
|
||||
https://github.com/i42output/neoGFX
|
||||
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/LgLinus/StrategyGame
|
||||
https://github.com/libretro/libretro-prboom
|
||||
https://github.com/ligurio/awesome-ttygames
|
||||
https://github.com/MarcoLizza/tofu-engine
|
||||
https://github.com/mewo2/terrain
|
||||
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/psuong/ig-developer-console
|
||||
https://github.com/qiciengine/qiciengine
|
||||
https://github.com/Renanse/Ardor3D
|
||||
https://github.com/rizwan3d/MotoGameEngine
|
||||
https://github.com/rlguy/FantasyMapGenerator
|
||||
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/Wargus/stratagus
|
||||
https://github.com/wesnoth/haldric
|
||||
https://github.com/Zal0/ZGB
|
||||
https://gitlab.com/LibreGames
|
||||
https://gitlab.com/nyov/nyovs-nexuiz
|
||||
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.scirra.com/construct2
|
||||
https://www.tapatalk.com/groups/imperilist/
|
||||
https://www.tuxfamily.org/ (if there are games)
|
||||
https://www.wurfelengine.net/
|
||||
https://wxpython.org/
|
||||
https://zope.readthedocs.io/en/latest/
|
@ -5,11 +5,14 @@ Also parse rejected games (https://libregamewiki.org/Libregamewiki:Rejected_game
|
||||
|
||||
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']
|
||||
|
||||
TODO there are games on LGW which are not part of the Games category but part of XXX-Games sub-categories
|
||||
"""
|
||||
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
import re
|
||||
from bs4 import BeautifulSoup
|
||||
from utils import constants, utils, osg
|
||||
|
||||
@ -210,6 +213,39 @@ def lower_case_content(entries, field):
|
||||
entries[index] = entry
|
||||
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():
|
||||
|
||||
# paths
|
||||
@ -257,6 +293,7 @@ def clean_lgw_content():
|
||||
print('mandatory lgw fields: {}'.format(sorted(list(mandatory_fields))))
|
||||
|
||||
# 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 = 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'))
|
||||
@ -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'), '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', ('CC BY-SA',))
|
||||
entries = replace_content(entries, ('code license', 'assets license'), 'MIT', ('MIT License',))
|
||||
entries = replace_content(entries, 'platform', 'macOS', ('Mac', ))
|
||||
entries = remove_prefix_suffix(entries, 'code language', (), ('[3]', '[2]', '[1]'))
|
||||
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', 'Qt', ('QT', ))
|
||||
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
|
||||
# fields = sorted(list(unique_fields))
|
||||
|
@ -19,34 +19,20 @@ linux-packages - > free text (info)
|
||||
name -> name
|
||||
platform -> platform
|
||||
|
||||
TODO also ignore our rejected entries
|
||||
"""
|
||||
|
||||
import json
|
||||
from utils.osg import *
|
||||
|
||||
|
||||
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
|
||||
|
||||
import os
|
||||
from utils import constants, utils, osg
|
||||
|
||||
|
||||
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',
|
||||
'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']
|
||||
|
||||
|
||||
|
||||
def list_compare(a, b, k):
|
||||
"""
|
||||
|
||||
@ -64,24 +50,20 @@ if __name__ == "__main__":
|
||||
maximal_newly_created_entries = 40
|
||||
|
||||
# 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
|
||||
json_path = os.path.join(root_path, os.pardir, 'lgw_import.json')
|
||||
text = read_text(json_path)
|
||||
text = utils.read_text(lgw_entries_file)
|
||||
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]
|
||||
for index, lgw_entry in enumerate(lgw_entries):
|
||||
if lgw_entry['name'] in name_replacements:
|
||||
lgw_entry['name'] = name_replacements[lgw_entry['name']]
|
||||
if 'code language' in lgw_entry:
|
||||
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 = []
|
||||
for l in languages:
|
||||
for g in ('/', 'and'):
|
||||
@ -91,71 +73,13 @@ if __name__ == "__main__":
|
||||
if type(l) == str:
|
||||
l = [l]
|
||||
h.extend(l)
|
||||
languages = ['C++' if x.startswith('C++') else x for x in 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]
|
||||
languages = h
|
||||
if languages:
|
||||
lgw_entry['code language'] = languages
|
||||
else:
|
||||
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
|
||||
|
||||
|
||||
# check for unique field names
|
||||
unique_fields = set()
|
||||
for lgw_entry in lgw_entries:
|
||||
@ -163,23 +87,14 @@ if __name__ == "__main__":
|
||||
print('unique lgw fields: {}'.format(sorted(list(unique_fields))))
|
||||
|
||||
# which fields are mandatory
|
||||
mandatory_fields = unique_fields.copy()
|
||||
for lgw_entry in lgw_entries:
|
||||
remove_fields = [field for field in unique_fields if field not in lgw_entry]
|
||||
unique_fields -= set(remove_fields)
|
||||
print('mandatory lgw fields: {}'.format(sorted(list(unique_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)))
|
||||
remove_fields = [field for field in mandatory_fields if field not in lgw_entry]
|
||||
mandatory_fields -= set(remove_fields)
|
||||
print('mandatory lgw fields: {}'.format(sorted(list(mandatory_fields ))))
|
||||
|
||||
# read our database
|
||||
our_entries = assemble_infos(c.entries_path)
|
||||
our_entries = osg.assemble_infos()
|
||||
print('{} entries with us'.format(len(our_entries)))
|
||||
|
||||
# just the names
|
||||
@ -194,7 +109,7 @@ if __name__ == "__main__":
|
||||
#print('similar names')
|
||||
#for lgw_name in lgw_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))
|
||||
|
||||
newly_created_entries = 0
|
||||
@ -234,11 +149,11 @@ if __name__ == "__main__":
|
||||
|
||||
# determine file name
|
||||
print('create new entry for {}'.format(lgw_name))
|
||||
file_name = canonical_game_name(lgw_name) + '.md'
|
||||
target_file = os.path.join(entries_path, file_name)
|
||||
file_name = osg.canonical_game_name(lgw_name) + '.md'
|
||||
target_file = os.path.join(constants.entries_path, file_name)
|
||||
if os.path.isfile(target_file):
|
||||
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):
|
||||
continue # just for safety reasons
|
||||
|
||||
@ -300,5 +215,5 @@ if __name__ == "__main__":
|
||||
entry += '\n## Building\n'
|
||||
|
||||
# finally write to file
|
||||
write_text(target_file, entry)
|
||||
# utils.write_text(target_file, entry)
|
||||
newly_created_entries += 1
|
@ -32,10 +32,13 @@ info -> after fields
|
||||
updated not used
|
||||
images not used
|
||||
video: not used
|
||||
|
||||
TODO also ignore our rejected entries
|
||||
"""
|
||||
|
||||
import ruamel_yaml as yaml
|
||||
from utils.osg import *
|
||||
import os
|
||||
from utils import constants, utils, osg
|
||||
|
||||
# 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',
|
||||
@ -64,10 +67,10 @@ def unique_field_contents(entries, field):
|
||||
for entry in entries:
|
||||
if field in entry:
|
||||
field_content = entry[field]
|
||||
if type(field_content) is str:
|
||||
unique_content.add(field_content)
|
||||
else:
|
||||
if type(field_content) is list:
|
||||
unique_content.update(field_content)
|
||||
else:
|
||||
unique_content.add(field_content)
|
||||
unique_content = sorted(list(unique_content), key=str.casefold)
|
||||
return unique_content
|
||||
|
||||
@ -98,7 +101,26 @@ if __name__ == "__main__":
|
||||
osgc_entries.extend(_)
|
||||
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
|
||||
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')))
|
||||
|
||||
# read our database
|
||||
our_entries = assemble_infos(c.entries_path)
|
||||
our_entries = osg.assemble_infos()
|
||||
print('{} entries with us'.format(len(our_entries)))
|
||||
|
||||
# just the names
|
||||
@ -160,7 +182,7 @@ if __name__ == "__main__":
|
||||
# find similar names among the rest
|
||||
for osgc_name in osgc_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))
|
||||
|
||||
newly_created_entries = 0
|
||||
@ -231,9 +253,9 @@ if __name__ == "__main__":
|
||||
urls = osgc_entry['url']
|
||||
if type(urls) == str:
|
||||
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 = [strip_url(url) for url in our_urls]
|
||||
our_urls = [utils.strip_url(url) for url in our_urls]
|
||||
for url in urls:
|
||||
if url not in our_urls:
|
||||
p += ' home url {} missing\n'.format(url)
|
||||
@ -311,11 +333,11 @@ if __name__ == "__main__":
|
||||
|
||||
# determine file name
|
||||
print('create new entry for {}'.format(osgc_name))
|
||||
file_name = canonical_game_name(osgc_name) + '.md'
|
||||
target_file = os.path.join(entries_path, file_name)
|
||||
file_name = osg.canonical_game_name(osgc_name) + '.md'
|
||||
target_file = os.path.join(constants.entries_path, file_name)
|
||||
if os.path.isfile(target_file):
|
||||
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):
|
||||
continue # just for safety reasons
|
||||
|
||||
@ -393,7 +415,7 @@ if __name__ == "__main__":
|
||||
entry += '\n## Building\n'
|
||||
|
||||
# finally write to file
|
||||
# write_text(target_file, entry)
|
||||
# utils.write_text(target_file, entry)
|
||||
newly_created_entries += 1
|
||||
|
||||
|
||||
|
@ -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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
@ -301,7 +301,10 @@ def unique_elements_and_occurrences(elements):
|
||||
"""
|
||||
unique_elements = {}
|
||||
for element in elements:
|
||||
unique_elements[element] = unique_elements.get(element, 0) + 1
|
||||
try:
|
||||
unique_elements[element] = unique_elements.get(element, 0) + 1
|
||||
except Exception as e:
|
||||
print(e)
|
||||
unique_elements = list(unique_elements.items())
|
||||
unique_elements.sort(key=lambda x: -x[1])
|
||||
unique_elements = ['{}({})'.format(k, v) for k, v in unique_elements]
|
||||
|
Loading…
x
Reference in New Issue
Block a user