updates on developer information (parsing with lark)
This commit is contained in:
parent
10625a854a
commit
eeb20a670a
@ -6,6 +6,8 @@ http://circularstudios.com/
|
|||||||
http://cyxdown.free.fr/bs/
|
http://cyxdown.free.fr/bs/
|
||||||
http://cyxdown.free.fr/f2b/
|
http://cyxdown.free.fr/f2b/
|
||||||
http://dead-code.org/home/
|
http://dead-code.org/home/
|
||||||
|
https://github.com/restorer/gloomy-dungeons-2
|
||||||
|
https://github.com/MyreMylar/pygame_gui
|
||||||
http://e-adventure.e-ucm.es/login/index.php (games of eAdventure)
|
http://e-adventure.e-ucm.es/login/index.php (games of eAdventure)
|
||||||
http://ethernet.wasted.ch/
|
http://ethernet.wasted.ch/
|
||||||
http://evolonline.org/about
|
http://evolonline.org/about
|
||||||
@ -222,6 +224,7 @@ https://github.com/Cortrah/SpaceOperaDesign, https://github.com/Cortrah/SpaceOpe
|
|||||||
https://github.com/cping/LGame
|
https://github.com/cping/LGame
|
||||||
https://github.com/cymonsgames/CymonsGames (collection)
|
https://github.com/cymonsgames/CymonsGames (collection)
|
||||||
https://github.com/DaanVanYperen/artemis-odb-contrib
|
https://github.com/DaanVanYperen/artemis-odb-contrib
|
||||||
|
https://github.com/David20321/7DFPS (http://www.wolfire.com/receiver, not open source, for rejected list)
|
||||||
https://github.com/DeflatedPickle/FAOSDance
|
https://github.com/DeflatedPickle/FAOSDance
|
||||||
https://github.com/delaford/game
|
https://github.com/delaford/game
|
||||||
https://github.com/Donerkebap13/DonerComponents
|
https://github.com/Donerkebap13/DonerComponents
|
||||||
@ -336,6 +339,7 @@ https://github.com/skypjack/entt
|
|||||||
https://github.com/smlinux/nexuiz
|
https://github.com/smlinux/nexuiz
|
||||||
https://github.com/SPC-Some-Polish-Coders/PopHead
|
https://github.com/SPC-Some-Polish-Coders/PopHead
|
||||||
https://github.com/SPC-Some-Polish-Coders/PopHead/
|
https://github.com/SPC-Some-Polish-Coders/PopHead/
|
||||||
|
https://github.com/Squalr/Squally
|
||||||
https://github.com/stackos/Viry3D
|
https://github.com/stackos/Viry3D
|
||||||
https://github.com/stolencatkarma/CataclysmLD
|
https://github.com/stolencatkarma/CataclysmLD
|
||||||
https://github.com/Suprcode/mir3-zircon
|
https://github.com/Suprcode/mir3-zircon
|
||||||
|
15
code/grammar_entries.lark
Normal file
15
code/grammar_entries.lark
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
start: title description property+ _E note _E? building
|
||||||
|
|
||||||
|
title: "# " /(?! ).+(?<! )/ "\n" _E // not starting or ending with a space
|
||||||
|
|
||||||
|
description: "_" /(?! ).+(?<![ _])/ "_\n" _E // single line not ending with underscore
|
||||||
|
|
||||||
|
property: "- " _key ": " _value "\n" // a property on a single line "- key: value"
|
||||||
|
_key: /(?! ).+?(?=:)/ // key: everything until next ":"
|
||||||
|
_value: /.+(?<! )/ // everything until the end of the line
|
||||||
|
|
||||||
|
building: "## Building\n" _E property+ _E? note // the "building" section
|
||||||
|
|
||||||
|
note: /(?![\-#]).*\n/* // Unstructured text, not starting with - or #
|
||||||
|
|
||||||
|
_E: /^$\n/m // empty new line (filtered from tree)
|
17
code/grammar_listing.lark
Normal file
17
code/grammar_listing.lark
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
start: header entries*
|
||||||
|
|
||||||
|
header: "# " name " (" number ")\n" _E
|
||||||
|
|
||||||
|
entries: "## " name " (" number ")\n" _E property+ _E
|
||||||
|
|
||||||
|
property: "- " _key ": " _value "\n"
|
||||||
|
_key: /(?! ).+?(?=:)(?<! )/ // key: everything until next ":", not beginning or ending with a space
|
||||||
|
_value: /.+(?<! )/ // everything until the end of the line, not ending with a space
|
||||||
|
|
||||||
|
name: /.+?(?= \()/ // developer name: everything until " ("
|
||||||
|
number: /[0-9]+/
|
||||||
|
|
||||||
|
COMMENT: /^\[comment\]: #.*$\n/m // [comment]: # xxx
|
||||||
|
_E: /^$\n/m // empty new line
|
||||||
|
|
||||||
|
%ignore COMMENT
|
@ -25,7 +25,7 @@ def download_lgw_content():
|
|||||||
|
|
||||||
# parameters
|
# parameters
|
||||||
base_url = 'https://libregamewiki.org'
|
base_url = 'https://libregamewiki.org'
|
||||||
destination_path = os.path.join(constants.root_path, 'tools', 'lgw-import')
|
destination_path = os.path.join(constants.root_path, 'code', 'lgw-import')
|
||||||
utils.recreate_directory(destination_path)
|
utils.recreate_directory(destination_path)
|
||||||
|
|
||||||
# read and process the base url (get all games and categories)
|
# read and process the base url (get all games and categories)
|
||||||
@ -64,7 +64,7 @@ def download_lgw_content():
|
|||||||
def parse_lgw_content():
|
def parse_lgw_content():
|
||||||
|
|
||||||
# paths
|
# paths
|
||||||
import_path = os.path.join(constants.root_path, 'tools', 'lgw-import')
|
import_path = os.path.join(constants.root_path, 'code', 'lgw-import')
|
||||||
entries_file = os.path.join(import_path, '_lgw.json')
|
entries_file = os.path.join(import_path, '_lgw.json')
|
||||||
|
|
||||||
# iterate over all imported files
|
# iterate over all imported files
|
||||||
@ -250,7 +250,7 @@ def ignore_nonnumbers(entries, fields):
|
|||||||
def clean_lgw_content():
|
def clean_lgw_content():
|
||||||
|
|
||||||
# paths
|
# paths
|
||||||
import_path = os.path.join(constants.root_path, 'tools', 'lgw-import')
|
import_path = os.path.join(constants.root_path, 'code', 'lgw-import')
|
||||||
entries_file = os.path.join(import_path, '_lgw.json')
|
entries_file = os.path.join(import_path, '_lgw.json')
|
||||||
cleaned_entries_file = os.path.join(import_path, '_lgw.cleaned.json')
|
cleaned_entries_file = os.path.join(import_path, '_lgw.cleaned.json')
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ if __name__ == "__main__":
|
|||||||
maximal_newly_created_entries = 40
|
maximal_newly_created_entries = 40
|
||||||
|
|
||||||
# paths
|
# paths
|
||||||
lgw_import_path = os.path.join(constants.root_path, 'tools', 'lgw-import')
|
lgw_import_path = os.path.join(constants.root_path, 'code', 'lgw-import')
|
||||||
lgw_entries_file = os.path.join(lgw_import_path, '_lgw.cleaned.json')
|
lgw_entries_file = os.path.join(lgw_import_path, '_lgw.cleaned.json')
|
||||||
|
|
||||||
# import lgw import
|
# import lgw import
|
||||||
|
@ -739,8 +739,8 @@ def export_primary_code_repositories_json(infos):
|
|||||||
for domain in ('repo.or.cz', 'anongit.kde.org', 'bitbucket.org', 'git.code.sf.net', 'git.savannah', 'git.tuxfamily', 'github.com', 'gitlab.com', 'gitlab.com/osgames', 'gitlab.gnome.org'):
|
for domain in ('repo.or.cz', 'anongit.kde.org', 'bitbucket.org', 'git.code.sf.net', 'git.savannah', 'git.tuxfamily', 'github.com', 'gitlab.com', 'gitlab.com/osgames', 'gitlab.gnome.org'):
|
||||||
print('{} on {}'.format(sum(1 if domain in x else 0 for x in git_repos), domain))
|
print('{} on {}'.format(sum(1 if domain in x else 0 for x in git_repos), domain))
|
||||||
|
|
||||||
# write them to tools/git
|
# write them to code/git
|
||||||
json_path = os.path.join(c.root_path, 'tools', 'archives.json')
|
json_path = os.path.join(c.root_path, 'code', 'archives.json')
|
||||||
text = json.dumps(primary_repos, indent=1)
|
text = json.dumps(primary_repos, indent=1)
|
||||||
utils.write_text(json_path, text)
|
utils.write_text(json_path, text)
|
||||||
|
|
||||||
@ -768,8 +768,8 @@ def export_git_code_repositories_json():
|
|||||||
# sort them alphabetically (and remove duplicates)
|
# sort them alphabetically (and remove duplicates)
|
||||||
urls.sort()
|
urls.sort()
|
||||||
|
|
||||||
# write them to tools/git
|
# write them to code/git
|
||||||
json_path = os.path.join(c.root_path, 'tools', 'git_repositories.json')
|
json_path = os.path.join(c.root_path, 'code', 'git_repositories.json')
|
||||||
text = json.dumps(urls, indent=1)
|
text = json.dumps(urls, indent=1)
|
||||||
utils.write_text(json_path, text)
|
utils.write_text(json_path, text)
|
||||||
|
|
||||||
@ -789,7 +789,7 @@ def sort_text_file(file, name):
|
|||||||
def clean_backlog(stripped_game_urls):
|
def clean_backlog(stripped_game_urls):
|
||||||
|
|
||||||
# read backlog and split
|
# read backlog and split
|
||||||
file = os.path.join(c.root_path, 'tools', 'backlog.txt')
|
file = os.path.join(c.root_path, 'code', 'backlog.txt')
|
||||||
text = utils.read_text(file)
|
text = utils.read_text(file)
|
||||||
text = text.split('\n')
|
text = text.split('\n')
|
||||||
|
|
||||||
@ -809,7 +809,7 @@ def check_validity_backlog():
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
# read backlog and split
|
# read backlog and split
|
||||||
file = os.path.join(c.root_path, 'tools', 'backlog.txt')
|
file = os.path.join(c.root_path, 'code', 'backlog.txt')
|
||||||
text = utils.read_text(file)
|
text = utils.read_text(file)
|
||||||
urls = text.split('\n')
|
urls = text.split('\n')
|
||||||
urls = [x.split(' ')[0] for x in urls]
|
urls = [x.split(' ')[0] for x in urls]
|
||||||
@ -835,9 +835,6 @@ def update_inspirations(infos):
|
|||||||
|
|
||||||
print('update inspirations')
|
print('update inspirations')
|
||||||
|
|
||||||
inspirations_file = os.path.join(c.root_path, 'inspirations.md')
|
|
||||||
inspirations = '[comment]: # (partly autogenerated content, edit with care, read the manual before)\n# Inspirations\n\n'
|
|
||||||
|
|
||||||
# collect information
|
# collect information
|
||||||
originals = {}
|
originals = {}
|
||||||
for info in infos:
|
for info in infos:
|
||||||
@ -852,8 +849,9 @@ def update_inspirations(infos):
|
|||||||
else:
|
else:
|
||||||
originals[original] = [name]
|
originals[original] = [name]
|
||||||
|
|
||||||
# number of inspirations
|
inspirations_file = os.path.join(c.root_path, 'inspirations.md')
|
||||||
inspirations += '{} games listed as inspirations.\n\n'.format(len(originals))
|
inspirations = '[comment]: # (partly autogenerated content, edit with care, read the manual before)\n'
|
||||||
|
inspirations += '# Inspirations ({})\n\n'.format(len(originals)) # add number of inspirations
|
||||||
|
|
||||||
# iterate through originals alphabetically sorted
|
# iterate through originals alphabetically sorted
|
||||||
for original, names in sorted(originals.items(), key=lambda x: str.casefold(x[0])):
|
for original, names in sorted(originals.items(), key=lambda x: str.casefold(x[0])):
|
||||||
@ -871,9 +869,6 @@ def update_developer(infos):
|
|||||||
|
|
||||||
print('update developer')
|
print('update developer')
|
||||||
|
|
||||||
developer_file = os.path.join(c.root_path, 'developer.md')
|
|
||||||
content = '[comment]: # (partly autogenerated content, edit with care, read the manual before)\n# Developer\n\n'
|
|
||||||
|
|
||||||
# collect information
|
# collect information
|
||||||
developer = {}
|
developer = {}
|
||||||
for info in infos:
|
for info in infos:
|
||||||
@ -886,8 +881,9 @@ def update_developer(infos):
|
|||||||
else:
|
else:
|
||||||
developer[dev] = [name]
|
developer[dev] = [name]
|
||||||
|
|
||||||
# number of developers
|
developer_file = os.path.join(c.root_path, 'developer.md')
|
||||||
content += '{} listed developer(s).\n\n'.format(len(developer))
|
content = '[comment]: # (partly autogenerated content, edit with care, read the manual before)\n'
|
||||||
|
content += '# Developer ({})\n\n'.format(len(developer)) # add number of developer
|
||||||
|
|
||||||
# iterate through developers alphabetically sorted
|
# iterate through developers alphabetically sorted
|
||||||
for dev, names in sorted(developer.items(), key=lambda x: str.casefold(x[0])):
|
for dev, names in sorted(developer.items(), key=lambda x: str.casefold(x[0])):
|
||||||
@ -936,7 +932,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# backlog
|
# backlog
|
||||||
game_urls = osg.extract_links()
|
game_urls = osg.extract_links()
|
||||||
text = utils.read_text(os.path.join(c.root_path, 'tools', 'rejected.txt'))
|
text = utils.read_text(os.path.join(c.root_path, 'code', 'rejected.txt'))
|
||||||
regex = re.compile(r"\((http.*?)\)", re.MULTILINE)
|
regex = re.compile(r"\((http.*?)\)", re.MULTILINE)
|
||||||
matches = regex.findall(text)
|
matches = regex.findall(text)
|
||||||
rejected_urls = []
|
rejected_urls = []
|
||||||
@ -992,5 +988,5 @@ if __name__ == "__main__":
|
|||||||
# check_validity_external_links()
|
# check_validity_external_links()
|
||||||
|
|
||||||
# sort backlog and rejected
|
# sort backlog and rejected
|
||||||
# sort_text_file(os.path.join(c.root_path, 'tools', 'backlog.txt'), 'backlog')
|
# sort_text_file(os.path.join(c.root_path, 'code', 'backlog.txt'), 'backlog')
|
||||||
sort_text_file(os.path.join(c.root_path, 'tools', 'rejected.txt'), 'rejected games list')
|
sort_text_file(os.path.join(c.root_path, 'code', 'rejected.txt'), 'rejected games list')
|
||||||
|
@ -471,7 +471,7 @@ if __name__ == "__main__":
|
|||||||
for our_entry in our_entries:
|
for our_entry in our_entries:
|
||||||
our_name = our_entry['name']
|
our_name = our_entry['name']
|
||||||
|
|
||||||
# only if contains a keyword starting with "inspired by" and not "tools", "framework" or "library"
|
# only if contains a keyword starting with "inspired by" and not "tool", "framework" or "library"
|
||||||
our_keywords = our_entry['keywords']
|
our_keywords = our_entry['keywords']
|
||||||
if not any([x.startswith('inspired by ') for x in our_keywords]):
|
if not any([x.startswith('inspired by ') for x in our_keywords]):
|
||||||
continue
|
continue
|
||||||
|
2
code/requirements.txt
Normal file
2
code/requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
pygithub
|
||||||
|
lark-parser
|
@ -8,5 +8,6 @@ import os
|
|||||||
root_path = os.path.realpath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir))
|
root_path = os.path.realpath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir))
|
||||||
entries_path = os.path.join(root_path, 'entries')
|
entries_path = os.path.join(root_path, 'entries')
|
||||||
tocs_path = os.path.join(entries_path, 'tocs')
|
tocs_path = os.path.join(entries_path, 'tocs')
|
||||||
|
code_path = os.path.join(root_path, 'code')
|
||||||
|
|
||||||
local_properties_file = os.path.join(root_path, 'local.properties')
|
local_properties_file = os.path.join(root_path, 'local.properties')
|
@ -6,24 +6,73 @@ import re
|
|||||||
import os
|
import os
|
||||||
from difflib import SequenceMatcher
|
from difflib import SequenceMatcher
|
||||||
from utils import utils, constants as c
|
from utils import utils, constants as c
|
||||||
|
import lark
|
||||||
|
|
||||||
|
|
||||||
|
class ListingTransformer(lark.Transformer):
|
||||||
|
|
||||||
|
def number(self, x):
|
||||||
|
raise lark.Discard
|
||||||
|
|
||||||
|
def property(self, x):
|
||||||
|
return (x[0].value, x[1].value)
|
||||||
|
|
||||||
|
def name(self, x):
|
||||||
|
return ('name', x[0].value)
|
||||||
|
|
||||||
|
def entries(self, x):
|
||||||
|
d = {}
|
||||||
|
for key, value in x:
|
||||||
|
d[key] = value
|
||||||
|
return d
|
||||||
|
|
||||||
|
def header(self, x):
|
||||||
|
raise lark.Discard
|
||||||
|
|
||||||
|
def start(self, x):
|
||||||
|
return x
|
||||||
|
|
||||||
|
|
||||||
essential_fields = ('Home', 'State', 'Keywords', 'Code repository', 'Code language', 'Code license')
|
essential_fields = ('Home', 'State', 'Keywords', 'Code repository', 'Code language', 'Code license')
|
||||||
valid_fields = ('Home', 'Media', 'State', 'Play', 'Download', 'Platform', 'Keywords', 'Code repository', 'Code language',
|
valid_fields = (
|
||||||
'Code license', 'Code dependencies', 'Assets license', 'Developer', 'Build system', 'Build instructions')
|
'Home', 'Media', 'State', 'Play', 'Download', 'Platform', 'Keywords', 'Code repository', 'Code language',
|
||||||
|
'Code license', 'Code dependencies', 'Assets license', 'Developer', 'Build system', 'Build instructions')
|
||||||
valid_platforms = ('Windows', 'Linux', 'macOS', 'Android', 'iOS', 'Web')
|
valid_platforms = ('Windows', 'Linux', 'macOS', 'Android', 'iOS', 'Web')
|
||||||
recommended_keywords = ('action', 'arcade', 'adventure', 'visual novel', 'sports', 'platform', 'puzzle', 'role playing', 'simulation', 'strategy', 'cards', 'board', 'music', 'educational', 'tool', 'game engine', 'framework', 'library', 'remake')
|
recommended_keywords = (
|
||||||
known_languages = ('AGS Script', 'ActionScript', 'Ada', 'AngelScript', 'Assembly', 'Basic', 'Blender Script', 'BlitzMax', 'C', 'C#', 'C++', 'Clojure', 'CoffeeScript', 'ColdFusion', 'D', 'DM', 'Dart', 'Dia', 'Elm', 'Emacs Lisp', 'F#', 'GDScript', 'Game Maker Script', 'Go', 'Groovy', 'Haskell', 'Haxe', 'Io', 'Java', 'JavaScript', 'Kotlin', 'Lisp', 'Lua', 'MegaGlest Script', 'MoonScript', 'None', 'OCaml', 'Objective-C', 'PHP', 'Pascal', 'Perl', 'Python', 'QuakeC', 'R', "Ren'py", 'Ruby', 'Rust', 'Scala', 'Scheme', 'Script', 'Shell', 'Swift', 'TorqueScript', 'TypeScript', 'Vala', 'Visual Basic', 'XUL', 'ZenScript', 'ooc')
|
'action', 'arcade', 'adventure', 'visual novel', 'sports', 'platform', 'puzzle', 'role playing', 'simulation',
|
||||||
known_licenses = ('2-clause BSD', '3-clause BSD', 'AFL-3.0', 'AGPL-3.0', 'Apache-2.0', 'Artistic License-1.0', 'Artistic License-2.0', 'Boost-1.0', 'CC-BY-NC-3.0', 'CC-BY-NC-SA-2.0', 'CC-BY-NC-SA-3.0', 'CC-BY-SA-3.0', 'CC-BY-NC-SA-4.0', 'CC-BY-SA-4.0', 'CC0', 'Custom', 'EPL-2.0', 'GPL-2.0', 'GPL-3.0', 'IJG', 'ISC', 'Java Research License', 'LGPL-2.0', 'LGPL-2.1', 'LGPL-3.0', 'MAME', 'MIT', 'MPL-1.1', 'MPL-2.0', 'MS-PL', 'MS-RL', 'NetHack General Public License', 'None', 'Proprietary', 'Public domain', 'SWIG license', 'Unlicense', 'WTFPL', 'wxWindows license', 'zlib')
|
'strategy', 'cards', 'board', 'music', 'educational', 'tool', 'game engine', 'framework', 'library', 'remake')
|
||||||
known_multiplayer_modes = ('competitive', 'co-op', 'hotseat', 'LAN', 'local', 'massive', 'matchmaking', 'online', 'split-screen')
|
known_languages = (
|
||||||
|
'AGS Script', 'ActionScript', 'Ada', 'AngelScript', 'Assembly', 'Basic', 'Blender Script', 'BlitzMax', 'C', 'C#',
|
||||||
|
'C++', 'Clojure', 'CoffeeScript', 'ColdFusion', 'D', 'DM', 'Dart', 'Dia', 'Elm', 'Emacs Lisp', 'F#', 'GDScript',
|
||||||
|
'Game Maker Script', 'Go', 'Groovy', 'Haskell', 'Haxe', 'Io', 'Java', 'JavaScript', 'Kotlin', 'Lisp', 'Lua',
|
||||||
|
'MegaGlest Script', 'MoonScript', 'None', 'OCaml', 'Objective-C', 'PHP', 'Pascal', 'Perl', 'Python', 'QuakeC', 'R',
|
||||||
|
"Ren'py", 'Ruby', 'Rust', 'Scala', 'Scheme', 'Script', 'Shell', 'Swift', 'TorqueScript', 'TypeScript', 'Vala',
|
||||||
|
'Visual Basic', 'XUL', 'ZenScript', 'ooc')
|
||||||
|
known_licenses = (
|
||||||
|
'2-clause BSD', '3-clause BSD', 'AFL-3.0', 'AGPL-3.0', 'Apache-2.0', 'Artistic License-1.0', 'Artistic License-2.0',
|
||||||
|
'Boost-1.0', 'CC-BY-NC-3.0', 'CC-BY-NC-SA-2.0', 'CC-BY-NC-SA-3.0', 'CC-BY-SA-3.0', 'CC-BY-NC-SA-4.0',
|
||||||
|
'CC-BY-SA-4.0',
|
||||||
|
'CC0', 'Custom', 'EPL-2.0', 'GPL-2.0', 'GPL-3.0', 'IJG', 'ISC', 'Java Research License', 'LGPL-2.0', 'LGPL-2.1',
|
||||||
|
'LGPL-3.0', 'MAME', 'MIT', 'MPL-1.1', 'MPL-2.0', 'MS-PL', 'MS-RL', 'NetHack General Public License', 'None',
|
||||||
|
'Proprietary', 'Public domain', 'SWIG license', 'Unlicense', 'WTFPL', 'wxWindows license', 'zlib')
|
||||||
|
known_multiplayer_modes = (
|
||||||
|
'competitive', 'co-op', 'hotseat', 'LAN', 'local', 'massive', 'matchmaking', 'online', 'split-screen')
|
||||||
|
|
||||||
# TODO put the abbreviations directly in the name line (parenthesis maybe), that is more natural
|
# TODO put the abbreviations directly in the name line (parenthesis maybe), that is more natural
|
||||||
code_dependencies_aliases = {'Simple DirectMedia Layer': ('SDL', 'SDL2'), 'Simple and Fast Multimedia Library': 'SFML', 'Boost (C++ Libraries)': 'Boost', 'SGE Game Engine': 'SGE'}
|
code_dependencies_aliases = {'Simple DirectMedia Layer': ('SDL', 'SDL2'), 'Simple and Fast Multimedia Library': 'SFML',
|
||||||
code_dependencies_without_entry = {'OpenGL': 'https://www.opengl.org/', 'GLUT': 'https://www.opengl.org/resources/libraries/', 'WebGL': 'https://www.khronos.org/webgl/', 'Unity': 'https://unity.com/solutions/game',
|
'Boost (C++ Libraries)': 'Boost', 'SGE Game Engine': 'SGE'}
|
||||||
'.NET': 'https://dotnet.microsoft.com/', 'Vulkan': 'https://www.khronos.org/vulkan/', 'KDE Frameworks': 'https://kde.org/products/frameworks/'}
|
code_dependencies_without_entry = {'OpenGL': 'https://www.opengl.org/',
|
||||||
|
'GLUT': 'https://www.opengl.org/resources/libraries/',
|
||||||
|
'WebGL': 'https://www.khronos.org/webgl/',
|
||||||
|
'Unity': 'https://unity.com/solutions/game',
|
||||||
|
'.NET': 'https://dotnet.microsoft.com/', 'Vulkan': 'https://www.khronos.org/vulkan/',
|
||||||
|
'KDE Frameworks': 'https://kde.org/products/frameworks/'}
|
||||||
|
|
||||||
regex_sanitize_name = re.compile(r"[^A-Za-z 0-9-+]+")
|
regex_sanitize_name = re.compile(r"[^A-Za-z 0-9-+]+")
|
||||||
regex_sanitize_name_space_eater = re.compile(r" +")
|
regex_sanitize_name_space_eater = re.compile(r" +")
|
||||||
|
|
||||||
|
comment_string = '[comment]: # (partly autogenerated content, edit with care, read the manual before)'
|
||||||
|
|
||||||
|
|
||||||
def name_similarity(a, b):
|
def name_similarity(a, b):
|
||||||
return SequenceMatcher(None, str.casefold(a), str.casefold(b)).ratio()
|
return SequenceMatcher(None, str.casefold(a), str.casefold(b)).ratio()
|
||||||
@ -87,26 +136,27 @@ def parse_entry(content):
|
|||||||
info = {}
|
info = {}
|
||||||
|
|
||||||
# read name
|
# read name
|
||||||
regex = re.compile(r"^# (.*)") # start of content, starting with "# " and then everything until the end of line
|
regex = re.compile(r"^# (.*)") # start of content, starting with "# " and then everything until the end of line
|
||||||
matches = regex.findall(content)
|
matches = regex.findall(content)
|
||||||
if len(matches) != 1 or not matches[0]: # name must be there
|
if len(matches) != 1 or not matches[0]: # name must be there
|
||||||
raise RuntimeError('Name not found in entry "{}" : {}'.format(content, matches))
|
raise RuntimeError('Name not found in entry "{}" : {}'.format(content, matches))
|
||||||
info['name'] = matches[0]
|
info['name'] = matches[0]
|
||||||
|
|
||||||
# read description
|
# read description
|
||||||
regex = re.compile(r"^.*\n\n_(.*)_\n") # third line from top, everything between underscores
|
regex = re.compile(r"^.*\n\n_(.*)_\n") # third line from top, everything between underscores
|
||||||
matches = regex.findall(content)
|
matches = regex.findall(content)
|
||||||
if len(matches) != 1 or not matches[0]: # description must be there
|
if len(matches) != 1 or not matches[0]: # description must be there
|
||||||
raise RuntimeError('Description not found in entry "{}"'.format(content))
|
raise RuntimeError('Description not found in entry "{}"'.format(content))
|
||||||
info['description'] = matches[0]
|
info['description'] = matches[0]
|
||||||
|
|
||||||
# first read all field names
|
# first read all field names
|
||||||
regex = re.compile(r"^- (.*?): ", re.MULTILINE) # start of each line having "- ", then everything until a colon, then ": "
|
regex = re.compile(r"^- (.*?): ",
|
||||||
|
re.MULTILINE) # start of each line having "- ", then everything until a colon, then ": "
|
||||||
fields = regex.findall(content)
|
fields = regex.findall(content)
|
||||||
|
|
||||||
# check that essential fields are there
|
# check that essential fields are there
|
||||||
for field in essential_fields:
|
for field in essential_fields:
|
||||||
if field not in fields: # essential fields must be there
|
if field not in fields: # essential fields must be there
|
||||||
raise RuntimeError('Essential field "{}" missing in entry "{}"'.format(field, info['name']))
|
raise RuntimeError('Essential field "{}" missing in entry "{}"'.format(field, info['name']))
|
||||||
|
|
||||||
# check that all fields are valid fields and are existing in that order
|
# check that all fields are valid fields and are existing in that order
|
||||||
@ -114,19 +164,20 @@ def parse_entry(content):
|
|||||||
for field in fields:
|
for field in fields:
|
||||||
while index < len(valid_fields) and field != valid_fields[index]:
|
while index < len(valid_fields) and field != valid_fields[index]:
|
||||||
index += 1
|
index += 1
|
||||||
if index == len(valid_fields): # must be valid fields and must be in the right order
|
if index == len(valid_fields): # must be valid fields and must be in the right order
|
||||||
raise RuntimeError('Field "{}" in entry "{}" either misspelled or in wrong order'.format(field, info['name']))
|
raise RuntimeError(
|
||||||
|
'Field "{}" in entry "{}" either misspelled or in wrong order'.format(field, info['name']))
|
||||||
|
|
||||||
# iterate over found fields
|
# iterate over found fields
|
||||||
for field in fields:
|
for field in fields:
|
||||||
regex = re.compile(r"- {}: (.*)".format(field))
|
regex = re.compile(r"- {}: (.*)".format(field))
|
||||||
matches = regex.findall(content)
|
matches = regex.findall(content)
|
||||||
if len(matches) != 1: # every field must be present only once
|
if len(matches) != 1: # every field must be present only once
|
||||||
raise RuntimeError('Field "{}" in entry "{}" exist multiple times.'.format(field, info['name']))
|
raise RuntimeError('Field "{}" in entry "{}" exist multiple times.'.format(field, info['name']))
|
||||||
v = matches[0]
|
v = matches[0]
|
||||||
|
|
||||||
# first store as is
|
# first store as is
|
||||||
info[field.lower()+'-raw'] = v
|
info[field.lower() + '-raw'] = v
|
||||||
|
|
||||||
# remove parenthesis with content
|
# remove parenthesis with content
|
||||||
v = re.sub(r'\([^)]*\)', '', v)
|
v = re.sub(r'\([^)]*\)', '', v)
|
||||||
@ -152,7 +203,7 @@ def parse_entry(content):
|
|||||||
|
|
||||||
# check again that essential fields made it through
|
# check again that essential fields made it through
|
||||||
for field in ('home', 'state', 'keywords', 'code language', 'code license'):
|
for field in ('home', 'state', 'keywords', 'code language', 'code license'):
|
||||||
if field not in info: # essential fields must still be inside
|
if field not in info: # essential fields must still be inside
|
||||||
raise RuntimeError('Essential field "{}" empty in entry "{}"'.format(field, info['name']))
|
raise RuntimeError('Essential field "{}" empty in entry "{}"'.format(field, info['name']))
|
||||||
|
|
||||||
# now checks on the content of fields
|
# now checks on the content of fields
|
||||||
@ -160,7 +211,7 @@ def parse_entry(content):
|
|||||||
# name and description should not have spaces at the begin or end
|
# name and description should not have spaces at the begin or end
|
||||||
for field in ('name', 'description'):
|
for field in ('name', 'description'):
|
||||||
v = info[field]
|
v = info[field]
|
||||||
if len(v) != len(v.strip()): # warning about that
|
if len(v) != len(v.strip()): # warning about that
|
||||||
print('Warning: No leading or trailing spaces in field {} in entry "{}"'.format(field, info['name']))
|
print('Warning: No leading or trailing spaces in field {} in entry "{}"'.format(field, info['name']))
|
||||||
|
|
||||||
# state (essential field) must contain either beta or mature but not both, but at least one
|
# state (essential field) must contain either beta or mature but not both, but at least one
|
||||||
@ -182,8 +233,11 @@ def parse_entry(content):
|
|||||||
for field in ['home', 'download', 'play', 'code repository']:
|
for field in ['home', 'download', 'play', 'code repository']:
|
||||||
if field in info:
|
if field in info:
|
||||||
for url in info[field]:
|
for url in info[field]:
|
||||||
if not any([url.startswith(x) for x in ['http://', 'https://', 'git://', 'svn://', 'ftp://', 'bzr://']]):
|
if not any(
|
||||||
raise RuntimeError('URL "{}" in entry "{}" does not start with http/https/git/svn/ftp/bzr'.format(url, info['name']))
|
[url.startswith(x) for x in ['http://', 'https://', 'git://', 'svn://', 'ftp://', 'bzr://']]):
|
||||||
|
raise RuntimeError(
|
||||||
|
'URL "{}" in entry "{}" does not start with http/https/git/svn/ftp/bzr'.format(url,
|
||||||
|
info['name']))
|
||||||
if ' ' in url:
|
if ' ' in url:
|
||||||
raise RuntimeError('URL "{}" in entry "{}" contains a space'.format(url, info['name']))
|
raise RuntimeError('URL "{}" in entry "{}" contains a space'.format(url, info['name']))
|
||||||
|
|
||||||
@ -202,8 +256,10 @@ def parse_entry(content):
|
|||||||
for platform in info['platform']:
|
for platform in info['platform']:
|
||||||
while index < len(valid_platforms) and platform != valid_platforms[index]:
|
while index < len(valid_platforms) and platform != valid_platforms[index]:
|
||||||
index += 1
|
index += 1
|
||||||
if index == len(valid_platforms): # must be valid platforms and must be in that order
|
if index == len(valid_platforms): # must be valid platforms and must be in that order
|
||||||
raise RuntimeError('Platform tag "{}" in entry "{}" either misspelled or in wrong order'.format(platform, info['name']))
|
raise RuntimeError(
|
||||||
|
'Platform tag "{}" in entry "{}" either misspelled or in wrong order'.format(platform,
|
||||||
|
info['name']))
|
||||||
|
|
||||||
# there must be at least one keyword
|
# there must be at least one keyword
|
||||||
if 'keywords' not in info:
|
if 'keywords' not in info:
|
||||||
@ -215,20 +271,22 @@ def parse_entry(content):
|
|||||||
if recommended_keyword in info['keywords']:
|
if recommended_keyword in info['keywords']:
|
||||||
fail = False
|
fail = False
|
||||||
break
|
break
|
||||||
if fail: # must be at least one recommended keyword
|
if fail: # must be at least one recommended keyword
|
||||||
raise RuntimeError('Entry "{}" contains no recommended keyword'.format(info['name']))
|
raise RuntimeError('Entry "{}" contains no recommended keyword'.format(info['name']))
|
||||||
|
|
||||||
# languages should be known
|
# languages should be known
|
||||||
languages = info['code language']
|
languages = info['code language']
|
||||||
for language in languages:
|
for language in languages:
|
||||||
if language not in known_languages:
|
if language not in known_languages:
|
||||||
print('Warning: Language {} in entry "{}" is not a known language. Misspelled or new?'.format(language, info['name']))
|
print('Warning: Language {} in entry "{}" is not a known language. Misspelled or new?'.format(language,
|
||||||
|
info['name']))
|
||||||
|
|
||||||
# licenses should be known
|
# licenses should be known
|
||||||
licenses = info['code license']
|
licenses = info['code license']
|
||||||
for license in licenses:
|
for license in licenses:
|
||||||
if license not in known_licenses:
|
if license not in known_licenses:
|
||||||
print('Warning: License {} in entry "{}" is not a known license. Misspelled or new?'.format(license, info['name']))
|
print('Warning: License {} in entry "{}" is not a known license. Misspelled or new?'.format(license,
|
||||||
|
info['name']))
|
||||||
|
|
||||||
return info
|
return info
|
||||||
|
|
||||||
@ -295,3 +353,57 @@ def extract_links():
|
|||||||
urls.add(url)
|
urls.add(url)
|
||||||
urls = sorted(list(urls), key=str.casefold)
|
urls = sorted(list(urls), key=str.casefold)
|
||||||
return urls
|
return urls
|
||||||
|
|
||||||
|
|
||||||
|
def read_and_parse(content_file, grammar_file, transformer):
|
||||||
|
"""
|
||||||
|
|
||||||
|
:param content_file:
|
||||||
|
:param grammar_file:
|
||||||
|
:param transformer:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
content = utils.read_text(content_file)
|
||||||
|
grammar = utils.read_text(grammar_file)
|
||||||
|
parser = lark.Lark(grammar, debug=False)
|
||||||
|
tree = parser.parse(content)
|
||||||
|
return transformer.transform(tree)
|
||||||
|
|
||||||
|
|
||||||
|
def read_developer_info():
|
||||||
|
"""
|
||||||
|
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
developer_file = os.path.join(c.root_path, 'developer.md')
|
||||||
|
grammar_file = os.path.join(c.code_path, 'grammar_listing.lark')
|
||||||
|
transformer = ListingTransformer()
|
||||||
|
return read_and_parse(developer_file, grammar_file, transformer)
|
||||||
|
|
||||||
|
|
||||||
|
def write_developer_info(developers):
|
||||||
|
"""
|
||||||
|
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
developer_file = os.path.join(c.root_path, 'developer.md')
|
||||||
|
|
||||||
|
|
||||||
|
def read_inspirations_info():
|
||||||
|
"""
|
||||||
|
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
inspirations_file = os.path.join(c.root_path, 'inspirations.md')
|
||||||
|
grammar_file = os.path.join(c.code_path, 'grammar_listing.lark')
|
||||||
|
transformer = ListingTransformer()
|
||||||
|
return read_and_parse(inspirations_file, grammar_file, transformer)
|
||||||
|
|
||||||
|
|
||||||
|
def write_inspirations_info(inspirations):
|
||||||
|
"""
|
||||||
|
|
||||||
|
:param inspirations:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
inspirations_file = os.path.join(c.root_path, 'inspirations.md')
|
||||||
|
102
developer.md
102
developer.md
@ -1,7 +1,10 @@
|
|||||||
[comment]: # (partly autogenerated content, edit with care, read the manual before)
|
[comment]: # (partly autogenerated content, edit with care, read the manual before)
|
||||||
# Developer
|
# Developer (336)
|
||||||
|
|
||||||
336 listed developer(s).
|
## Andy Southgate (1)
|
||||||
|
|
||||||
|
- Games: Adanaxis
|
||||||
|
- Organization: Mushware Limited
|
||||||
|
|
||||||
## Akira Higuchi (1)
|
## Akira Higuchi (1)
|
||||||
|
|
||||||
@ -54,6 +57,7 @@
|
|||||||
## Andreas Røsdal (1)
|
## Andreas Røsdal (1)
|
||||||
|
|
||||||
- Games: OpenRTS
|
- Games: OpenRTS
|
||||||
|
- Contact: rtsfan@SF
|
||||||
|
|
||||||
## Andy Southgate (1)
|
## Andy Southgate (1)
|
||||||
|
|
||||||
@ -62,6 +66,7 @@
|
|||||||
## Anthony Mariette Louis Liekens (1)
|
## Anthony Mariette Louis Liekens (1)
|
||||||
|
|
||||||
- Games: Qonk
|
- Games: Qonk
|
||||||
|
- Contact: aliekens@SF
|
||||||
|
|
||||||
## Antoine Morineau (1)
|
## Antoine Morineau (1)
|
||||||
|
|
||||||
@ -114,6 +119,7 @@
|
|||||||
## Bill Kendrick (3)
|
## Bill Kendrick (3)
|
||||||
|
|
||||||
- Games: Gem Drop X, ICBM3D, Tux Paint
|
- Games: Gem Drop X, ICBM3D, Tux Paint
|
||||||
|
- Organization: New Breed Software
|
||||||
|
|
||||||
## Bjørn Hansen (1)
|
## Bjørn Hansen (1)
|
||||||
|
|
||||||
@ -150,6 +156,7 @@
|
|||||||
## Chris Hopp (2)
|
## Chris Hopp (2)
|
||||||
|
|
||||||
- Games: buggyGame, Pillows
|
- Games: buggyGame, Pillows
|
||||||
|
- Home: https://fydo.net/
|
||||||
|
|
||||||
## Chris Laurel (1)
|
## Chris Laurel (1)
|
||||||
|
|
||||||
@ -190,6 +197,7 @@
|
|||||||
## Daniel Roux (1)
|
## Daniel Roux (1)
|
||||||
|
|
||||||
- Games: Colobot: Gold Edition
|
- Games: Colobot: Gold Edition
|
||||||
|
- Organization: Epsitec
|
||||||
|
|
||||||
## Daniele Napolitano (1)
|
## Daniele Napolitano (1)
|
||||||
|
|
||||||
@ -202,10 +210,17 @@
|
|||||||
## darkrose (1)
|
## darkrose (1)
|
||||||
|
|
||||||
- Games: Turious
|
- Games: Turious
|
||||||
|
- Contact: darkrose@GL
|
||||||
|
|
||||||
|
## Jan-Otto Kröpke (1)
|
||||||
|
|
||||||
|
- Games: 2Moons Browsergame Engine
|
||||||
|
- Contact: jkroepke@GH
|
||||||
|
|
||||||
## David Gibbs (1)
|
## David Gibbs (1)
|
||||||
|
|
||||||
- Games: Omega-rpg
|
- Games: Omega-rpg
|
||||||
|
- Contact: dagibbs@SF
|
||||||
|
|
||||||
## David Igreja (1)
|
## David Igreja (1)
|
||||||
|
|
||||||
@ -251,9 +266,20 @@
|
|||||||
|
|
||||||
- Games: Ri-li
|
- Games: Ri-li
|
||||||
|
|
||||||
|
## Piwai (1)
|
||||||
|
|
||||||
|
- Games: 2H4U
|
||||||
|
- Contact: insa_piwai@SF
|
||||||
|
|
||||||
|
## Kilgore Trout Mask Replicant (1)
|
||||||
|
|
||||||
|
- Games: 1oom
|
||||||
|
- Contact: KilgoreTroutMaskReplicant@GL
|
||||||
|
|
||||||
## Don Llopis (1)
|
## Don Llopis (1)
|
||||||
|
|
||||||
- Games: XInvaders 3D
|
- Games: XInvaders 3D
|
||||||
|
- Contact: del23@SF
|
||||||
|
|
||||||
## Don Woods (1)
|
## Don Woods (1)
|
||||||
|
|
||||||
@ -270,6 +296,7 @@
|
|||||||
## Eben Upton (1)
|
## Eben Upton (1)
|
||||||
|
|
||||||
- Games: Ajax3d
|
- Games: Ajax3d
|
||||||
|
- Contact: ebenupton@SF
|
||||||
|
|
||||||
## Ed James (1)
|
## Ed James (1)
|
||||||
|
|
||||||
@ -290,6 +317,7 @@
|
|||||||
## Eric Gillespie (1)
|
## Eric Gillespie (1)
|
||||||
|
|
||||||
- Games: Nighthawk
|
- Games: Nighthawk
|
||||||
|
- Contact: viking667@SF
|
||||||
|
|
||||||
## Eric House (1)
|
## Eric House (1)
|
||||||
|
|
||||||
@ -374,6 +402,7 @@
|
|||||||
## Gabor Torok (1)
|
## Gabor Torok (1)
|
||||||
|
|
||||||
- Games: Abe's Amazing Adventure
|
- Games: Abe's Amazing Adventure
|
||||||
|
- Contact: gabortorok@SF
|
||||||
|
|
||||||
## Ghoulsblade (1)
|
## Ghoulsblade (1)
|
||||||
|
|
||||||
@ -382,6 +411,7 @@
|
|||||||
## Gil Megidish (1)
|
## Gil Megidish (1)
|
||||||
|
|
||||||
- Games: Heart of the Alien
|
- Games: Heart of the Alien
|
||||||
|
- Contact: gilm@SF
|
||||||
|
|
||||||
## Gnome (2)
|
## Gnome (2)
|
||||||
|
|
||||||
@ -410,6 +440,7 @@
|
|||||||
## Haeric (1)
|
## Haeric (1)
|
||||||
|
|
||||||
- Games: phpRPG
|
- Games: phpRPG
|
||||||
|
- Contact: haeric@SF
|
||||||
|
|
||||||
## Hagish (1)
|
## Hagish (1)
|
||||||
|
|
||||||
@ -442,10 +473,12 @@
|
|||||||
## Holger Schäkel (1)
|
## Holger Schäkel (1)
|
||||||
|
|
||||||
- Games: FooBillard++
|
- Games: FooBillard++
|
||||||
|
- Contact: holger110462@SF
|
||||||
|
|
||||||
## Horst Kevin (1)
|
## Horst Kevin (1)
|
||||||
|
|
||||||
- Games: Fictional Air Combat
|
- Games: Fictional Air Combat
|
||||||
|
- Contact: horstkevin@SF
|
||||||
|
|
||||||
## Hubert Lamontagne (1)
|
## Hubert Lamontagne (1)
|
||||||
|
|
||||||
@ -474,6 +507,7 @@
|
|||||||
## Jacob L. Anawalt (1)
|
## Jacob L. Anawalt (1)
|
||||||
|
|
||||||
- Games: Batalla Naval
|
- Games: Batalla Naval
|
||||||
|
- Contact: jlanawalt@SF
|
||||||
|
|
||||||
## James Canete (1)
|
## James Canete (1)
|
||||||
|
|
||||||
@ -510,6 +544,7 @@
|
|||||||
## Jason Rohrer (8)
|
## Jason Rohrer (8)
|
||||||
|
|
||||||
- Games: Between, Cultivation, Gravitation, One Hour One Life, Passage, Primrose, Sleep Is Death, Transcend
|
- Games: Between, Cultivation, Gravitation, One Hour One Life, Passage, Primrose, Sleep Is Death, Transcend
|
||||||
|
- Contact: jcr13@SF
|
||||||
|
|
||||||
## Jay Fenlason (1)
|
## Jay Fenlason (1)
|
||||||
|
|
||||||
@ -534,6 +569,7 @@
|
|||||||
## Jens Fursund (1)
|
## Jens Fursund (1)
|
||||||
|
|
||||||
- Games: Qonk
|
- Games: Qonk
|
||||||
|
- Contact: fursund@SF
|
||||||
|
|
||||||
## Jeremy Sheeley (1)
|
## Jeremy Sheeley (1)
|
||||||
|
|
||||||
@ -546,6 +582,7 @@
|
|||||||
## Jetro Lauha (1)
|
## Jetro Lauha (1)
|
||||||
|
|
||||||
- Games: Pathogen Warrior
|
- Games: Pathogen Warrior
|
||||||
|
- Home: https://jet.ro/
|
||||||
|
|
||||||
## Jim Gilloghy (1)
|
## Jim Gilloghy (1)
|
||||||
|
|
||||||
@ -554,6 +591,7 @@
|
|||||||
## Jimmy Christensen (2)
|
## Jimmy Christensen (2)
|
||||||
|
|
||||||
- Games: OldSkool Gravity Game, SDL-Ball
|
- Games: OldSkool Gravity Game, SDL-Ball
|
||||||
|
- Contact: dusteddk@SF, DusteDdk@GH
|
||||||
|
|
||||||
## Joan Queralt Molina (1)
|
## Joan Queralt Molina (1)
|
||||||
|
|
||||||
@ -590,6 +628,7 @@
|
|||||||
## John-Paul Gignac (1)
|
## John-Paul Gignac (1)
|
||||||
|
|
||||||
- Games: Pathological
|
- Games: Pathological
|
||||||
|
- Contact: jjgignac@SF
|
||||||
|
|
||||||
## Jonas Eschenburg (1)
|
## Jonas Eschenburg (1)
|
||||||
|
|
||||||
@ -610,6 +649,7 @@
|
|||||||
## Joseph Hewitt (3)
|
## Joseph Hewitt (3)
|
||||||
|
|
||||||
- Games: Dungeon Monkey Eternal, GearHead, GearHead 2
|
- Games: Dungeon Monkey Eternal, GearHead, GearHead 2
|
||||||
|
- Contact: jwvhewitt@GH, jwvhewitt@SF
|
||||||
|
|
||||||
## Jujucece (1)
|
## Jujucece (1)
|
||||||
|
|
||||||
@ -635,6 +675,30 @@
|
|||||||
|
|
||||||
- Games: Blasphemer
|
- Games: Blasphemer
|
||||||
|
|
||||||
|
## Jerry Jiang (1)
|
||||||
|
|
||||||
|
- Games: 2048
|
||||||
|
- Home: https://tpcstld.me/
|
||||||
|
- Contact: tpcstld@GH
|
||||||
|
|
||||||
|
## Gabriele Cirulli (1)
|
||||||
|
|
||||||
|
- Games: 2048
|
||||||
|
- Home: https://www.gabrielecirulli.com/
|
||||||
|
- Contact: gabrielecirulli@GH
|
||||||
|
|
||||||
|
## Daniel Ginovker (1)
|
||||||
|
|
||||||
|
- Games: 2006-rebotted
|
||||||
|
- Home: https://dginovker.github.io/
|
||||||
|
- Contact: dginovker@GH
|
||||||
|
|
||||||
|
## lo-th (1)
|
||||||
|
|
||||||
|
- Games: 3d.city
|
||||||
|
- Home: http://lo-th.github.io/labs/index.html
|
||||||
|
- Contact: lo-th@GH
|
||||||
|
|
||||||
## Jérôme Bolot (1)
|
## Jérôme Bolot (1)
|
||||||
|
|
||||||
- Games: TecnoballZ
|
- Games: TecnoballZ
|
||||||
@ -674,6 +738,7 @@
|
|||||||
## krys (1)
|
## krys (1)
|
||||||
|
|
||||||
- Games: Krystal Drop
|
- Games: Krystal Drop
|
||||||
|
- Contact: krys@SF
|
||||||
|
|
||||||
## Laurence R. Brothers (1)
|
## Laurence R. Brothers (1)
|
||||||
|
|
||||||
@ -698,6 +763,7 @@
|
|||||||
## Loek (1)
|
## Loek (1)
|
||||||
|
|
||||||
- Games: Qonk
|
- Games: Qonk
|
||||||
|
- Contact: exinion@SF
|
||||||
|
|
||||||
## Lori Angela Nagel (1)
|
## Lori Angela Nagel (1)
|
||||||
|
|
||||||
@ -710,6 +776,7 @@
|
|||||||
## LucKey Productions (1)
|
## LucKey Productions (1)
|
||||||
|
|
||||||
- Games: Quatter
|
- Games: Quatter
|
||||||
|
- Home: https://luckeyproductions.nl/, https://libregamewiki.org/LucKey_Productions
|
||||||
|
|
||||||
## Luismv (1)
|
## Luismv (1)
|
||||||
|
|
||||||
@ -738,6 +805,7 @@
|
|||||||
## Marios Visvardis (1)
|
## Marios Visvardis (1)
|
||||||
|
|
||||||
- Games: MUSoSu
|
- Games: MUSoSu
|
||||||
|
- Contact: marios_v@SF
|
||||||
|
|
||||||
## Mark Harman (1)
|
## Mark Harman (1)
|
||||||
|
|
||||||
@ -766,6 +834,7 @@
|
|||||||
## Mateusz Viste (2)
|
## Mateusz Viste (2)
|
||||||
|
|
||||||
- Games: Atomiks, Simple Sokoban
|
- Games: Atomiks, Simple Sokoban
|
||||||
|
- Contact: mv_fox@SF
|
||||||
|
|
||||||
## Mathew Velasquez (1)
|
## Mathew Velasquez (1)
|
||||||
|
|
||||||
@ -850,6 +919,7 @@
|
|||||||
## Mikey Lubker (1)
|
## Mikey Lubker (1)
|
||||||
|
|
||||||
- Games: Snowballz
|
- Games: Snowballz
|
||||||
|
- Contact: ratchet@SF
|
||||||
|
|
||||||
## Mikhail Kourinny (1)
|
## Mikhail Kourinny (1)
|
||||||
|
|
||||||
@ -858,6 +928,7 @@
|
|||||||
## Mikkhail Kurin (1)
|
## Mikkhail Kurin (1)
|
||||||
|
|
||||||
- Games: AstroMenace
|
- Games: AstroMenace
|
||||||
|
- Contact: viewizard@SF
|
||||||
|
|
||||||
## Mohammed Morsi (1)
|
## Mohammed Morsi (1)
|
||||||
|
|
||||||
@ -878,6 +949,7 @@
|
|||||||
## New Breed Software (2)
|
## New Breed Software (2)
|
||||||
|
|
||||||
- Games: 3D Pong, Tux Paint
|
- Games: 3D Pong, Tux Paint
|
||||||
|
- Home: http://newbreedsoftware.com/
|
||||||
|
|
||||||
## Nicolas Hadacek (1)
|
## Nicolas Hadacek (1)
|
||||||
|
|
||||||
@ -890,6 +962,7 @@
|
|||||||
## Norbert Drexl (1)
|
## Norbert Drexl (1)
|
||||||
|
|
||||||
- Games: GL-117
|
- Games: GL-117
|
||||||
|
- Contact: heptargon@SF
|
||||||
|
|
||||||
## Oliver Baker (1)
|
## Oliver Baker (1)
|
||||||
|
|
||||||
@ -942,6 +1015,7 @@
|
|||||||
## Paul Elms (1)
|
## Paul Elms (1)
|
||||||
|
|
||||||
- Games: Froggix
|
- Games: Froggix
|
||||||
|
- Contact: scifly@SF
|
||||||
|
|
||||||
## Paul Hicks (1)
|
## Paul Hicks (1)
|
||||||
|
|
||||||
@ -950,6 +1024,7 @@
|
|||||||
## Paul Mueller (1)
|
## Paul Mueller (1)
|
||||||
|
|
||||||
- Games: Free Space Colonization
|
- Games: Free Space Colonization
|
||||||
|
- Contact: bitnapper@SF
|
||||||
|
|
||||||
## Paul Rouget (1)
|
## Paul Rouget (1)
|
||||||
|
|
||||||
@ -966,10 +1041,12 @@
|
|||||||
## Peter Rogers (1)
|
## Peter Rogers (1)
|
||||||
|
|
||||||
- Games: PGU
|
- Games: PGU
|
||||||
|
- Contact: parogers@GH
|
||||||
|
|
||||||
## Phil Hassey (1)
|
## Phil Hassey (1)
|
||||||
|
|
||||||
- Games: PGU
|
- Games: PGU
|
||||||
|
- Home: http://www.philhassey.com/blog/
|
||||||
|
|
||||||
## Philip Dorrell (1)
|
## Philip Dorrell (1)
|
||||||
|
|
||||||
@ -982,6 +1059,7 @@
|
|||||||
## Philippe Bousquet (1)
|
## Philippe Bousquet (1)
|
||||||
|
|
||||||
- Games: DarkCity
|
- Games: DarkCity
|
||||||
|
- Contact: darken33@SF
|
||||||
|
|
||||||
## Piotr Pawlow (1)
|
## Piotr Pawlow (1)
|
||||||
|
|
||||||
@ -1002,6 +1080,7 @@
|
|||||||
## Quetzy Garcia (1)
|
## Quetzy Garcia (1)
|
||||||
|
|
||||||
- Games: PSY PONG 3D
|
- Games: PSY PONG 3D
|
||||||
|
- Contact: quetzyg@SF
|
||||||
|
|
||||||
## Rafal Zawadzki (1)
|
## Rafal Zawadzki (1)
|
||||||
|
|
||||||
@ -1022,10 +1101,12 @@
|
|||||||
## Ricardo Cruz (1)
|
## Ricardo Cruz (1)
|
||||||
|
|
||||||
- Games: Microracers
|
- Games: Microracers
|
||||||
|
- Contact: rmcruz@SF
|
||||||
|
|
||||||
## Ricardo Quesada (1)
|
## Ricardo Quesada (1)
|
||||||
|
|
||||||
- Games: Batalla Naval
|
- Games: Batalla Naval
|
||||||
|
- Contact: riq@SF
|
||||||
|
|
||||||
## Richard Langridge (1)
|
## Richard Langridge (1)
|
||||||
|
|
||||||
@ -1034,6 +1115,7 @@
|
|||||||
## Richard Sweeney (1)
|
## Richard Sweeney (1)
|
||||||
|
|
||||||
- Games: Project: Starfighter
|
- Games: Project: Starfighter
|
||||||
|
- Organization: Parallel Realities
|
||||||
|
|
||||||
## Richard T. Jones (1)
|
## Richard T. Jones (1)
|
||||||
|
|
||||||
@ -1046,14 +1128,17 @@
|
|||||||
## Rob Norman (1)
|
## Rob Norman (1)
|
||||||
|
|
||||||
- Games: phpRPG
|
- Games: phpRPG
|
||||||
|
- Contact: stinx@SF
|
||||||
|
|
||||||
## Robert Noll (1)
|
## Robert Noll (1)
|
||||||
|
|
||||||
- Games: StressFreeZone
|
- Games: StressFreeZone
|
||||||
|
- Contact: doomhammer@SF
|
||||||
|
|
||||||
## Robert Schuster (1)
|
## Robert Schuster (1)
|
||||||
|
|
||||||
- Games: Qonk
|
- Games: Qonk
|
||||||
|
- Contact: thebohemian@SF
|
||||||
|
|
||||||
## Roman Belov (1)
|
## Roman Belov (1)
|
||||||
|
|
||||||
@ -1106,6 +1191,7 @@
|
|||||||
## Sasha Bilton (1)
|
## Sasha Bilton (1)
|
||||||
|
|
||||||
- Games: Freya Game Engine
|
- Games: Freya Game Engine
|
||||||
|
- Contact: pond@SF
|
||||||
|
|
||||||
## Shard (1)
|
## Shard (1)
|
||||||
|
|
||||||
@ -1118,6 +1204,7 @@
|
|||||||
## Sheldon Simms (1)
|
## Sheldon Simms (1)
|
||||||
|
|
||||||
- Games: Omega-rpg
|
- Games: Omega-rpg
|
||||||
|
- Contact: wsxyz@SF
|
||||||
|
|
||||||
## SiENcE (1)
|
## SiENcE (1)
|
||||||
|
|
||||||
@ -1190,10 +1277,12 @@
|
|||||||
## Stephen Sweeney (2)
|
## Stephen Sweeney (2)
|
||||||
|
|
||||||
- Games: Blob Wars Episode 2 : Blob And Conquer, Project: Starfighter
|
- Games: Blob Wars Episode 2 : Blob And Conquer, Project: Starfighter
|
||||||
|
- Organization: Parallel Realities
|
||||||
|
|
||||||
## Stephen Thorne (1)
|
## Stephen Thorne (1)
|
||||||
|
|
||||||
- Games: Pathological
|
- Games: Pathological
|
||||||
|
- Contact: jerub@SF
|
||||||
|
|
||||||
## Steve Baker (1)
|
## Steve Baker (1)
|
||||||
|
|
||||||
@ -1250,6 +1339,7 @@
|
|||||||
## Thorsten Kohnhorst (1)
|
## Thorsten Kohnhorst (1)
|
||||||
|
|
||||||
- Games: Krank
|
- Games: Krank
|
||||||
|
- Contact: monsterkodi@SF
|
||||||
|
|
||||||
## Tim Edmonds (1)
|
## Tim Edmonds (1)
|
||||||
|
|
||||||
@ -1262,6 +1352,7 @@
|
|||||||
## Timothy Chung (1)
|
## Timothy Chung (1)
|
||||||
|
|
||||||
- Games: phpRPG
|
- Games: phpRPG
|
||||||
|
- Contact: ttschung@SF
|
||||||
|
|
||||||
## Toby A. Inkster (1)
|
## Toby A. Inkster (1)
|
||||||
|
|
||||||
@ -1270,6 +1361,7 @@
|
|||||||
## Toddd (1)
|
## Toddd (1)
|
||||||
|
|
||||||
- Games: Open Quartz
|
- Games: Open Quartz
|
||||||
|
- Contact: rsmd@SF
|
||||||
|
|
||||||
## Tom Beaumont (1)
|
## Tom Beaumont (1)
|
||||||
|
|
||||||
@ -1286,6 +1378,7 @@
|
|||||||
## Tony Oakden (1)
|
## Tony Oakden (1)
|
||||||
|
|
||||||
- Games: Go Ollie!
|
- Games: Go Ollie!
|
||||||
|
- Organization: Charlie Dog Games
|
||||||
|
|
||||||
## Troels Kofoed Jacobsen (1)
|
## Troels Kofoed Jacobsen (1)
|
||||||
|
|
||||||
@ -1298,6 +1391,7 @@
|
|||||||
## UPi (1)
|
## UPi (1)
|
||||||
|
|
||||||
- Games: OpenMortal
|
- Games: OpenMortal
|
||||||
|
- Contact: upi@SF
|
||||||
|
|
||||||
## Vianney Lecroart (1)
|
## Vianney Lecroart (1)
|
||||||
|
|
||||||
@ -1322,6 +1416,7 @@
|
|||||||
## William Tanksley (1)
|
## William Tanksley (1)
|
||||||
|
|
||||||
- Games: Omega-rpg
|
- Games: Omega-rpg
|
||||||
|
- Contact: wtanksle@SF
|
||||||
|
|
||||||
## XBlast development team (1)
|
## XBlast development team (1)
|
||||||
|
|
||||||
@ -1334,10 +1429,13 @@
|
|||||||
## Yura (1)
|
## Yura (1)
|
||||||
|
|
||||||
- Games: Rescue! Max
|
- Games: Rescue! Max
|
||||||
|
- Contact: yuranet@SF
|
||||||
|
|
||||||
## Yuri D'Elia (2)
|
## Yuri D'Elia (2)
|
||||||
|
|
||||||
- Games: FLTK Recycling Game!, Garith
|
- Games: FLTK Recycling Game!, Garith
|
||||||
|
- Home: http://www.thregr.org/~wavexx/
|
||||||
|
- Contact: wavexx@GL
|
||||||
|
|
||||||
## Zack Middleton (1)
|
## Zack Middleton (1)
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ _Master of Orion (1993) game engine recreation._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: Allegro, SDL, SDL2
|
- Code dependencies: Allegro, SDL, SDL2
|
||||||
|
- Developer: Kilgore Trout Mask Replicant
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ _Remake of Runescape Classic._
|
|||||||
- Code repository: https://github.com/dginovker/2006rebotted.git
|
- Code repository: https://github.com/dginovker/2006rebotted.git
|
||||||
- Code language: Java
|
- Code language: Java
|
||||||
- Code license: 2-clause BSD
|
- Code license: 2-clause BSD
|
||||||
|
- Developer: Daniel Ginovker
|
||||||
|
|
||||||
Open source 2006 Runescape emulation with botting.
|
Open source 2006 Runescape emulation with botting.
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ _Sliding block puzzle game._
|
|||||||
- Code language: JavaScript
|
- Code language: JavaScript
|
||||||
- Code license: MIT
|
- Code license: MIT
|
||||||
- Assets license: MIT (very few assets)
|
- Assets license: MIT (very few assets)
|
||||||
|
- Developer: Gabriele Cirulli, Jerry Jiang (Android port)
|
||||||
|
|
||||||
Port to Android: https://github.com/tpcstld/2048
|
Port to Android: https://github.com/tpcstld/2048
|
||||||
|
|
||||||
|
@ -10,5 +10,6 @@ _Mix between a Tetris-like game and a wall breaker._
|
|||||||
- Code language: C++
|
- Code language: C++
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
|
- Developer: Piwai
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -10,6 +10,7 @@ _Space browsergame framework._
|
|||||||
- Code repository: https://github.com/jkroepke/2Moons.git (archived), https://github.com/steemnova/steemnova.git (+)
|
- Code repository: https://github.com/jkroepke/2Moons.git (archived), https://github.com/steemnova/steemnova.git (+)
|
||||||
- Code language: PHP, JavaScript
|
- Code language: PHP, JavaScript
|
||||||
- Code license: MIT
|
- Code license: MIT
|
||||||
|
- Developer: Jan-Otto Kröpke
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ _WebGL version of micropolisJS._
|
|||||||
- Code language: JavaScript
|
- Code language: JavaScript
|
||||||
- Code license: GPL-3.0 (with additional terms)
|
- Code license: GPL-3.0 (with additional terms)
|
||||||
- Code dependencies: SEA3D, Three.js
|
- Code dependencies: SEA3D, Three.js
|
||||||
|
- Developer: lo-th
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ _Side scrolling platform game._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Developer: Gabor Torok (gabortorok@SF)
|
- Developer: Gabor Torok
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,6 +10,6 @@ _Deep space first-person shooter._
|
|||||||
- Code license: GPL-2.0 (non-free file in the commercial version)
|
- Code license: GPL-2.0 (non-free file in the commercial version)
|
||||||
- Code dependencies: GLUT
|
- Code dependencies: GLUT
|
||||||
- Assets license: GPL-2.0
|
- Assets license: GPL-2.0
|
||||||
- Developer: Mushware Limited (Andy Southgate)
|
- Developer: Andy Southgate
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -10,6 +10,6 @@ _Remake of Zarch._
|
|||||||
- Code repository: https://gitlab.com/osgames/ajax3d.git (conversion of cvs), http://ajax3d.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/ajax3d.git (conversion of cvs), http://ajax3d.cvs.sourceforge.net (cvs)
|
||||||
- Code language: JavaScript
|
- Code language: JavaScript
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Eben Upton (ebenupton@SF)
|
- Developer: Eben Upton
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -9,7 +9,7 @@ _3D space scroll-shooter with spaceship upgrade possibilities._
|
|||||||
- Code repository: https://github.com/viewizard/astromenace.git
|
- Code repository: https://github.com/viewizard/astromenace.git
|
||||||
- Code language: C++, C
|
- Code language: C++, C
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Developer: Mikkhail Kurin (Viewizard)
|
- Developer: Mikkhail Kurin
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ _Battleship game._
|
|||||||
- Code repository: https://gitlab.com/osgames/batnav.git (import of cvs), http://batnav.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/batnav.git (import of cvs), http://batnav.cvs.sourceforge.net (cvs)
|
||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Ricardo Quesada (riq@SF), Jacob L. Anawalt (jlanawalt@SF)
|
- Developer: Ricardo Quesada, Jacob L. Anawalt
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ _Blob Wars: Blob And Conquer is a 3D action game created by Parallel Realities._
|
|||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Assets license: commercial
|
- Assets license: commercial
|
||||||
- Developer: Stephen Sweeney (Parallel Realities)
|
- Developer: Stephen Sweeney
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ _Real-time strategy game, where you can program your units (bots) in a language
|
|||||||
- Code language: C++
|
- Code language: C++
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: SDL2
|
- Code dependencies: SDL2
|
||||||
- Developer: Daniel Roux (Epsitec), TerranovaTeam
|
- Developer: Daniel Roux, TerranovaTeam
|
||||||
|
|
||||||
Updated version of the Colobot original source code.
|
Updated version of the Colobot original source code.
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ _DarkCity is a MMORPG game, in text mode on the Internet._
|
|||||||
- Code repository: https://gitlab.com/osgames/darkcity.git (backup of svn), https://svn.code.sf.net/p/darkcity/code (svn)
|
- Code repository: https://gitlab.com/osgames/darkcity.git (backup of svn), https://svn.code.sf.net/p/darkcity/code (svn)
|
||||||
- Code language: PHP
|
- Code language: PHP
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Developer: Philippe Bousquet (darken33)
|
- Developer: Philippe Bousquet
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ _Third game in the dungeon monkey series._
|
|||||||
- Code language: Python
|
- Code language: Python
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: pygame, pyglet
|
- Code dependencies: pygame, pyglet
|
||||||
- Developer: Joseph Hewitt (jwvhewitt)
|
- Developer: Joseph Hewitt
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ _A turn based combat-oriented tactics RPG._
|
|||||||
- Code repository: https://gitlab.com/osgames/dm-unlimited.git (conversion of svn), https://svn.code.sf.net/p/dmonkey/code (svn)
|
- Code repository: https://gitlab.com/osgames/dm-unlimited.git (conversion of svn), https://svn.code.sf.net/p/dmonkey/code (svn)
|
||||||
- Code language: Pascal
|
- Code language: Pascal
|
||||||
- Code license: LGPL-2.1
|
- Code license: LGPL-2.1
|
||||||
|
- Developer: Joseph Hewitt
|
||||||
|
|
||||||
Download of version 1.001 slightly different from last state of SVN repository.
|
Download of version 1.001 slightly different from last state of SVN repository.
|
||||||
|
|
||||||
|
@ -8,6 +8,6 @@ _Flight simulator that does not simulate real aircraft or historical war scenari
|
|||||||
- Code repository: https://svn.code.sf.net/p/facsimulation/code (svn)
|
- Code repository: https://svn.code.sf.net/p/facsimulation/code (svn)
|
||||||
- Code language: C, C++
|
- Code language: C, C++
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Developer: Horst Kevin (horstkevin), Stefan Aldinger
|
- Developer: Horst Kevin, Stefan Aldinger
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -11,6 +11,6 @@ _Simple arcade game where you control a guy who is trying to sort the garbage fa
|
|||||||
- Code license: LGPL-2.1
|
- Code license: LGPL-2.1
|
||||||
- Code dependencies: FLTK, libpng
|
- Code dependencies: FLTK, libpng
|
||||||
- Assets license: LGPL
|
- Assets license: LGPL
|
||||||
- Developer: Yuri D'Elia (wave++)
|
- Developer: Yuri D'Elia
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -11,7 +11,7 @@ _3D billiard game._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: GLUT, SDL
|
- Code dependencies: GLUT, SDL
|
||||||
- Developer: Holger Schäkel (holger110462)
|
- Developer: Holger Schäkel
|
||||||
|
|
||||||
Based on [FooBillard](foobillard.md).
|
Based on [FooBillard](foobillard.md).
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ _Game of colonization, research, diplomacy and trade. A 4X approach.It is played
|
|||||||
- Code repository: https://gitlab.com/osgames/fsc.git (conversion of svn), https://svn.code.sf.net/p/fsc/code (svn)
|
- Code repository: https://gitlab.com/osgames/fsc.git (conversion of svn), https://svn.code.sf.net/p/fsc/code (svn)
|
||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Paul Mueller (bitnapper@SF)
|
- Developer: Paul Mueller
|
||||||
|
|
||||||
requires SDL
|
requires SDL
|
||||||
|
|
||||||
|
@ -9,6 +9,6 @@ _Engine for writing multiplayer turn based games._
|
|||||||
- Code repository: https://gitlab.com/osgames/freya-engine.git (conversion of cvs), http://freya-engine.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/freya-engine.git (conversion of cvs), http://freya-engine.cvs.sourceforge.net (cvs)
|
||||||
- Code language: Java
|
- Code language: Java
|
||||||
- Code license: LGPL-2.1
|
- Code license: LGPL-2.1
|
||||||
- Developer: Sasha Bilton (pond@SF)
|
- Developer: Sasha Bilton
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -10,6 +10,6 @@ _Remake of Frogger._
|
|||||||
- Code language: Python
|
- Code language: Python
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: pygame
|
- Code dependencies: pygame
|
||||||
- Developer: Paul Elms (scifly@SF)
|
- Developer: Paul Elms
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -10,6 +10,6 @@ _Math game similar to BSD's "arithmetic" or TuxMath._
|
|||||||
- Code license: LGPL-2.1
|
- Code license: LGPL-2.1
|
||||||
- Code dependencies: GLUT
|
- Code dependencies: GLUT
|
||||||
- Assets license: LGPL
|
- Assets license: LGPL
|
||||||
- Developer: Yuri D'Elia (wave++)
|
- Developer: Yuri D'Elia
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -11,6 +11,6 @@ _Fast puzzle game. Placing gems in vertical lines destroys them and ultimately l
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Developer: Bill Kendrick (New Breed Software)
|
- Developer: Bill Kendrick
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -12,7 +12,7 @@ _Combat flight simulator._
|
|||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: GLUT, SDL
|
- Code dependencies: GLUT, SDL
|
||||||
- Assets license: GPL-2.0
|
- Assets license: GPL-2.0
|
||||||
- Developer: Thomas Drexl (heptargon@SF), Jean-Marc Le Peuvedic, Eugene Andreeschev, Eric Cheung, Piotr Pawlow, Louens Veen, Arne Reiners, Norbert Drexl, James Stone, Bernhard Kaindl, Cedric Delfosse
|
- Developer: Thomas Drexl, Jean-Marc Le Peuvedic, Eugene Andreeschev, Eric Cheung, Piotr Pawlow, Louens Veen, Arne Reiners, Norbert Drexl, James Stone, Bernhard Kaindl, Cedric Delfosse
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -12,6 +12,6 @@ _Go Ollie! is a mouse controlled platformer about an earth worm._
|
|||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Assets license: CC-BY-SA-3.0
|
- Assets license: CC-BY-SA-3.0
|
||||||
- Developer: Tony Oakden (Charlie Dog Games)
|
- Developer: Tony Oakden
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -11,6 +11,6 @@ _Remake of Another World 2: Heart of the Alien._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Developer: Gil Megidish (gilm@SF)
|
- Developer: Gil Megidish
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -12,6 +12,6 @@ _Game of dexterity._
|
|||||||
- Code license: Public domain
|
- Code license: Public domain
|
||||||
- Code dependencies: pygame
|
- Code dependencies: pygame
|
||||||
- Assets license: Public domain (probably non-free backgrounds and a font in the original distribution, see debian distribution)
|
- Assets license: Public domain (probably non-free backgrounds and a font in the original distribution, see debian distribution)
|
||||||
- Developer: Thorsten Kohnhorst (aka monsterkodi), legoluft (sound), Slava Anishenko (replacement free images)
|
- Developer: Thorsten Kohnhorst, legoluft (sound), Slava Anishenko (replacement free images)
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -11,6 +11,6 @@ _Remake of Magical Drop._
|
|||||||
- Code language: C++
|
- Code language: C++
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Developer: krys (krys@SF)
|
- Developer: krys
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -9,7 +9,7 @@ _Remake of Micro Machines._
|
|||||||
- Code repository: https://github.com/rpmcruz/microracers.git, https://gitlab.com/osgames/microracers.git (+) (conversion of cvs), http://microracers.cvs.sourceforge.net (cvs)
|
- Code repository: https://github.com/rpmcruz/microracers.git, https://gitlab.com/osgames/microracers.git (+) (conversion of cvs), http://microracers.cvs.sourceforge.net (cvs)
|
||||||
- Code language: C, C++
|
- Code language: C, C++
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Ricardo Cruz (rmcruz@SF)
|
- Developer: Ricardo Cruz
|
||||||
|
|
||||||
Not really beta?
|
Not really beta?
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ _Sudoku puzzle game (generator and solver)._
|
|||||||
- Code repository: https://gitlab.com/osgames/musosu.git (import of sources)
|
- Code repository: https://gitlab.com/osgames/musosu.git (import of sources)
|
||||||
- Code language: Java
|
- Code language: Java
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Developer: Marios Visvardis (marios_v@SF)
|
- Developer: Marios Visvardis
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,6 +10,6 @@ _Remake of Paradroid._
|
|||||||
- Code repository: https://gitlab.com/osgames/night-hawk.git (conversion of cvs), https://night-hawk.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/night-hawk.git (conversion of cvs), https://night-hawk.cvs.sourceforge.net (cvs)
|
||||||
- Code language: C++
|
- Code language: C++
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Jason Nunn, Eric Gillespie (vikin667@SF)
|
- Developer: Jason Nunn, Eric Gillespie
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -12,7 +12,7 @@ _Side-scroller/arcade lunar-lander-like game._
|
|||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: OpenGL, SDL
|
- Code dependencies: OpenGL, SDL
|
||||||
- Assets license: Artistic license-1.0 (font)
|
- Assets license: Artistic license-1.0 (font)
|
||||||
- Developer: Jimmy Christensen (dusteddk@SF, DusteDdk@GH)
|
- Developer: Jimmy Christensen
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ _Single player roguelike game._
|
|||||||
- Code repository: https://gitlab.com/osgames/omega-roguelike.git (conversion of cvs), http://omega-roguelike.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/omega-roguelike.git (conversion of cvs), http://omega-roguelike.cvs.sourceforge.net (cvs)
|
||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: LGPL-2.0
|
- Code license: LGPL-2.0
|
||||||
- Developer: Laurence R. Brothers, Sheldon Simms (wsxyz@SF), David Gibbs (dagibbs@SF), William Tanksley (wtanksle@SF)
|
- Developer: Laurence R. Brothers, Sheldon Simms, David Gibbs, William Tanksley
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ _Implementation of the GPL Quake source._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Assets license: ? (GPL)
|
- Assets license: ? (GPL)
|
||||||
- Developer: Toddd (rsmd@SF)
|
- Developer: Toddd
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ _Clone of Mortal Kombat._
|
|||||||
- Code repository: https://gitlab.com/osgames/openmortal.git (conversion of cvs), http://openmortal.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/openmortal.git (conversion of cvs), http://openmortal.cvs.sourceforge.net (cvs)
|
||||||
- Code language: C++, Perl
|
- Code language: C++, Perl
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: UPi (upi@SF)
|
- Developer: UPi
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ _Isometric real-time strategy game._
|
|||||||
- Code language: Python
|
- Code language: Python
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: PGU, pygame
|
- Code dependencies: PGU, pygame
|
||||||
- Developer: Andreas Røsdal (rtsfan@SF)
|
- Developer: Andreas Røsdal
|
||||||
|
|
||||||
Also known as arrakis.
|
Also known as arrakis.
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ _Simple game about matching a pathogen molecular structure on a hexagonal grid._
|
|||||||
- Code repository: https://gitlab.com/osgames/pathogen-warrior.git (import of sources)
|
- Code repository: https://gitlab.com/osgames/pathogen-warrior.git (import of sources)
|
||||||
- Code language: C++
|
- Code language: C++
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Jetro Lauha (tonic)
|
- Developer: Jetro Lauha
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ _Remake of Log!cal._
|
|||||||
- Code language: Python
|
- Code language: Python
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: pygame
|
- Code dependencies: pygame
|
||||||
- Developer: Stephen Thorne (jerub@SF), John-Paul Gignac (jjgignac@SF)
|
- Developer: Stephen Thorne, John-Paul Gignac
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ _Collection of useful modules for writing games with PyGame._
|
|||||||
- Code repository: https://github.com/parogers/pgu.git
|
- Code repository: https://github.com/parogers/pgu.git
|
||||||
- Code language: Python
|
- Code language: Python
|
||||||
- Code license: LGPL-2.1
|
- Code license: LGPL-2.1
|
||||||
- Developer: Phil Hassey (http://www.philhassey.com/blog/), Peter Rogers (parogers@GH)
|
- Developer: Phil Hassey, Peter Rogers
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ _Multiplayer role playing game engine which shares common qualities between mult
|
|||||||
- Code repository: https://gitlab.com/osgames/phprpg.git (conversion from cvs), http://phprpg.cvs.sourceforge.net (cvs)
|
- Code repository: https://gitlab.com/osgames/phprpg.git (conversion from cvs), http://phprpg.cvs.sourceforge.net (cvs)
|
||||||
- Code language: PHP
|
- Code language: PHP
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Developer: Haeric (haeric@SF), Rob Norman (stinx@SF), Timothy Chung (ttschung@SF)
|
- Developer: Haeric, Rob Norman, Timothy Chung
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -11,6 +11,6 @@ _Save-the-world arcade game._
|
|||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: pygame
|
- Code dependencies: pygame
|
||||||
- Assets license: FAL
|
- Assets license: FAL
|
||||||
- Developer: Chris Hopp (fydo.net)
|
- Developer: Chris Hopp
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -12,6 +12,6 @@ _Puzzle game._
|
|||||||
- Code license: Public domain
|
- Code license: Public domain
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Assets license: Public domain
|
- Assets license: Public domain
|
||||||
- Developer: Jason Rohrer (jcr13@SF)
|
- Developer: Jason Rohrer
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -12,6 +12,6 @@ _2D shoot'em up game._
|
|||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Assets license: various
|
- Assets license: various
|
||||||
- Developer: Stephen Sweeney (Parallel Realities), Richard Sweeney (Parallel Realities)
|
- Developer: Stephen Sweeney, Richard Sweeney
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -9,6 +9,6 @@ _3D pong clone._
|
|||||||
- Code repository: (see download)
|
- Code repository: (see download)
|
||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Developer: Quetzy Garcia (quetzyg)
|
- Developer: Quetzy Garcia
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -10,7 +10,7 @@ _Simple real-time space conquering game._
|
|||||||
- Code language: C++
|
- Code language: C++
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Developer: Anthony Mariette Louis Liekens (aliekens@SF), Jens Fursund (fursund@SF), Loek (exinion@SF), Robert Schuster (thebohemian@SF), Troels Kofoed Jacobsen
|
- Developer: Anthony Mariette Louis Liekens, Jens Fursund, Loek, Robert Schuster, Troels Kofoed Jacobsen
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -9,6 +9,6 @@ _Remake of Rescue!._
|
|||||||
- Code repository: https://gitlab.com/osgames/rescue.git (conversion of svn), http://svn.code.sf.net/p/rescue/code (svn)
|
- Code repository: https://gitlab.com/osgames/rescue.git (conversion of svn), http://svn.code.sf.net/p/rescue/code (svn)
|
||||||
- Code language: Java
|
- Code language: Java
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Developer: Yura (yuranet@SF)
|
- Developer: Yura
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -11,7 +11,7 @@ _Simple Sokoban game aimed at playability and portability across systems._
|
|||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: SDL
|
- Code dependencies: SDL
|
||||||
- Assets license: ? (GPL)
|
- Assets license: ? (GPL)
|
||||||
- Developer: Mateusz Viste (mv_fox@SF)
|
- Developer: Mateusz Viste
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -10,6 +10,6 @@ _Real time strategy game._
|
|||||||
- Code license: GPL
|
- Code license: GPL
|
||||||
- Code dependencies: pygame, pyglet, Rabbyt
|
- Code dependencies: pygame, pyglet, Rabbyt
|
||||||
- Assets license: GPL
|
- Assets license: GPL
|
||||||
- Developer: Joey Marshall, Mikey Lubker (ratchet@SF)
|
- Developer: Joey Marshall, Mikey Lubker
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -10,7 +10,7 @@ _Space simulation focused on cooperative (non-massive)-multiplayer and intuitive
|
|||||||
- Code language: C++, Lua
|
- Code language: C++, Lua
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: Lugre
|
- Code dependencies: Lugre
|
||||||
- Developer: Mark Saward, Robert Noll (doomhammer@SF)
|
- Developer: Mark Saward, Robert Noll
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -12,6 +12,6 @@ _Abstract 2D shooter game._
|
|||||||
- Code license: ? (GPL, Public domain)
|
- Code license: ? (GPL, Public domain)
|
||||||
- Code dependencies: GLUT, X
|
- Code dependencies: GLUT, X
|
||||||
- Assets license: ? (GPL)
|
- Assets license: ? (GPL)
|
||||||
- Developer: Jason Rohrer (jcr13)
|
- Developer: Jason Rohrer
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -9,7 +9,7 @@ _Turn-Based Strategy Game._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-3.0
|
- Code license: GPL-3.0
|
||||||
- Code dependencies: Rosethorn
|
- Code dependencies: Rosethorn
|
||||||
- Developer: darkrose (darkrose@GL)
|
- Developer: darkrose
|
||||||
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -9,6 +9,6 @@ _3D invaders game using wireframe vector graphics._
|
|||||||
- Code language: C
|
- Code language: C
|
||||||
- Code license: GPL-2.0
|
- Code license: GPL-2.0
|
||||||
- Assets license: no media
|
- Assets license: no media
|
||||||
- Developer: Don Llopis (del23@SF)
|
- Developer: Don Llopis
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
[comment]: # (partly autogenerated content, edit with care, read the manual before)
|
[comment]: # (partly autogenerated content, edit with care, read the manual before)
|
||||||
# Inspirations
|
# Inspirations (510)
|
||||||
|
|
||||||
510 games listed as inspirations.
|
|
||||||
|
|
||||||
## 1010! (1)
|
## 1010! (1)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[comment]: # (autogenerated content, do not edit)
|
[comment]: # (autogenerated content, do not edit)
|
||||||
# Statistics
|
# Statistics
|
||||||
|
|
||||||
analyzed 1387 entries on 2020-01-09 11:33:59
|
analyzed 1387 entries on 2020-01-28 10:19:50
|
||||||
|
|
||||||
## State
|
## State
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user