From df80f7012598dd68d1008f294ebf5a7c523f296c Mon Sep 17 00:00:00 2001 From: Trilarion Date: Fri, 15 Oct 2021 18:06:09 +0200 Subject: [PATCH] dynamic html table with javascript, more screenshots --- code/html/base.jinja | 9 +- code/html/css/simple-datatables.css | 173 + code/html/generate_static_website.py | 85 +- code/html/js/simple-datatables.js | 8 + code/html/table.jinja | 26 + code/maintenance_entries.py | 11 +- code/utils/constants.py | 8 +- code/utils/osg.py | 8 +- docs/contribute.html | 4 +- docs/css/simple-datatables.css | 173 + docs/data/entries.json | 13204 ++++++++++++++++++++++ docs/developers/0.html | 4 +- docs/developers/A.html | 4 +- docs/developers/B.html | 4 +- docs/developers/C.html | 4 +- docs/developers/D.html | 4 +- docs/developers/E.html | 4 +- docs/developers/F.html | 4 +- docs/developers/G.html | 4 +- docs/developers/H.html | 4 +- docs/developers/I.html | 4 +- docs/developers/J.html | 4 +- docs/developers/K.html | 4 +- docs/developers/L.html | 4 +- docs/developers/M.html | 4 +- docs/developers/N.html | 4 +- docs/developers/O.html | 4 +- docs/developers/P.html | 4 +- docs/developers/Q.html | 4 +- docs/developers/R.html | 4 +- docs/developers/S.html | 4 +- docs/developers/T.html | 4 +- docs/developers/U.html | 4 +- docs/developers/V.html | 4 +- docs/developers/W.html | 4 +- docs/developers/X.html | 4 +- docs/developers/Y.html | 4 +- docs/developers/Z.html | 4 +- docs/developers/index.html | 4 +- docs/frameworks/framework.html | 4 +- docs/frameworks/game engine.html | 6 +- docs/frameworks/index.html | 8 +- docs/frameworks/library.html | 4 +- docs/frameworks/tool.html | 4 +- docs/games/0.html | 6 +- docs/games/A.html | 4 +- docs/games/B.html | 6 +- docs/games/C.html | 6 +- docs/games/D.html | 6 +- docs/games/E.html | 4 +- docs/games/F.html | 4 +- docs/games/G.html | 4 +- docs/games/H.html | 4 +- docs/games/I.html | 4 +- docs/games/J.html | 4 +- docs/games/K.html | 4 +- docs/games/L.html | 4 +- docs/games/M.html | 4 +- docs/games/N.html | 4 +- docs/games/O.html | 6 +- docs/games/P.html | 4 +- docs/games/Q.html | 4 +- docs/games/R.html | 4 +- docs/games/S.html | 4 +- docs/games/T.html | 4 +- docs/games/U.html | 4 +- docs/games/V.html | 6 +- docs/games/W.html | 4 +- docs/games/X.html | 4 +- docs/games/Y.html | 4 +- docs/games/Z.html | 4 +- docs/games/genres.html | 6 +- docs/games/index.html | 6 +- docs/games/languages.html | 6 +- docs/games/platforms.html | 6 +- docs/games/top50.html | 16 +- docs/index.html | 4 +- docs/inspirations/0.html | 4 +- docs/inspirations/A.html | 4 +- docs/inspirations/B.html | 4 +- docs/inspirations/C.html | 4 +- docs/inspirations/D.html | 4 +- docs/inspirations/E.html | 4 +- docs/inspirations/F.html | 4 +- docs/inspirations/G.html | 4 +- docs/inspirations/H.html | 4 +- docs/inspirations/I.html | 4 +- docs/inspirations/J.html | 4 +- docs/inspirations/K.html | 4 +- docs/inspirations/L.html | 4 +- docs/inspirations/M.html | 4 +- docs/inspirations/N.html | 4 +- docs/inspirations/O.html | 4 +- docs/inspirations/P.html | 4 +- docs/inspirations/Q.html | 4 +- docs/inspirations/R.html | 4 +- docs/inspirations/S.html | 4 +- docs/inspirations/T.html | 4 +- docs/inspirations/U.html | 4 +- docs/inspirations/V.html | 4 +- docs/inspirations/W.html | 4 +- docs/inspirations/X.html | 4 +- docs/inspirations/Y.html | 4 +- docs/inspirations/Z.html | 4 +- docs/inspirations/index.html | 4 +- docs/js/simple-datatables.js | 8 + docs/screenshots/browserquest_01.jpg | Bin 0 -> 5187 bytes docs/screenshots/citybound_01.jpg | Bin 0 -> 7192 bytes docs/screenshots/citybound_02.jpg | Bin 0 -> 6856 bytes docs/screenshots/devilution_01.jpg | Bin 0 -> 7866 bytes docs/screenshots/evil_cult_01.jpg | Bin 10183 -> 10521 bytes docs/screenshots/osu_01.jpg | Bin 0 -> 10404 bytes docs/screenshots/vvvvvv_01.jpg | Bin 0 -> 6822 bytes docs/statistics/build_systems.svg | 2 +- docs/statistics/index.html | 4 +- docs/table.html | 82 + entries/2048.md | 3 +- entries/screenshots/README.md | 21 + entries/screenshots/browserquest_01.jpg | Bin 0 -> 5187 bytes entries/screenshots/citybound_01.jpg | Bin 0 -> 7192 bytes entries/screenshots/citybound_02.jpg | Bin 0 -> 6856 bytes entries/screenshots/devilution_01.jpg | Bin 0 -> 7866 bytes entries/screenshots/evil_cult_01.jpg | Bin 10183 -> 10521 bytes entries/screenshots/osu_01.jpg | Bin 0 -> 10404 bytes entries/screenshots/vvvvvv_01.jpg | Bin 0 -> 6822 bytes 125 files changed, 14005 insertions(+), 238 deletions(-) create mode 100644 code/html/css/simple-datatables.css create mode 100644 code/html/js/simple-datatables.js create mode 100644 docs/css/simple-datatables.css create mode 100644 docs/data/entries.json create mode 100644 docs/js/simple-datatables.js create mode 100644 docs/screenshots/browserquest_01.jpg create mode 100644 docs/screenshots/citybound_01.jpg create mode 100644 docs/screenshots/citybound_02.jpg create mode 100644 docs/screenshots/devilution_01.jpg create mode 100644 docs/screenshots/osu_01.jpg create mode 100644 docs/screenshots/vvvvvv_01.jpg create mode 100644 docs/table.html create mode 100644 entries/screenshots/browserquest_01.jpg create mode 100644 entries/screenshots/citybound_01.jpg create mode 100644 entries/screenshots/citybound_02.jpg create mode 100644 entries/screenshots/devilution_01.jpg create mode 100644 entries/screenshots/osu_01.jpg create mode 100644 entries/screenshots/vvvvvv_01.jpg diff --git a/code/html/base.jinja b/code/html/base.jinja index cab7b545..661a0dbf 100644 --- a/code/html/base.jinja +++ b/code/html/base.jinja @@ -7,10 +7,13 @@ {{ base['title'] }} - - + {%- for css in base['css'] %} + + {%- endfor %} - + {%- for js in base['js'] %} + + {%- endfor %} {#- navigation bar -#} diff --git a/code/html/css/simple-datatables.css b/code/html/css/simple-datatables.css new file mode 100644 index 00000000..0bc5cdef --- /dev/null +++ b/code/html/css/simple-datatables.css @@ -0,0 +1,173 @@ +.dataTable-wrapper.no-header .dataTable-container { + border-top: 1px solid #d9d9d9; +} + +.dataTable-wrapper.no-footer .dataTable-container { + border-bottom: 1px solid #d9d9d9; +} + +.dataTable-top, +.dataTable-bottom { + padding: 8px 10px; +} + +.dataTable-top > nav:first-child, +.dataTable-top > div:first-child, +.dataTable-bottom > nav:first-child, +.dataTable-bottom > div:first-child { + float: left; +} + +.dataTable-top > nav:last-child, +.dataTable-top > div:last-child, +.dataTable-bottom > nav:last-child, +.dataTable-bottom > div:last-child { + float: right; +} + +.dataTable-selector { + padding: 6px; +} + +.dataTable-input { + padding: 6px 12px; +} + +.dataTable-info { + margin: 7px 0; +} + +/* PAGER */ +.dataTable-pagination ul { + margin: 0; + padding-left: 0; +} + +.dataTable-pagination li { + list-style: none; + float: left; +} + +.dataTable-pagination a { + border: 1px solid transparent; + float: left; + margin-left: 2px; + padding: 6px 12px; + position: relative; + text-decoration: none; + color: #333; +} + +.dataTable-pagination a:hover { + background-color: #d9d9d9; +} + +.dataTable-pagination .active a, +.dataTable-pagination .active a:focus, +.dataTable-pagination .active a:hover { + background-color: #d9d9d9; + cursor: default; +} + +.dataTable-pagination .ellipsis a, +.dataTable-pagination .disabled a, +.dataTable-pagination .disabled a:focus, +.dataTable-pagination .disabled a:hover { + cursor: not-allowed; +} + +.dataTable-pagination .disabled a, +.dataTable-pagination .disabled a:focus, +.dataTable-pagination .disabled a:hover { + cursor: not-allowed; + opacity: 0.4; +} + +.dataTable-pagination .pager a { + font-weight: bold; +} + +/* TABLE */ +.dataTable-table { + max-width: 100%; + width: 100%; + border-spacing: 0; + border-collapse: separate; +} + +.dataTable-table > tbody > tr > td, +.dataTable-table > tbody > tr > th, +.dataTable-table > tfoot > tr > td, +.dataTable-table > tfoot > tr > th, +.dataTable-table > thead > tr > td, +.dataTable-table > thead > tr > th { + vertical-align: top; + padding: 8px 10px; +} + +.dataTable-table > thead > tr > th { + vertical-align: bottom; + text-align: left; + border-bottom: 1px solid #d9d9d9; +} + +.dataTable-table > tfoot > tr > th { + vertical-align: bottom; + text-align: left; + border-top: 1px solid #d9d9d9; +} + +.dataTable-table th { + vertical-align: bottom; + text-align: left; +} + +.dataTable-table th a { + text-decoration: none; + color: inherit; +} + +.dataTable-sorter { + display: inline-block; + height: 100%; + position: relative; + width: 100%; +} + +.dataTable-sorter::before, +.dataTable-sorter::after { + content: ""; + height: 0; + width: 0; + position: absolute; + right: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + opacity: 0.2; +} + +.dataTable-sorter::before { + border-top: 4px solid #000; + bottom: 0px; +} + +.dataTable-sorter::after { + border-bottom: 4px solid #000; + border-top: 4px solid transparent; + top: 0px; +} + +.asc .dataTable-sorter::after, +.desc .dataTable-sorter::before { + opacity: 0.6; +} + +.dataTables-empty { + text-align: center; +} + +.dataTable-top::after, .dataTable-bottom::after { + clear: both; + content: " "; + display: table; +} diff --git a/code/html/generate_static_website.py b/code/html/generate_static_website.py index 1f6b49fd..ed939200 100644 --- a/code/html/generate_static_website.py +++ b/code/html/generate_static_website.py @@ -7,6 +7,14 @@ Sitemaps is not needed, only for large projects with lots of JavaScript und many """ +# TODO simple data table with columns: name (homepage as link), keywords (at least essential ones), inspiration, language, code license + +# TODO languages: ? at the end sort + +# TODO too many spans, especially for text (maybe just plain text), also text with URLs inside is difficult (but why) + +# TODO keywords: content, multiplayer replace by icons (open, commercial (dollar signs)) + # TODO most people only come to the main page, put more information there (direct links to genres, ...) # TODO put more explanations on the category pages and the categories (number and short sentences) @@ -31,6 +39,13 @@ Sitemaps is not needed, only for large projects with lots of JavaScript und many # TODO games: platform icons and mature, state larger (but maybe not on mobile) +# TODO games: platform information larger printed, keyword tags underlined to indicate links +# TODO devs: icons mark as links (how? ask on ux.stackexchange.com?) + +# TODO everywhere: better link replacements + +# TODO game: first homepage link bold + # TODO statistics: better and more statistics with links where possible # TODO statistics: with nice graphics (pie charts in SVG) with matplotlib # TODO statistics: get it from common statistics generator @@ -89,6 +104,7 @@ import shutil import math import datetime import time +import json from functools import partial from utils import osg, constants as c, utils, osg_statistics as stat, osg_parse from jinja2 import Environment, FileSystemLoader @@ -172,7 +188,7 @@ non_game_category_names = { 'tool': 'Tools', 'framework': 'Frameworks', 'library': 'Libraries', - 'game engine': 'Game Engine' + 'game engine': 'Game Engines' } # we check the output html structure every time @@ -842,6 +858,37 @@ def add_screenshot_information(entries): entry['screenshots'] = screenshots +def create_table_json_data(entries): + """ + We assume that everything including internal is setup correctly. + Columns are Title, Link (entry, first homepage), State, Essential Keywords, Language, License + :param entries: + :return: + """ + # create json structure + db = {'headings': ['Title', 'State', 'Tags', 'Platform', 'Language', 'License']} + data = [] + for entry in entries: + title = '{} (Entry)'.format(entry['Home'][0], entry['Title'], url_to([], entry['href'])) + state = ', '.join(entry['State']) + tags = entry['Keyword'] + tags = [tag for tag in tags if tag in c.recommended_keywords] + tags = ', '.join(tags) + platform = entry.get('Platform', ['-']) + platform = ', '.join(platform) + language = ', '.join(entry['Code language']) + license = [x[-1] for x in entry['Code license']] + license = ', '.join(license) + data.append([title, state, tags, platform, language, license]) + data.sort(key=lambda x: str.casefold(x[0])) + db['data'] = data + + # write out + text = json.dumps(db, indent=1) + os.makedirs(c.web_data_path, exist_ok=True) + utils.write_text(os.path.join(c.web_data_path, 'entries.json'), text) + + def generate(entries, inspirations, developers): """ Regenerates the whole static website given an already imported set of entries, inspirations and developers. @@ -874,6 +921,9 @@ def generate(entries, inspirations, developers): # set external links up add_license_links_to_entries(games) + # create entries.json for the table + create_table_json_data(entries) + # sort into categories sorter = lambda item, category: category == item['letter'] games_by_alphabet = sort_into_categories(games, extended_alphabet, sorter) @@ -893,7 +943,9 @@ def generate(entries, inspirations, developers): # base dictionary base = { 'title': 'OSGL', - 'creation-date': datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M') + 'creation-date': datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M'), + 'css': ['bulma.min.css', 'osgl.min.css'], + 'js': ['osgl.js'] } # copy css and js @@ -925,16 +977,18 @@ def generate(entries, inspirations, developers): # index.html base['active_nav'] = 'index' - index = {'subtitle': make_text('Contains information about {} open source games and {} frameworks/tools.'.format(len(games), len(non_games))) } + index = {'subtitle': make_text('Contains information about {} open source games and {} game engines/tools.'.format(len(games), len(non_games))) } template = environment.get_template('index.jinja') write(template.render(index=index), ['index.html']) # contribute page + base['title'] = 'OSGL | Contributions' base['active_nav'] = 'contribute' template = environment.get_template('contribute.jinja') write(template.render(), ['contribute.html']) # statistics page in statistics folder + base['title'] = 'OSGL | Statistics' base['url_to'] = partial(url_to, statistics_path) base['active_nav'] = 'statistics' @@ -960,6 +1014,7 @@ def generate(entries, inspirations, developers): write(template.render(data=data), statistics_index_path) # non-games folder + base['title'] = 'OSGL | Game engines, frameworks, tools' base['url_to'] = partial(url_to, non_games_path) base['active_nav'] = 'frameworks' @@ -985,6 +1040,7 @@ def generate(entries, inspirations, developers): write(template_listing_entries.render(listing=listing), non_games_path + ['{}.html'.format(keyword)]) # games folder + base['title'] = 'OSGL | Games | Alphabetical' base['url_to'] = partial(url_to, games_path) base['active_nav'] = 'games' @@ -999,7 +1055,7 @@ def generate(entries, inspirations, developers): # generate games index index = divide_in_three_columns_and_transform(games_by_alphabet, game_index) index['title'] = make_text('Open source games') - index['subtitle'] = make_text('Alphabetical index of informations about {} games'.format(len(games))) + index['subtitle'] = [make_text('Alphabetical index of informations about {} games (or see the '.format(len(games))), make_url(['table.html'], 'table'), ')'] index['categories'] = extended_alphabet index['category-names'] = extended_alphabet_names index['category-icons'] = {} @@ -1009,10 +1065,11 @@ def generate(entries, inspirations, developers): write(template_categorical_index.render(index=index), games_index_path) # genres + base['title'] = 'OSGL | Games | Genres' base['active_nav'] = ['filter', 'genres'] index = divide_in_three_columns_and_transform(games_by_genre, game_index) index['title'] = make_text('Open source games') - index['subtitle'] = make_text('Index by game genre') + index['subtitle'] = [make_text('Index by game genre (or see the '), make_url(['table.html'], 'table'), ')'] index['categories'] = genres index['category-names'] = {k: make_text(k) for k in index['categories']} index['category-icons'] = {k: make_icon(genre_icon_map[k]) for k in index['categories'] if k in genre_icon_map} @@ -1022,10 +1079,11 @@ def generate(entries, inspirations, developers): write(template_categorical_index.render(index=index), games_by_genres_path) # games by language + base['title'] = 'OSGL | Games | Programming language' base['active_nav'] = ['filter', 'code language'] index = divide_in_three_columns_and_transform(games_by_language, game_index) index['title'] = 'Open source games and frameworks' - index['subtitle'] = make_text('Index by programming language') + index['subtitle'] = [make_text('Index by programming language (or see the '), make_url(['table.html'], 'table'), ')'] index['categories'] = c.known_languages index['category-names'] = {k:k for k in index['categories']} index['category-icons'] = {} @@ -1035,10 +1093,11 @@ def generate(entries, inspirations, developers): write(template_categorical_index.render(index=index), games_by_language_path) # games by platform + base['title'] = 'OSGL | Games | Supported Platform' base['active_nav'] = ['filter', 'platforms'] index = divide_in_three_columns_and_transform(games_by_platform, game_index) index['title'] = 'Open source games and frameworks' - index['subtitle'] = make_text('Index by supported platform') + index['subtitle'] = [make_text('Index by supported platform (or see the '), make_url(['table.html'], 'table'), ')'] index['categories'] = c.valid_platforms + ('Unspecified',) index['category-names'] = {k: make_text(k) for k in index['categories']} index['category-icons'] = {k: make_icon(platform_icon_map[k]) for k in index['categories']} @@ -1049,6 +1108,7 @@ def generate(entries, inspirations, developers): write(template_categorical_index.render(index=index), games_by_platform_path) # top 50 games + base['title'] = 'OSGL | Games | GitHub Top 50' base['active_nav'] = ['filter', 'top50'] # there are no other games coming afterwards, can actually number them for index, game in enumerate(top50_games): @@ -1061,6 +1121,7 @@ def generate(entries, inspirations, developers): write(template_listing_entries.render(listing=listing), games_top50_path) # inspirations folder + base['title'] = 'OSGL | Inspirational games' base['url_to'] = partial(url_to, inspirations_path) base['active_nav'] = 'inspirations' @@ -1088,6 +1149,7 @@ def generate(entries, inspirations, developers): write(template_listing_inspirations.render(listing=listing), inspirations_path + ['{}.html'.format(letter.capitalize())]) # developers folder + base['title'] = 'OSGL | Games | Developers' base['url_to'] = partial(url_to, developers_path) base['active_nav'] = 'developers' @@ -1112,6 +1174,15 @@ def generate(entries, inspirations, developers): index['category-infos'] = {} write(template_categorical_index.render(index=index), developers_index_path) + # dynamic table (is in top level folder) + base['title'] = 'OSGL | Entries | Table' + base['url_to'] = partial(url_to, []) + base['css'].append('simple-datatables.css') + base['js'].append('simple-datatables.js') + base['active_nav'] = [] + template = environment.get_template('table.jinja') + write(template.render(), ['table.html']) + if __name__ == "__main__": diff --git a/code/html/js/simple-datatables.js b/code/html/js/simple-datatables.js new file mode 100644 index 00000000..71cbe8b8 --- /dev/null +++ b/code/html/js/simple-datatables.js @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.7.1. + * Original file: /npm/simple-datatables@3.1.2/dist/umd/simple-datatables.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).simpleDatatables=t()}}((function(){return function t(e,s,i){function a(r,o){if(!s[r]){if(!e[r]){var h="function"==typeof require&&require;if(!o&&h)return h(r,!0);if(n)return n(r,!0);var l=new Error("Cannot find module '"+r+"'");throw l.code="MODULE_NOT_FOUND",l}var d=s[r]={exports:{}};e[r][0].call(d.exports,(function(t){return a(e[r][1][t]||t)}),d,d.exports,t,e,s,i)}return s[r].exports}for(var n="function"==typeof require&&require,r=0;r=e?t:""+Array(e+1-i.length).join(s)+t},b={s:m,z:function(t){var e=-t.utcOffset(),s=Math.abs(e),i=Math.floor(s/60),a=s%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(a,2,"0")},m:function t(e,s){if(e.date()68?1900:2e3)},o=function(t){return function(e){this[t]=+e}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),s=60*e[1]+(+e[2]||0);return 0===s?0:"+"===e[0]?-s:s}(t)}],l=function(t){var e=n[t];return e&&(e.indexOf?e:e.s.concat(e.f))},d=function(t,e){var s,i=n.meridiem;if(i){for(var a=1;a<=24;a+=1)if(t.indexOf(i(a,0,e))>-1){s=a>12;break}}else s=t===(e?"pm":"PM");return s},c={A:[a,function(t){this.afternoon=d(t,!1)}],a:[a,function(t){this.afternoon=d(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[s,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,o("seconds")],ss:[i,o("seconds")],m:[i,o("minutes")],mm:[i,o("minutes")],H:[i,o("hours")],h:[i,o("hours")],HH:[i,o("hours")],hh:[i,o("hours")],D:[i,o("day")],DD:[s,o("day")],Do:[a,function(t){var e=n.ordinal,s=t.match(/\d+/);if(this.day=s[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],M:[i,o("month")],MM:[s,o("month")],MMM:[a,function(t){var e=l("months"),s=(l("monthsShort")||e.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(s<1)throw new Error;this.month=s%12||s}],MMMM:[a,function(t){var e=l("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,o("year")],YY:[s,function(t){this.year=r(t)}],YYYY:[/\d{4}/,o("year")],Z:h,ZZ:h};function u(s){var i,a;i=s,a=n&&n.formats;for(var r=(s=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,s,i){var n=i&&i.toUpperCase();return s||a[i]||t[i]||a[n].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,s){return e||s.slice(1)}))}))).match(e),o=r.length,h=0;h-1)return new Date(("X"===e?1e3:1)*t);var i=u(e)(t),a=i.year,n=i.month,r=i.day,o=i.hours,h=i.minutes,l=i.seconds,d=i.milliseconds,c=i.zone,p=new Date,f=r||(a||n?1:p.getDate()),g=a||p.getFullYear(),m=0;a&&!n||(m=n>0?n-1:p.getMonth());var b=o||0,y=h||0,v=l||0,w=d||0;return c?new Date(Date.UTC(g,m,f,b,y,v,w+60*c.offset*1e3)):s?new Date(Date.UTC(g,m,f,b,y,v,w)):new Date(g,m,f,b,y,v,w)}catch(t){return new Date("")}}(e,o,i),this.init(),c&&!0!==c&&(this.$L=this.locale(c).$L),d&&e!==this.format(o)&&(this.$d=new Date("")),n={}}else if(o instanceof Array)for(var p=o.length,f=1;f<=p;f+=1){r[1]=o[f-1];var g=s.apply(this,r);if(g.isValid()){this.$d=g.$d,this.$L=g.$L,this.init();break}f===p&&(this.$d=new Date(""))}else a.call(this,t)}}}()}));i.extend(a),s.parseDate=(t,e)=>{let s=!1;if(e)switch(e){case"ISO_8601":s=t;break;case"RFC_2822":s=i(t.slice(5),"DD MMM YYYY HH:mm:ss ZZ").unix();break;case"MYSQL":s=i(t,"YYYY-MM-DD hh:mm:ss").unix();break;case"UNIX":s=i(t).unix();break;default:s=i(t,e).valueOf()}return s}}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(t,e,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const i=t=>"[object Object]"===Object.prototype.toString.call(t),a=(t,e)=>{const s=document.createElement(t);if(e&&"object"==typeof e)for(const t in e)"html"===t?s.innerHTML=e[t]:s.setAttribute(t,e[t]);return s},n=t=>{t instanceof NodeList?t.forEach((t=>n(t))):t.innerHTML=""},r=(t,e,s)=>a("li",{class:t,html:`${s}`}),o=(t,e)=>{let s,i;1===e?(s=0,i=t.length):-1===e&&(s=t.length-1,i=-1);for(let a=!0;a;){a=!1;for(let n=s;n!=i;n+=e)if(t[n+e]&&t[n].value>t[n+e].value){const s=t[n],i=t[n+e],r=s;t[n]=i,t[n+e]=r,a=!0}}return t};class h{constructor(t,e){return this.dt=t,this.rows=e,this}build(t){const e=a("tr");let s=this.dt.headings;return s.length||(s=t.map((()=>""))),s.forEach(((s,i)=>{const n=a("td");t[i]&&t[i].length||(t[i]=""),n.innerHTML=t[i],n.data=t[i],e.appendChild(n)})),e}render(t){return t}add(t){if(Array.isArray(t)){const e=this.dt;Array.isArray(t[0])?t.forEach((t=>{e.data.push(this.build(t))})):e.data.push(this.build(t)),e.data.length&&(e.hasRows=!0),this.update(),e.columns().rebuild()}}remove(t){const e=this.dt;Array.isArray(t)?(t.sort(((t,e)=>e-t)),t.forEach((t=>{e.data.splice(t,1)}))):"all"==t?e.data=[]:e.data.splice(t,1),e.data.length||(e.hasRows=!1),this.update(),e.columns().rebuild()}update(){this.dt.data.forEach(((t,e)=>{t.dataIndex=e}))}}class l{constructor(t){return this.dt=t,this}swap(t){if(t.length&&2===t.length){const e=[];this.dt.headings.forEach(((t,s)=>{e.push(s)}));const s=t[0],i=t[1],a=e[i];e[i]=e[s],e[s]=a,this.order(e)}}order(t){let e,s,i,a,n,r,o;const h=[[],[],[],[]],l=this.dt;t.forEach(((t,i)=>{n=l.headings[t],r="false"!==n.getAttribute("data-sortable"),e=n.cloneNode(!0),e.originalCellIndex=i,e.sortable=r,h[0].push(e),l.hiddenColumns.includes(t)||(s=n.cloneNode(!0),s.originalCellIndex=i,s.sortable=r,h[1].push(s))})),l.data.forEach(((e,s)=>{i=e.cloneNode(!1),a=e.cloneNode(!1),i.dataIndex=a.dataIndex=s,null!==e.searchIndex&&void 0!==e.searchIndex&&(i.searchIndex=a.searchIndex=e.searchIndex),t.forEach((t=>{o=e.cells[t].cloneNode(!0),o.data=e.cells[t].data,i.appendChild(o),l.hiddenColumns.includes(t)||(o=e.cells[t].cloneNode(!0),o.data=e.cells[t].data,a.appendChild(o))})),h[2].push(i),h[3].push(a)})),l.headings=h[0],l.activeHeadings=h[1],l.data=h[2],l.activeRows=h[3],l.update()}hide(t){if(t.length){const e=this.dt;t.forEach((t=>{e.hiddenColumns.includes(t)||e.hiddenColumns.push(t)})),this.rebuild()}}show(t){if(t.length){let e;const s=this.dt;t.forEach((t=>{e=s.hiddenColumns.indexOf(t),e>-1&&s.hiddenColumns.splice(e,1)})),this.rebuild()}}visible(t){let e;const s=this.dt;return t=t||s.headings.map((t=>t.originalCellIndex)),isNaN(t)?Array.isArray(t)&&(e=[],t.forEach((t=>{e.push(!s.hiddenColumns.includes(t))}))):e=!s.hiddenColumns.includes(t),e}add(t){let e;const s=document.createElement("th");if(!this.dt.headings.length)return this.dt.insert({headings:[t.heading],data:t.data.map((t=>[t]))}),void this.rebuild();this.dt.hiddenHeader?s.innerHTML="":t.heading.nodeName?s.appendChild(t.heading):s.innerHTML=t.heading,this.dt.headings.push(s),this.dt.data.forEach(((s,i)=>{t.data[i]&&(e=document.createElement("td"),t.data[i].nodeName?e.appendChild(t.data[i]):e.innerHTML=t.data[i],e.data=e.innerHTML,t.render&&(e.innerHTML=t.render.call(this,e.data,e,s)),s.appendChild(e))})),t.type&&s.setAttribute("data-type",t.type),t.format&&s.setAttribute("data-format",t.format),t.hasOwnProperty("sortable")&&(s.sortable=t.sortable,s.setAttribute("data-sortable",!0===t.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()}remove(t){Array.isArray(t)?(t.sort(((t,e)=>e-t)),t.forEach((t=>this.remove(t)))):(this.dt.headings.splice(t,1),this.dt.data.forEach((e=>{e.removeChild(e.cells[t])}))),this.rebuild()}filter(t,e,s,i){const a=this.dt;if(a.filterState||(a.filterState={originalData:a.data}),!a.filterState[t]){const e=[...i,()=>!0];a.filterState[t]=function(){let t=0;return()=>e[t++%e.length]}()}const n=a.filterState[t](),r=Array.from(a.filterState.originalData).filter((e=>{const s=e.cells[t],i=s.hasAttribute("data-content")?s.getAttribute("data-content"):s.innerText;return"function"==typeof n?n(i):i===n}));a.data=r,a.data.length?(this.rebuild(),a.update()):(a.clear(),a.setMessage(a.options.labels.noRows)),s||a.emit("datatable.sort",t,e)}sort(e,s,i){const a=this.dt;if(a.hasHeadings&&(e<0||e>a.headings.length))return!1;const n=a.options.filters&&a.options.filters[a.headings[e].textContent];if(n&&0!==n.length)return void this.filter(e,s,i,n);a.sorting=!0,i||a.emit("datatable.sorting",e,s);let r=a.data;const h=[],l=[];let d=0,c=0;const u=a.headings[e],p=[];if("date"===u.getAttribute("data-type")){let e=!1;u.hasAttribute("data-format")&&(e=u.getAttribute("data-format")),p.push(Promise.resolve().then((function(){return t("./date-ee454f51.js")})).then((({parseDate:t})=>s=>t(s,e))))}Promise.all(p).then((t=>{const n=t[0];let p,f;Array.from(r).forEach((t=>{const s=t.cells[e],i=s.hasAttribute("data-content")?s.getAttribute("data-content"):s.innerText;let a;a=n?n(i):"string"==typeof i?i.replace(/(\$|,|\s|%)/g,""):i,parseFloat(a)==a?l[c++]={value:Number(a),row:t}:h[d++]={value:"string"==typeof i?i.toLowerCase():i,row:t}})),s||(s=u.classList.contains("asc")?"desc":"asc"),"desc"==s?(p=o(h,-1),f=o(l,-1),u.classList.remove("asc"),u.classList.add("desc")):(p=o(l,1),f=o(h,1),u.classList.remove("desc"),u.classList.add("asc")),a.lastTh&&u!=a.lastTh&&(a.lastTh.classList.remove("desc"),a.lastTh.classList.remove("asc")),a.lastTh=u,r=p.concat(f),a.data=[];const g=[];r.forEach(((t,e)=>{a.data.push(t.row),null!==t.row.searchIndex&&void 0!==t.row.searchIndex&&g.push(e)})),a.searchData=g,this.rebuild(),a.update(),i||a.emit("datatable.sort",e,s)}))}rebuild(){let t,e,s,i;const a=this.dt,n=[];a.activeRows=[],a.activeHeadings=[],a.headings.forEach(((t,e)=>{t.originalCellIndex=e,t.sortable="false"!==t.getAttribute("data-sortable"),a.hiddenColumns.includes(e)||a.activeHeadings.push(t)})),a.data.forEach(((r,o)=>{t=r.cloneNode(!1),e=r.cloneNode(!1),t.dataIndex=e.dataIndex=o,null!==r.searchIndex&&void 0!==r.searchIndex&&(t.searchIndex=e.searchIndex=r.searchIndex),Array.from(r.cells).forEach((n=>{s=n.cloneNode(!0),s.data=n.data,t.appendChild(s),a.hiddenColumns.includes(s.cellIndex)||(i=s.cloneNode(!0),i.data=s.data,e.appendChild(i))})),n.push(t),a.activeRows.push(e)})),a.data=n,a.update()}}const d=function(t){let e=!1,s=!1;if((t=t||this.options.data).headings){e=a("thead");const s=a("tr");t.headings.forEach((t=>{const e=a("th",{html:t});s.appendChild(e)})),e.appendChild(s)}t.data&&t.data.length&&(s=a("tbody"),t.data.forEach((e=>{if(t.headings&&t.headings.length!==e.length)throw new Error("The number of rows do not match the number of headings.");const i=a("tr");e.forEach((t=>{const e=a("td",{html:t});i.appendChild(e)})),s.appendChild(i)}))),e&&(null!==this.dom.tHead&&this.dom.removeChild(this.dom.tHead),this.dom.appendChild(e)),s&&(this.dom.tBodies.length&&this.dom.removeChild(this.dom.tBodies[0]),this.dom.appendChild(s))},c={sortable:!0,searchable:!0,paging:!0,perPage:10,perPageSelect:[5,10,15,20,25],nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",ascText:"▴",descText:"▾",truncatePager:!0,pagerDelta:2,scrollY:"",fixedColumns:!0,fixedHeight:!1,header:!0,hiddenHeader:!1,footer:!1,labels:{placeholder:"Search...",perPage:"{select} entries per page",noRows:"No entries found",info:"Showing {start} to {end} of {rows} entries"},layout:{top:"{select}{search}",bottom:"{info}{pager}"}};class u{constructor(t,e={}){const s="string"==typeof t?document.querySelector(t):t;if(this.options={...c,...e,layout:{...c.layout,...e.layout},labels:{...c.labels,...e.labels}},this.initialized=!1,this.initialLayout=s.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null===s.tHead&&(!this.options.data||this.options.data&&!this.options.data.headings)&&(this.options.sortable=!1),s.tBodies.length&&!s.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.dom=s,this.table=this.dom,this.listeners={onResize:t=>this.onResize(t)},this.init()}static extend(t,e){"function"==typeof e?u.prototype[t]=e:u[t]=e}init(t){if(this.initialized||this.dom.classList.contains("dataTable-table"))return!1;Object.assign(this.options,t||{}),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout((()=>{this.emit("datatable.init"),this.initialized=!0,this.options.plugins&&Object.entries(this.options.plugins).forEach((([t,e])=>{this[t]&&"function"==typeof this[t]&&(this[t]=this[t](e,{createElement:a}),e.enabled&&this[t].init&&"function"==typeof this[t].init&&this[t].init())}))}),10)}render(t){if(t){switch(t){case"page":this.renderPage();break;case"pager":this.renderPager();break;case"header":this.renderHeader()}return!1}const e=this.options;let s="";if(e.data&&d.call(this),this.body=this.dom.tBodies[0],this.head=this.dom.tHead,this.foot=this.dom.tFoot,this.body||(this.body=a("tbody"),this.dom.appendChild(this.body)),this.hasRows=this.body.rows.length>0,!this.head){const t=a("thead"),s=a("tr");this.hasRows&&(Array.from(this.body.rows[0].cells).forEach((()=>{s.appendChild(a("th"))})),t.appendChild(s)),this.head=t,this.dom.insertBefore(this.head,this.body),this.hiddenHeader=e.hiddenHeader}if(this.headings=[],this.hasHeadings=this.head.rows.length>0,this.hasHeadings&&(this.header=this.head.rows[0],this.headings=[].slice.call(this.header.cells)),e.header||this.head&&this.dom.removeChild(this.dom.tHead),e.footer?this.head&&!this.foot&&(this.foot=a("tfoot",{html:this.head.innerHTML}),this.dom.appendChild(this.foot)):this.foot&&this.dom.removeChild(this.dom.tFoot),this.wrapper=a("div",{class:"dataTable-wrapper dataTable-loading"}),s+="
",s+=e.layout.top,s+="
",e.scrollY.length?s+=`
`:s+="
",s+="
",s+=e.layout.bottom,s+="
",s=s.replace("{info}",e.paging?"
":""),e.paging&&e.perPageSelect){let t="
";const i=a("select",{class:"dataTable-selector"});e.perPageSelect.forEach((t=>{const s=t===e.perPage,a=new Option(t,t,s,s);i.add(a)})),t=t.replace("{select}",i.outerHTML),s=s.replace("{select}",t)}else s=s.replace("{select}","");if(e.searchable){const t=``;s=s.replace("{search}",t)}else s=s.replace("{search}","");this.hasHeadings&&this.render("header"),this.dom.classList.add("dataTable-table");const i=a("nav",{class:"dataTable-pagination"}),n=a("ul",{class:"dataTable-pagination-list"});i.appendChild(n),s=s.replace(/\{pager\}/g,i.outerHTML),this.wrapper.innerHTML=s,this.container=this.wrapper.querySelector(".dataTable-container"),this.pagers=this.wrapper.querySelectorAll(".dataTable-pagination-list"),this.label=this.wrapper.querySelector(".dataTable-info"),this.dom.parentNode.replaceChild(this.wrapper,this.dom),this.container.appendChild(this.dom),this.rect=this.dom.getBoundingClientRect(),this.data=Array.from(this.body.rows),this.activeRows=this.data.slice(),this.activeHeadings=this.headings.slice(),this.update(),this.setColumns(),this.fixHeight(),this.fixColumns(),e.header||this.wrapper.classList.add("no-header"),e.footer||this.wrapper.classList.add("no-footer"),e.sortable&&this.wrapper.classList.add("sortable"),e.searchable&&this.wrapper.classList.add("searchable"),e.fixedHeight&&this.wrapper.classList.add("fixed-height"),e.fixedColumns&&this.wrapper.classList.add("fixed-columns"),this.bindEvents()}renderPage(){if(this.hasHeadings&&(n(this.header),this.activeHeadings.forEach((t=>this.header.appendChild(t)))),this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);const t=this.currentPage-1,e=document.createDocumentFragment();this.pages[t].forEach((t=>e.appendChild(this.rows().render(t)))),this.clear(e),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.setMessage(this.options.labels.noRows);let t,e=0,s=0,i=0;if(this.totalPages&&(e=this.currentPage-1,s=e*this.options.perPage,i=s+this.pages[e].length,s+=1,t=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){const e=this.options.labels.info.replace("{start}",s).replace("{end}",i).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",t);this.label.innerHTML=t?e:""}1==this.currentPage&&this.fixHeight()}renderPager(){if(n(this.pagers),this.totalPages>1){const t="pager",e=document.createDocumentFragment(),s=this.onFirstPage?1:this.currentPage-1,i=this.onLastPage?this.totalPages:this.currentPage+1;this.options.firstLast&&e.appendChild(r(t,1,this.options.firstText)),this.options.nextPrev&&!this.onFirstPage&&e.appendChild(r(t,s,this.options.prevText));let n=this.links;this.options.truncatePager&&(n=((t,e,s,i,n)=>{let r;const o=2*(i=i||2);let h=e-i,l=e+i;const d=[],c=[];e<4-i+o?l=3+o:e>s-(3-i+o)&&(h=s-(2+o));for(let e=1;e<=s;e++)if(1==e||e==s||e>=h&&e<=l){const s=t[e-1];s.classList.remove("active"),d.push(s)}return d.forEach((e=>{const s=e.children[0].getAttribute("data-page");if(r){const e=r.children[0].getAttribute("data-page");if(s-e==2)c.push(t[e]);else if(s-e!=1){const t=a("li",{class:"ellipsis",html:`${n}`});c.push(t)}}c.push(e),r=e})),c})(this.links,this.currentPage,this.pages.length,this.options.pagerDelta,this.options.ellipsisText)),this.links[this.currentPage-1].classList.add("active"),n.forEach((t=>{t.classList.remove("active"),e.appendChild(t)})),this.links[this.currentPage-1].classList.add("active"),this.options.nextPrev&&!this.onLastPage&&e.appendChild(r(t,i,this.options.nextText)),this.options.firstLast&&e.appendChild(r(t,this.totalPages,this.options.lastText)),this.pagers.forEach((t=>{t.appendChild(e.cloneNode(!0))}))}}renderHeader(){this.labels=[],this.headings&&this.headings.length&&this.headings.forEach(((t,e)=>{if(this.labels[e]=t.textContent,t.firstElementChild&&t.firstElementChild.classList.contains("dataTable-sorter")&&(t.innerHTML=t.firstElementChild.innerHTML),t.sortable="false"!==t.getAttribute("data-sortable"),t.originalCellIndex=e,this.options.sortable&&t.sortable){const e=a("a",{href:"#",class:"dataTable-sorter",html:t.innerHTML});t.innerHTML="",t.setAttribute("data-sortable",""),t.appendChild(e)}})),this.fixColumns()}bindEvents(){const t=this.options;if(t.perPageSelect){const e=this.wrapper.querySelector(".dataTable-selector");e&&e.addEventListener("change",(()=>{t.perPage=parseInt(e.value,10),this.update(),this.fixHeight(),this.emit("datatable.perpage",t.perPage)}),!1)}t.searchable&&(this.input=this.wrapper.querySelector(".dataTable-input"),this.input&&this.input.addEventListener("keyup",(()=>this.search(this.input.value)),!1)),this.wrapper.addEventListener("click",(e=>{const s=e.target.closest("a");s&&"a"===s.nodeName.toLowerCase()&&(s.hasAttribute("data-page")?(this.page(s.getAttribute("data-page")),e.preventDefault()):t.sortable&&s.classList.contains("dataTable-sorter")&&"false"!=s.parentNode.getAttribute("data-sortable")&&(this.columns().sort(this.headings.indexOf(s.parentNode)),e.preventDefault()))}),!1),window.addEventListener("resize",this.listeners.onResize)}onResize(){this.rect=this.container.getBoundingClientRect(),this.rect.width&&this.fixColumns()}setColumns(t){t||this.data.forEach((t=>{Array.from(t.cells).forEach((t=>{t.data=t.innerHTML}))})),this.options.columns&&this.headings.length&&this.options.columns.forEach((t=>{Array.isArray(t.select)||(t.select=[t.select]),t.hasOwnProperty("render")&&"function"==typeof t.render&&(this.selectedColumns=this.selectedColumns.concat(t.select),this.columnRenderers.push({columns:t.select,renderer:t.render})),t.select.forEach((e=>{const s=this.headings[e];t.type&&s.setAttribute("data-type",t.type),t.format&&s.setAttribute("data-format",t.format),t.hasOwnProperty("sortable")&&s.setAttribute("data-sortable",t.sortable),t.hasOwnProperty("hidden")&&!1!==t.hidden&&this.columns().hide([e]),t.hasOwnProperty("sort")&&1===t.select.length&&this.columns().sort(t.select[0],t.sort,!0)}))})),this.hasRows&&(this.data.forEach(((t,e)=>{t.dataIndex=e,Array.from(t.cells).forEach((t=>{t.data=t.innerHTML}))})),this.selectedColumns.length&&this.data.forEach((t=>{Array.from(t.cells).forEach(((e,s)=>{this.selectedColumns.includes(s)&&this.columnRenderers.forEach((i=>{i.columns.includes(s)&&(e.innerHTML=i.renderer.call(this,e.data,e,t))}))}))})),this.columns().rebuild()),this.render("header")}destroy(){this.dom.innerHTML=this.initialLayout,this.dom.classList.remove("dataTable-table"),this.wrapper.parentNode.replaceChild(this.dom,this.wrapper),this.initialized=!1,window.removeEventListener("resize",this.listeners.onResize)}update(){this.wrapper.classList.remove("dataTable-empty"),this.paginate(this),this.render("page"),this.links=[];let t=this.pages.length;for(;t--;){const e=t+1;this.links[t]=r(0===t?"active":"",e,e)}this.sorting=!1,this.render("pager"),this.rows().update(),this.emit("datatable.update")}paginate(){const t=this.options.perPage;let e=this.activeRows;return this.searching&&(e=[],this.searchData.forEach((t=>e.push(this.activeRows[t])))),this.options.paging?this.pages=e.map(((s,i)=>i%t==0?e.slice(i,i+t):null)).filter((t=>t)):this.pages=[e],this.totalPages=this.lastPage=this.pages.length,this.totalPages}fixColumns(){if((this.options.scrollY.length||this.options.fixedColumns)&&this.activeHeadings&&this.activeHeadings.length){let t,e=!1;if(this.columnWidths=[],this.dom.tHead){if(this.options.scrollY.length&&(e=a("thead"),e.appendChild(a("tr")),e.style.height="0px",this.headerTable&&(this.dom.tHead=this.headerTable.tHead)),this.activeHeadings.forEach((t=>{t.style.width=""})),this.activeHeadings.forEach(((t,s)=>{const i=t.offsetWidth,n=i/this.rect.width*100;if(t.style.width=`${n}%`,this.columnWidths[s]=i,this.options.scrollY.length){const t=a("th");e.firstElementChild.appendChild(t),t.style.width=`${n}%`,t.style.paddingTop="0",t.style.paddingBottom="0",t.style.border="0"}})),this.options.scrollY.length){const t=this.dom.parentElement;if(!this.headerTable){this.headerTable=a("table",{class:"dataTable-table"});const e=a("div",{class:"dataTable-headercontainer"});e.appendChild(this.headerTable),t.parentElement.insertBefore(e,t)}const s=this.dom.tHead;this.dom.replaceChild(e,s),this.headerTable.tHead=s,this.headerTable.parentElement.style.paddingRight=`${this.headerTable.clientWidth-this.dom.clientWidth+parseInt(this.headerTable.parentElement.style.paddingRight||"0",10)}px`,t.scrollHeight>t.clientHeight&&(t.style.overflowY="scroll")}}else{t=[],e=a("thead");const s=a("tr");Array.from(this.dom.tBodies[0].rows[0].cells).forEach((()=>{const e=a("th");s.appendChild(e),t.push(e)})),e.appendChild(s),this.dom.insertBefore(e,this.body);const i=[];t.forEach(((t,e)=>{const s=t.offsetWidth,a=s/this.rect.width*100;i.push(a),this.columnWidths[e]=s})),this.data.forEach((t=>{Array.from(t.cells).forEach(((t,e)=>{this.columns(t.cellIndex).visible()&&(t.style.width=`${i[e]}%`)}))})),this.dom.removeChild(e)}}}fixHeight(){this.options.fixedHeight&&(this.container.style.height=null,this.rect=this.container.getBoundingClientRect(),this.container.style.height=`${this.rect.height}px`)}search(t){return!!this.hasRows&&(t=t.toLowerCase(),this.currentPage=1,this.searching=!0,this.searchData=[],t.length?(this.clear(),this.data.forEach(((e,s)=>{const i=this.searchData.includes(e);t.split(" ").reduce(((t,s)=>{let i=!1,a=null,n=null;for(let t=0;tthis.pages.length||t<0)&&(this.render("page"),this.render("pager"),void this.emit("datatable.page",t)))}sortColumn(t,e){this.columns().sort(t,e)}insert(t){let e=[];if(i(t)){if(t.headings&&!this.hasHeadings&&!this.hasRows){const e=a("tr");t.headings.forEach((t=>{const s=a("th",{html:t});e.appendChild(s)})),this.head.appendChild(e),this.header=e,this.headings=[].slice.call(e.cells),this.hasHeadings=!0,this.options.sortable=this.initialSortable,this.render("header"),this.activeHeadings=this.headings.slice()}t.data&&Array.isArray(t.data)&&(e=t.data)}else Array.isArray(t)&&t.forEach((t=>{const s=[];Object.entries(t).forEach((([t,e])=>{const i=this.labels.indexOf(t);i>-1&&(s[i]=e)})),e.push(s)}));e.length&&(this.rows().add(e),this.hasRows=!0),this.update(),this.setColumns(),this.fixColumns()}refresh(){this.options.searchable&&(this.input.value="",this.searching=!1),this.currentPage=1,this.onFirstPage=!0,this.update(),this.emit("datatable.refresh")}clear(t){this.body&&n(this.body);let e=this.body;this.body||(e=this.dom),t&&("string"==typeof t&&(document.createDocumentFragment().innerHTML=t),e.appendChild(t))}export(t){if(!this.hasHeadings&&!this.hasRows)return!1;const e=this.activeHeadings;let s=[];const a=[];let n,r,o,h;if(!i(t))return!1;const l={download:!0,skipColumn:[],lineDelimiter:"\n",columnDelimiter:",",tableName:"myTable",replacer:null,space:4,...t};if(l.type){if("txt"!==l.type&&"csv"!==l.type||(s[0]=this.header),l.selection)if(isNaN(l.selection)){if(Array.isArray(l.selection))for(n=0;n{e.data[i]=[];const a=t.split(s.columnDelimiter);a.length&&a.forEach((t=>{e.data[i].push(t)}))})))}else if("json"===s.type){const t=(t=>{let e=!1;try{e=JSON.parse(t)}catch(t){return!1}return!(null===e||!Array.isArray(e)&&!i(e))&&e})(s.data);t&&(e={headings:[],data:[]},t.forEach(((t,s)=>{e.data[s]=[],Object.entries(t).forEach((([t,i])=>{e.headings.includes(t)||e.headings.push(t),e.data[s].push(i)}))})))}i(s.data)&&(e=s.data),e&&this.insert(e)}return!1}print(){const t=this.activeHeadings,e=this.activeRows,s=a("table"),i=a("thead"),n=a("tbody"),r=a("tr");t.forEach((t=>{r.appendChild(a("th",{html:t.textContent}))})),i.appendChild(r),e.forEach((t=>{const e=a("tr");Array.from(t.cells).forEach((t=>{e.appendChild(a("td",{html:t.textContent}))})),n.appendChild(e)})),s.appendChild(i),s.appendChild(n);const o=window.open();o.document.body.appendChild(s),o.print()}setMessage(t){let e=1;this.hasRows?e=this.data[0].cells.length:this.activeHeadings.length&&(e=this.activeHeadings.length),this.wrapper.classList.add("dataTable-empty"),this.label&&(this.label.innerHTML=""),this.totalPages=0,this.render("pager"),this.clear(a("tr",{html:`${t}`}))}columns(t){return new l(this,t)}rows(t){return new h(this,t)}on(t,e){this.events=this.events||{},this.events[t]=this.events[t]||[],this.events[t].push(e)}off(t,e){this.events=this.events||{},t in this.events!=0&&this.events[t].splice(this.events[t].indexOf(e),1)}emit(t){if(this.events=this.events||{},t in this.events!=0)for(let e=0;e +
+
+

Table

+

Sortable and searchable.

+
+
+
+ + {% endblock %} \ No newline at end of file diff --git a/code/maintenance_entries.py b/code/maintenance_entries.py index a85d7d39..7361bb33 100644 --- a/code/maintenance_entries.py +++ b/code/maintenance_entries.py @@ -42,6 +42,7 @@ def check_validity_backlog(): if r.is_redirect or r.history: print('{} redirected to {}, {}'.format(url, r.url, r.history)) + def create_toc(title, file, entries): """ @@ -697,15 +698,6 @@ class EntriesMaintainer: print('statistics updated') - def update_html(self): - """ - """ - if not self.entries: - print('entries not yet loaded') - return - - print('HTML not updated') - def update_repos(self): """ export to json for local repository update of primary repos @@ -905,7 +897,6 @@ if __name__ == "__main__": 'Clean backlog': m.clean_backlog, 'Update Readme and TOCs': m.update_readme_tocs, 'Update statistics': m.update_statistics, - 'Update HTML': m.update_html, 'Update repository list': m.update_repos, 'Special': m.special_ops, 'Complete run': m.complete_run diff --git a/code/utils/constants.py b/code/utils/constants.py index 37b10d45..ed850873 100644 --- a/code/utils/constants.py +++ b/code/utils/constants.py @@ -7,15 +7,17 @@ import configparser # paths root_path = os.path.realpath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir)) +code_path = os.path.join(root_path, 'code') +web_template_path = os.path.join(code_path, 'html') entries_path = os.path.join(root_path, 'entries') tocs_path = os.path.join(entries_path, 'tocs') -code_path = os.path.join(root_path, 'code') -web_path = os.path.join(root_path, 'docs') screenshots_path = os.path.join(entries_path, 'screenshots') -web_template_path = os.path.join(code_path, 'html') + +web_path = os.path.join(root_path, 'docs') web_css_path = os.path.join(web_path, 'css') web_js_path = os.path.join(web_path, 'js') web_screenshots_path = os.path.join(web_path, 'screenshots') +web_data_path = os.path.join(web_path, 'data') private_properties_file = os.path.join(root_path, 'private.properties') inspirations_file = os.path.join(root_path, 'inspirations.md') diff --git a/code/utils/osg.py b/code/utils/osg.py index 9da71b9b..5b685162 100644 --- a/code/utils/osg.py +++ b/code/utils/osg.py @@ -657,9 +657,13 @@ def write_screenshots_overview(overview): text = utils.read_text(c.screenshots_file) text = text.split('\n# ')[0] + '\n' - for name, a in overview.items(): + # write out each entry sorted by name + for name in sorted(overview.keys()): + a = overview[name] t = '# {}\n\n'.format(name) - for id, ai in a.items(): + # write out each line sorted by id + for id in sorted(a.keys()): + ai = a[id] if ai[-1] is None: ai = ai[:-1] t += ' '.join(['{:02d}'.format(id)] + [str(x) for x in ai]) + '\n' diff --git a/docs/contribute.html b/docs/contribute.html index 87b1a41e..04ed08fb 100644 --- a/docs/contribute.html +++ b/docs/contribute.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Contributions @@ -81,7 +81,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/css/simple-datatables.css b/docs/css/simple-datatables.css new file mode 100644 index 00000000..0bc5cdef --- /dev/null +++ b/docs/css/simple-datatables.css @@ -0,0 +1,173 @@ +.dataTable-wrapper.no-header .dataTable-container { + border-top: 1px solid #d9d9d9; +} + +.dataTable-wrapper.no-footer .dataTable-container { + border-bottom: 1px solid #d9d9d9; +} + +.dataTable-top, +.dataTable-bottom { + padding: 8px 10px; +} + +.dataTable-top > nav:first-child, +.dataTable-top > div:first-child, +.dataTable-bottom > nav:first-child, +.dataTable-bottom > div:first-child { + float: left; +} + +.dataTable-top > nav:last-child, +.dataTable-top > div:last-child, +.dataTable-bottom > nav:last-child, +.dataTable-bottom > div:last-child { + float: right; +} + +.dataTable-selector { + padding: 6px; +} + +.dataTable-input { + padding: 6px 12px; +} + +.dataTable-info { + margin: 7px 0; +} + +/* PAGER */ +.dataTable-pagination ul { + margin: 0; + padding-left: 0; +} + +.dataTable-pagination li { + list-style: none; + float: left; +} + +.dataTable-pagination a { + border: 1px solid transparent; + float: left; + margin-left: 2px; + padding: 6px 12px; + position: relative; + text-decoration: none; + color: #333; +} + +.dataTable-pagination a:hover { + background-color: #d9d9d9; +} + +.dataTable-pagination .active a, +.dataTable-pagination .active a:focus, +.dataTable-pagination .active a:hover { + background-color: #d9d9d9; + cursor: default; +} + +.dataTable-pagination .ellipsis a, +.dataTable-pagination .disabled a, +.dataTable-pagination .disabled a:focus, +.dataTable-pagination .disabled a:hover { + cursor: not-allowed; +} + +.dataTable-pagination .disabled a, +.dataTable-pagination .disabled a:focus, +.dataTable-pagination .disabled a:hover { + cursor: not-allowed; + opacity: 0.4; +} + +.dataTable-pagination .pager a { + font-weight: bold; +} + +/* TABLE */ +.dataTable-table { + max-width: 100%; + width: 100%; + border-spacing: 0; + border-collapse: separate; +} + +.dataTable-table > tbody > tr > td, +.dataTable-table > tbody > tr > th, +.dataTable-table > tfoot > tr > td, +.dataTable-table > tfoot > tr > th, +.dataTable-table > thead > tr > td, +.dataTable-table > thead > tr > th { + vertical-align: top; + padding: 8px 10px; +} + +.dataTable-table > thead > tr > th { + vertical-align: bottom; + text-align: left; + border-bottom: 1px solid #d9d9d9; +} + +.dataTable-table > tfoot > tr > th { + vertical-align: bottom; + text-align: left; + border-top: 1px solid #d9d9d9; +} + +.dataTable-table th { + vertical-align: bottom; + text-align: left; +} + +.dataTable-table th a { + text-decoration: none; + color: inherit; +} + +.dataTable-sorter { + display: inline-block; + height: 100%; + position: relative; + width: 100%; +} + +.dataTable-sorter::before, +.dataTable-sorter::after { + content: ""; + height: 0; + width: 0; + position: absolute; + right: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + opacity: 0.2; +} + +.dataTable-sorter::before { + border-top: 4px solid #000; + bottom: 0px; +} + +.dataTable-sorter::after { + border-bottom: 4px solid #000; + border-top: 4px solid transparent; + top: 0px; +} + +.asc .dataTable-sorter::after, +.desc .dataTable-sorter::before { + opacity: 0.6; +} + +.dataTables-empty { + text-align: center; +} + +.dataTable-top::after, .dataTable-bottom::after { + clear: both; + content: " "; + display: table; +} diff --git a/docs/data/entries.json b/docs/data/entries.json new file mode 100644 index 00000000..f54c9dac --- /dev/null +++ b/docs/data/entries.json @@ -0,0 +1,13204 @@ +{ + "headings": [ + "Title", + "State", + "Tags", + "Platform", + "Language", + "License" + ], + "data": [ + [ + "Curse of War (Entry)", + "mature, inactive since 2014", + "strategy", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "A7Xpg (Entry)", + "beta, inactive since 2005", + "arcade", + "-", + "D", + "2-clause BSD" + ], + [ + "Abe's Amazing Adventure (Entry)", + "mature, inactive since 2005", + "platform", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Abuse (Entry)", + "mature, inactive since 2011", + "action, platform, remake", + "Linux", + "C++, Lisp", + "Public domain, GPL-2.0, WTFPL" + ], + [ + "Waste's Edge (Entry)", + "beta", + "role playing", + "-", + "Python", + "GPL-2.0" + ], + [ + "Project Dollhouse (Entry)", + "beta", + "remake, simulation", + "-", + "C#", + "MPL-2.0" + ], + [ + "Ajax3d (Entry)", + "beta, inactive since 2007", + "action, remake", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "Alex the Allegator 4 (Entry)", + "mature, inactive since 2003", + "platform", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Wyrmsun (Entry)", + "mature", + "strategy", + "-", + "Lua, C++", + "GPL-2.0" + ], + [ + "Fluid Table Tennis (Entry)", + "mature, inactive since 2013", + "arcade, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Fall of Imiryn (Entry)", + "beta, inactive since 2009", + "role playing", + "-", + "C++, Python", + "GPL-3.0" + ], + [ + "Annchienta (Entry)", + "mature, inactive since 2009", + "framework", + "-", + "C++", + "0" + ], + [ + "Annex: Conquer the World (Entry)", + "mature, inactive since 2014", + "strategy", + "Windows, Linux", + "Lua", + "GPL-3.0" + ], + [ + "Abuse 1996 (Entry)", + "mature, inactive since 2016", + "remake", + "-", + "C++, Lisp", + "Custom, Public domain, GPL-2.0, WTFPL" + ], + [ + "Kingdoms (Entry)", + "beta, inactive since 2014", + "strategy", + "Linux", + "C++", + "GPL-3.0" + ], + [ + "OpenMortal (Entry)", + "beta, inactive since 2006", + "action", + "Windows, Linux, macOS", + "C++, Perl", + "GPL-2.0" + ], + [ + "OpenFly (Entry)", + "beta, inactive since 2001", + "remake, simulation", + "-", + "C", + "GPL-2.0" + ], + [ + "Venzone (Entry)", + "mature", + "adventure, platform", + "-", + "Haskell", + "GPL-3.0" + ], + [ + "Arrakis (Entry)", + "mature, inactive since 2000", + "remake, strategy", + "-", + "Basic", + "Custom" + ], + [ + "Atomic Tanks (Entry)", + "mature, inactive since 2016", + "action", + "Windows, Linux", + "C++, C", + "GPL-2.0" + ], + [ + "Atomiks (Entry)", + "mature, inactive since 2015", + "puzzle, remake", + "-", + "C, Objective-C", + "GPL-3.0" + ], + [ + "Avanor (Entry)", + "beta, inactive since 2008", + "role playing", + "-", + "C++, Lua, C", + "GPL-2.0" + ], + [ + "Balder2D (Entry)", + "beta, inactive since 2009", + "strategy", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Batalla Naval (Entry)", + "mature, inactive since 2002", + "arcade", + "-", + "C, Shell", + "GPL-2.0" + ], + [ + "CBoard (Entry)", + "beta, inactive since 2018", + "tool", + "-", + "C", + "0" + ], + [ + "Biniax (Entry)", + "mature, inactive since 2012", + "action, puzzle", + "Windows, Linux, macOS, Android", + "C", + "zlib" + ], + [ + "Biogenesis (Entry)", + "beta", + "simulation", + "-", + "Java", + "GPL-2.0" + ], + [ + "Bitfighter (Entry)", + "mature", + "action", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "Blobby Volley 2 (Entry)", + "mature, inactive since 2017", + "action, arcade", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Digbuild (Entry)", + "beta, inactive since 2011", + "remake", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "PARPG (Entry)", + "beta, inactive since 2012", + "remake, role playing", + "-", + "Python", + "GPL-3.0" + ], + [ + "Transfusion (Entry)", + "beta, inactive since 2007", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Orbium (Entry)", + "mature, inactive since 2018", + "remake, strategy", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "Bombermaaan (Entry)", + "mature, inactive since 2010", + "action, arcade", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Bombic (Entry)", + "beta, inactive since 2005", + "action, remake", + "Linux, macOS", + "C++, Objective-C", + "GPL-2.0" + ], + [ + "Bombic2 (Entry)", + "beta, inactive since 2010", + "action, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Boson (Entry)", + "beta, inactive since 2006", + "strategy", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Birth of the Empires (Entry)", + "mature, inactive since 2016", + "strategy", + "-", + "C++", + "Custom" + ], + [ + "Brain Workshop (Entry)", + "mature, inactive since 2011", + "puzzle", + "Windows, Linux, macOS", + "Python", + "GPL-2.0" + ], + [ + "BRIQUOLO (Entry)", + "mature, inactive since 2008", + "action", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Grimsonland (Entry)", + "mature, inactive since 2017", + "action", + "Web", + "JavaScript, TypeScript", + "MIT" + ], + [ + "Battle Tanks (Entry)", + "mature, inactive since 2009", + "action, arcade", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Bygfoot (Entry)", + "beta", + "simulation, sports, strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "Jake2 (Entry)", + "beta, inactive since 2006", + "action, game engine, remake", + "Windows, Linux", + "Java", + "0" + ], + [ + "Cannon Smash (Entry)", + "beta, inactive since 2003", + "sports", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Caph (Entry)", + "mature, inactive since 2010", + "puzzle, simulation", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "Cataclysm (Entry)", + "beta, inactive since 2012", + "role playing", + "-", + "C++", + "CC-BY-SA-3.0" + ], + [ + "Cat Mother Dead Justice (Entry)", + "beta, inactive since 2003", + "action, adventure", + "Windows", + "C++", + "3-clause BSD, GPL-2.0" + ], + [ + "Chromium B.S.U. (Entry)", + "mature", + "action", + "-", + "C++", + "Artistic License-1.0" + ], + [ + "Chunk Stories (Entry)", + "beta", + "game engine, simulation", + "Windows, Linux, macOS", + "Kotlin, Java", + "0" + ], + [ + "Civil (Entry)", + "beta, inactive since 2003", + "strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Greenius' Civil War (Entry)", + "beta, inactive since 2001", + "remake, strategy", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Conquests (Entry)", + "mature, inactive since 2012", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Construo (Entry)", + "beta, inactive since 2015", + "simulation", + "-", + "C++", + "GPL-3.0" + ], + [ + "CorEngine (Entry)", + "beta, inactive since 2015", + "game engine", + "-", + "C", + "b" + ], + [ + "CorsixTH (Entry)", + "mature", + "remake, simulation, strategy", + "-", + "Lua, C++", + "MIT" + ], + [ + "chainreaction (Entry)", + "mature, inactive since 2017", + "remake, strategy", + "-", + "Java", + "LGPL-3.0" + ], + [ + "Dungeon Crawl Stone Soup (Entry)", + "mature", + "role playing", + "-", + "C++, Lua", + "GPL-2.0" + ], + [ + "The Castles of Dr. Creep (Entry)", + "mature", + "puzzle, remake", + "-", + "C++, Shell", + "GPL-3.0" + ], + [ + "Crimson Fields (Entry)", + "mature, inactive since 2010", + "strategy", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Critterding (Entry)", + "beta, inactive since 2013", + "simulation, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Crossfire (Entry)", + "mature", + "role playing", + "-", + "C, Java", + "GPL-2.0" + ], + [ + "Civilization: Call To Power 2 Source Project (Entry)", + "mature", + "remake, strategy", + "-", + "C, C++", + "Custom" + ], + [ + "Cultivation (Entry)", + "mature, inactive since 2010", + "simulation", + "Windows, Linux, macOS", + "C++", + "Public domain" + ], + [ + "CETech (Entry)", + "beta", + "game engine", + "Linux, macOS", + "C, C++", + "0" + ], + [ + "Cytadela (Entry)", + "beta, inactive since 2013", + "remake", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Danger from the Deep (Entry)", + "beta, inactive since 2011", + "remake, simulation", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Dark Oberon (Entry)", + "mature, inactive since 2009", + "strategy", + "-", + "C++, C, Objective-C", + "GPL-2.0" + ], + [ + "Godot Card Game Framework (Entry)", + "mature", + "cards, game engine", + "-", + "GDScript", + "0" + ], + [ + "Wintermute Engine (Entry)", + "beta, inactive since 2013", + "game engine", + "-", + "C++, C", + "T" + ], + [ + "Jazz\u00b2 Resurrection (Entry)", + "mature", + "platform, remake", + "Windows, Linux, macOS, Android, Web", + "C#, JavaScript", + "GPL-3.0" + ], + [ + "Deity (Entry)", + "mature, inactive since 2014", + "tool", + "-", + "Python", + "0" + ], + [ + "Doomsday Engine (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0, GPL-3.0, LGPL-3.0" + ], + [ + "DeSmuME (Entry)", + "mature, inactive since 2015", + "framework", + "Windows, Linux, macOS", + "C, C++", + "0" + ], + [ + "D-Fend Reloaded (Entry)", + "mature, inactive since 2015", + "tool", + "Windows", + "Pascal", + "0" + ], + [ + "DirectPython (Entry)", + "beta, inactive since 2007", + "library", + "Windows", + "C++", + "D" + ], + [ + "VVVVVV (Entry)", + "mature", + "platform, remake", + "-", + "ActionScript, C++", + "Custom" + ], + [ + "DNT (Entry)", + "beta, inactive since 2016", + "role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "Domination (Entry)", + "mature", + "board, strategy", + "Windows, Linux, macOS, Android", + "Java", + "GPL-3.0" + ], + [ + "Doom Legacy (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Dune Dynasty (Entry)", + "mature, inactive since 2014", + "remake, strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Dune Legacy (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Dungeon Mapper (Entry)", + "beta, inactive since 2013", + "tool", + "-", + "C++", + "0" + ], + [ + "eAdventure (Entry)", + "mature, inactive since 2014", + "adventure, game engine", + "-", + "Java, C#", + "0" + ], + [ + "FrEee (Entry)", + "beta", + "strategy", + "-", + "C#", + "CC-BY-NC-SA-2.0" + ], + [ + "Egoboo (Entry)", + "mature, inactive since 2015", + "role playing", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Sarah-Maries Eierjagd (Entry)", + "mature, inactive since 2005", + "arcade", + "-", + "C++", + "GPL-2.0" + ], + [ + "Elysium Engine (Entry)", + "beta, inactive since 2006", + "game engine, role playing", + "Linux", + "C", + "0" + ], + [ + "Dragon Hunt (Entry)", + "mature", + "role playing", + "-", + "Python", + "GPL-2.0" + ], + [ + "Erebus (Entry)", + "beta", + "role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "Esenthel Engine (Entry)", + "beta", + "game engine", + "Windows, Linux, macOS, Android, iOS, Web", + "C, C++", + "m" + ], + [ + "Exult (Entry)", + "mature", + "remake, role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Fictional Air Combat (Entry)", + "beta, inactive since 2012", + "simulation", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Falcon's Eye (Entry)", + "mature, inactive since 2004", + "remake, simulation", + "Windows, Linux", + "C", + "NetHack General Public License" + ], + [ + "Fish Fillets - Next Generation (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Flixel (Entry)", + "mature", + "framework", + "-", + "ActionScript", + "T" + ], + [ + "FLTrator (Entry)", + "mature, inactive since 2016", + "arcade", + "Windows", + "C++", + "GPL-3.0" + ], + [ + "Flukz (Entry)", + "beta, inactive since 2014", + "action", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "FooBillard (Entry)", + "mature, inactive since 2010", + "simulation, sports", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "FooBillard++ (Entry)", + "mature, inactive since 2012", + "simulation, sports", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Forsaken (Entry)", + "beta, inactive since 2013", + "remake", + "-", + "C, C++", + "GPL-2.0, Proprietary" + ], + [ + "Bastet (Entry)", + "beta, inactive since 2018", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "Freeciv Alpha Centauri project (Entry)", + "beta, inactive since 2003", + "remake, strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "FreeRails (Entry)", + "beta, inactive since 2008", + "remake, strategy", + "-", + "Java, C++", + "GPL-2.0" + ], + [ + "FreeSiege (Entry)", + "beta", + "puzzle, remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Freestars (Entry)", + "beta, inactive since 2008", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "FreeSynd (Entry)", + "beta, inactive since 2017", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Free Tennis (Entry)", + "beta, inactive since 2005", + "sports, strategy", + "-", + "OCaml", + "GPL-2.0" + ], + [ + "FreeTrain (Entry)", + "beta, inactive since 2009", + "simulation", + "-", + "C#, C++", + "LGPL-2.1" + ], + [ + "freeVikings (Entry)", + "beta", + "platform, puzzle", + "Windows", + "Ruby", + "GPL-2.0" + ], + [ + "Frets on Fire (Entry)", + "mature, inactive since 2008", + "music, remake", + "Windows, Linux, macOS", + "Python", + "GPL-2.0" + ], + [ + "Freya Game Engine (Entry)", + "beta, inactive since 2002", + "game engine, strategy", + "-", + "Java", + "1" + ], + [ + "Frozen Bubble (Entry)", + "mature, inactive since 2012", + "puzzle", + "Linux, macOS, Android", + "Perl, C++", + "GPL-2.0" + ], + [ + "Free Space Colonization (Entry)", + "beta, inactive since 2017", + "strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "Trip on the Funny Boat (Entry)", + "mature, inactive since 2007", + "arcade", + "Windows, Linux", + "Python", + "GPL-2.0" + ], + [ + "GalaxyNG (Entry)", + "mature, inactive since 2005", + "strategy", + "-", + "C, PHP, Shell", + "GPL-2.0" + ], + [ + "Game Editor (Entry)", + "mature, inactive since 2014", + "framework", + "Windows, Linux, macOS, iOS", + "C, C++", + "0" + ], + [ + "Castle of the Winds in Elm (Entry)", + "beta", + "remake, role playing", + "Web", + "Elm, JavaScript", + "MIT" + ], + [ + "Castle of the Winds (Entry)", + "beta, inactive since 2016", + "remake, role playing", + "Web", + "JavaScript", + "MIT" + ], + [ + "Python Kye (Entry)", + "mature, inactive since 2010", + "arcade, puzzle, remake", + "-", + "Python", + "GPL-2.0" + ], + [ + "GPL Arcade Volleyball (Entry)", + "beta, inactive since 2006", + "action, arcade, sports", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "GoldenEye: Source (Entry)", + "mature, inactive since 2018", + "remake", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Gideros (Entry)", + "mature", + "framework", + "Windows, Linux, macOS, Android", + "C, C++, Lua", + "?" + ], + [ + "Gigalomania (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Glest (Entry)", + "mature, inactive since 2009", + "strategy", + "-", + "C++, Shell", + "GPL-2.0" + ], + [ + "Golly (Entry)", + "mature", + "simulation", + "Windows, Linux, macOS, Android", + "C++, Java", + "GPL-2.0" + ], + [ + "Grobots (Entry)", + "mature, inactive since 2014", + "simulation", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "GUSANOS (Entry)", + "beta, inactive since 2006", + "action, remake", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Gusty's Serpents (Entry)", + "beta, inactive since 2014", + "action, arcade", + "Windows", + "C++", + "GPL-3.0" + ], + [ + "Gweled (Entry)", + "mature", + "puzzle", + "Linux", + "C, Shell", + "GPL-2.0" + ], + [ + "Hypercube (Entry)", + "mature, inactive since 2016", + "puzzle", + "-", + "Java", + "GPL-2.0" + ], + [ + "Gravitation (Entry)", + "mature, inactive since 2008", + "adventure", + "Windows, Linux, macOS", + "C++", + "Public domain" + ], + [ + "Passage (Entry)", + "mature, inactive since 2011", + "role playing", + "Windows, Linux, macOS", + "C++", + "Public domain" + ], + [ + "Hedgewars (Entry)", + "mature", + "action", + "Windows, Linux, iOS", + "Lua, C, C++, Pascal, Haskell", + "GPL-2.0" + ], + [ + "Hematite (Entry)", + "beta", + "remake, simulation", + "-", + "Rust", + "MIT" + ], + [ + "Heroine Dusk (Entry)", + "mature, inactive since 2017", + "role playing", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "Hex-a-hop (Entry)", + "mature, inactive since 2013", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "HexGL (Entry)", + "mature, inactive since 2016", + "role playing", + "Web", + "JavaScript, CoffeeScript", + "MIT" + ], + [ + "HHexen (Entry)", + "mature, inactive since 2013", + "strategy", + "Linux", + "C", + "GPL-2.0" + ], + [ + "HoDoKu (Entry)", + "mature, inactive since 2013", + "puzzle", + "Windows, Linux, macOS", + "Java", + "GPL-3.0" + ], + [ + "Fairy-Max (Entry)", + "mature, inactive since 2018", + "simulation", + "-", + "C", + "Custom" + ], + [ + "Heart of the Alien (Entry)", + "beta, inactive since 2005", + "adventure, remake", + "Windows", + "C", + "GPL-2.0" + ], + [ + "Airstrike (Entry)", + "beta, inactive since 2014", + "arcade", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Duke3D (Entry)", + "beta, inactive since 2009", + "action, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Gee Whiz (Entry)", + "beta, inactive since 2004", + "role playing", + "-", + "C, Shell", + "GPL-2.0" + ], + [ + "Rise of the Triad for Linux (Entry)", + "mature, inactive since 2012", + "action, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Tennix! (Entry)", + "mature", + "sports, strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Bt Builder (Entry)", + "beta", + "remake, tool", + "-", + "C, C++", + "0" + ], + [ + "Ostrich Riders (Entry)", + "beta", + "arcade, remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "Undum (Entry)", + "mature, inactive since 2018", + "framework", + "Web", + "JavaScript", + "T" + ], + [ + "iiChantra (Entry)", + "beta, inactive since 2012", + "action", + "Windows, Linux", + "C++", + "MIT" + ], + [ + "Infon Battle Arena (Entry)", + "beta, inactive since 2012", + "simulation, strategy", + "Windows, Linux", + "C, Lua", + "GPL-2.0" + ], + [ + "Snowballz (Entry)", + "beta, inactive since 2007", + "strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Freeserf (Entry)", + "mature", + "remake, strategy", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Dust Racing 2D (Entry)", + "mature", + "remake, sports", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "kiki the nano bot (Entry)", + "mature, inactive since 2007", + "puzzle", + "Windows, macOS", + "C++", + "Public domain" + ], + [ + "Minilens (Entry)", + "mature, inactive since 2018", + "platform, puzzle", + "Windows, Linux, macOS, Android, Web", + "GDScript", + "GPL-3.0" + ], + [ + "KQ Lives (Entry)", + "beta, inactive since 2011", + "role playing", + "-", + "C", + "GPL-2.0" + ], + [ + "Krank (Entry)", + "beta, inactive since 2008", + "role playing", + "Windows, Linux, macOS", + "Python", + "Public domain" + ], + [ + "Krystal Drop (Entry)", + "beta, inactive since 2004", + "puzzle, remake", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Operation Citadel (Entry)", + "beta, inactive since 2000", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "HGE (Entry)", + "beta, inactive since 2013", + "game engine", + "Windows", + "C, Haskell", + "b" + ], + [ + "Grail (Entry)", + "beta, inactive since 2013", + "adventure, game engine", + "Linux", + "C++, Lua", + "0" + ], + [ + "Lemmini (Entry)", + "beta, inactive since 2017", + "puzzle", + "-", + "Java", + "Apache-2.0" + ], + [ + "LBreakout2 (Entry)", + "mature, inactive since 2010", + "arcade", + "Linux", + "C", + "GPL-2.0" + ], + [ + "LBreakoutHD (Entry)", + "mature", + "arcade", + "Linux", + "C++", + "GPL-3.0" + ], + [ + "LGeneral (Entry)", + "mature, inactive since 2017", + "remake, strategy", + "Android", + "C", + "GPL-2.0" + ], + [ + "LMarbles (Entry)", + "beta", + "strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "LTris (Entry)", + "mature, inactive since 2013", + "puzzle", + "-", + "C", + "GPL-2.0" + ], + [ + "Online Chess Club (Entry)", + "mature", + "strategy", + "Web", + "PHP, JavaScript", + "GPL-2.0" + ], + [ + "Libre: The Open Source Card Game (Entry)", + "mature, inactive since 2010", + "cards, tool", + "-", + "Python, Shell", + "0" + ], + [ + "Lincity (Entry)", + "mature, inactive since 2005", + "simulation", + "-", + "C", + "GPL-2.0" + ], + [ + "Powermanga (Entry)", + "beta, inactive since 2015", + "arcade", + "Linux", + "C", + "GPL-3.0" + ], + [ + "TecnoballZ (Entry)", + "beta, inactive since 2016", + "arcade", + "-", + "C++", + "GPL-3.0" + ], + [ + "3d.city (Entry)", + "mature, inactive since 2016", + "simulation", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "Labyrinth of Worlds (Entry)", + "beta, inactive since 2010", + "role playing", + "-", + "C++", + "LGPL-3.0" + ], + [ + "uMario (Entry)", + "beta, inactive since 2016", + "platform, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "DukeGDX (Entry)", + "beta", + "action, remake", + "-", + "Java", + "GPL-3.0" + ], + [ + "PowerslaveGDX (Entry)", + "beta", + "action, remake", + "-", + "Java", + "Custom" + ], + [ + "RedneckGDX (Entry)", + "beta", + "action, remake", + "-", + "Java", + "Custom" + ], + [ + "TekwarGDX (Entry)", + "beta", + "action, remake", + "-", + "Java", + "Custom" + ], + [ + "WitchavenGDX (Entry)", + "beta", + "action, remake", + "-", + "Java", + "Custom" + ], + [ + "Machinations (Entry)", + "beta, inactive since 2003", + "strategy", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Mah-Jong (Entry)", + "mature", + "strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "ManiaDrive (Entry)", + "mature, inactive since 2008", + "framework, remake", + "Windows, Linux", + "PHP", + "?" + ], + [ + "Manic Digger (Entry)", + "mature, inactive since 2017", + "remake, simulation", + "Windows", + "C#", + "Public domain, Unlicense" + ], + [ + "Backbone Game Engine (Entry)", + "beta, inactive since 2016", + "game engine, platform", + "Web", + "JavaScript", + "T" + ], + [ + "Intricacy (Entry)", + "beta", + "puzzle", + "Windows, Linux, macOS", + "Haskell", + "GPL-3.0" + ], + [ + "Kuklomenos (Entry)", + "beta, inactive since 2012", + "arcade", + "-", + "C++", + "GPL-3.0" + ], + [ + "Meridian 59 (Entry)", + "mature", + "role playing", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Our Personal Space (Entry)", + "mature", + "simulation, visual novel", + "-", + "Ren'Py", + "GPL-3.0" + ], + [ + "Super Methane Brothers (Entry)", + "mature, inactive since 2011", + "arcade, remake", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Microracers (Entry)", + "beta, inactive since 2005", + "remake", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "MicroWar 2.0 (Entry)", + "mature, inactive since 2009", + "action", + "Windows, macOS", + "Python", + "3-clause BSD" + ], + [ + "Mega Mario (Entry)", + "mature, inactive since 2012", + "action, platform, remake", + "Windows", + "C++", + "LGPL-2.1" + ], + [ + "Moagg2 (Entry)", + "mature, inactive since 2008", + "arcade", + "Windows, Linux", + "Java", + "GPL-2.0" + ], + [ + "Mocha Doom (Entry)", + "beta, inactive since 2012", + "remake", + "-", + "Java", + "?" + ], + [ + "Mop(e)snake (Entry)", + "beta, inactive since 2009", + "arcade", + "-", + "Python", + "GPL-2.0" + ], + [ + "Mr.Boom (Entry)", + "mature", + "action, remake", + "-", + "C++, C", + "MIT" + ], + [ + "SteveTech1 (Entry)", + "beta, inactive since 2019", + "game engine", + "Windows, Linux", + "Java", + "T" + ], + [ + "Murder In The Public Domain (Entry)", + "mature, inactive since 2013", + "adventure, visual novel", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "MUSoSu (Entry)", + "beta, inactive since 2008", + "adventure", + "-", + "Java", + "GPL-3.0" + ], + [ + "NStars! (Entry)", + "beta, inactive since 2004", + "remake, strategy", + "Windows", + "C#", + "?" + ], + [ + "Numpty Physics (Entry)", + "beta, inactive since 2016", + "puzzle, simulation", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Nuvie (Entry)", + "beta, inactive since 2018", + "game engine, remake", + "-", + "C, C++, Lua", + "0" + ], + [ + "NXEngine (Entry)", + "mature", + "platform, remake", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "nXtank (Entry)", + "beta, inactive since 2010", + "action", + "Windows", + "Python, C++", + "GPL-3.0" + ], + [ + "Star Maiden Astraea Rio (Entry)", + "mature", + "adventure, visual novel", + "-", + "Ren'Py", + "MIT" + ], + [ + "Open Game Engine (Entry)", + "beta, inactive since 2008", + "framework, game engine", + "Windows", + "C++", + "1" + ], + [ + "Ogrian Carpet (Entry)", + "beta, inactive since 2018", + "action", + "-", + "C++", + "MIT" + ], + [ + "Mininim (Entry)", + "beta, inactive since 2017", + "action, remake", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "54321 (Entry)", + "mature, inactive since 2001", + "puzzle", + "-", + "C++", + "Custom" + ], + [ + "Kobo Deluxe (Entry)", + "beta, inactive since 2007", + "action", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "ONScripter (Entry)", + "mature, inactive since 2020", + "game engine, visual novel", + "Windows, Linux, macOS, Android", + "C++", + "0" + ], + [ + "Open Imperium Galactica (Entry)", + "mature", + "remake, strategy", + "-", + "Java", + "LGPL-3.0" + ], + [ + "OpenArena (Entry)", + "mature, inactive since 2012", + "action, remake", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Open Fodder (Entry)", + "mature", + "remake", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "OGS Mahjong (Entry)", + "mature, inactive since 2016", + "board, puzzle", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Open Jumpgate (Entry)", + "beta, inactive since 2017", + "remake, role playing, simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "OpenITG (Entry)", + "beta, inactive since 2017", + "music", + "Linux", + "C, C++", + "MIT" + ], + [ + "Open Meridian (Entry)", + "mature", + "remake, role playing", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "openMSX (Entry)", + "mature", + "action", + "Windows, macOS, Android", + "C++", + "GPL-2.0" + ], + [ + "OpenMW (Entry)", + "mature", + "game engine, remake, role playing", + "-", + "C++", + "0" + ], + [ + "Open Quartz (Entry)", + "beta, inactive since 2004", + "strategy", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Open Rails (Entry)", + "mature", + "simulation", + "-", + "C#", + "GPL-3.0" + ], + [ + "OpenRoads (Entry)", + "mature, inactive since 2014", + "arcade, remake", + "Web", + "TypeScript, JavaScript", + "MIT" + ], + [ + "Open RPG Maker (Entry)", + "beta, inactive since 2014", + "framework, role playing", + "-", + "C++", + "0" + ], + [ + "Open Simulator (Entry)", + "beta", + "adventure", + "-", + "C#", + "3-clause BSD" + ], + [ + "OpenSkyscraper (Entry)", + "beta", + "remake, simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "OpenSpades (Entry)", + "beta", + "remake", + "Windows, macOS", + "C, C++, AngelScript", + "GPL-3.0" + ], + [ + "Open Surge (Entry)", + "beta", + "action, platform", + "-", + "C", + "GPL-3.0" + ], + [ + "OpenTitus (Entry)", + "beta, inactive since 2014", + "remake", + "-", + "C", + "GPL-3.0" + ], + [ + "Overload (Entry)", + "mature", + "framework", + "Windows", + "C, C++", + "T" + ], + [ + "Pachi (Entry)", + "mature", + "board, strategy", + "Windows, Linux", + "C, Python", + "GPL-2.0" + ], + [ + "PainTown (Entry)", + "mature", + "action, arcade, game engine", + "Windows, Linux, macOS, Android", + "C++, Java, Python", + "D" + ], + [ + "Pasang Emas (Entry)", + "mature", + "board, strategy", + "Linux", + "Vala", + "GPL-3.0" + ], + [ + "Pathological (Entry)", + "beta, inactive since 2003", + "puzzle, remake", + "-", + "Python, Shell", + "GPL-2.0" + ], + [ + "PCGen (Entry)", + "mature", + "tool", + "-", + "Java", + "1" + ], + [ + "Pentagram (Entry)", + "beta, inactive since 2018", + "game engine, remake, role playing", + "Windows, Linux, macOS", + "C++", + "0" + ], + [ + "Performous (Entry)", + "mature", + "music", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "Afternoon Stalker (Entry)", + "mature, inactive since 2012", + "action, remake", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Cosmosmash (Entry)", + "mature, inactive since 2013", + "action, remake", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Phaser (Entry)", + "mature", + "framework", + "Web", + "JavaScript", + "T" + ], + [ + "phpRPG (Entry)", + "beta, inactive since 2006", + "game engine, role playing", + "Web", + "PHP", + "0" + ], + [ + "GameLV (Entry)", + "beta", + "adventure", + "-", + "C++", + "GPL-2.0" + ], + [ + "Emilia Pinball (Entry)", + "beta", + "simulation, sports", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "PipeWalker (Entry)", + "beta, inactive since 2012", + "puzzle", + "Windows", + "C++", + "GPL-3.0" + ], + [ + "Pixel Dungeon (Entry)", + "mature, inactive since 2015", + "role playing", + "Windows, Linux, macOS, Android", + "Java", + "GPL-3.0" + ], + [ + "Pizza Business (Entry)", + "mature, inactive since 2003", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Playir (Entry)", + "mature, inactive since 2014", + "game engine", + "Android, iOS, Web", + "C++", + "0" + ], + [ + "PLIB (Entry)", + "mature, inactive since 2012", + "framework", + "Windows, Linux, macOS", + "C++", + "0" + ], + [ + "Polycode (Entry)", + "beta", + "framework", + "-", + "C, C++", + "T" + ], + [ + "gist-txt (Entry)", + "mature, inactive since 2018", + "adventure, game engine", + "Web", + "JavaScript", + "T" + ], + [ + "PrBoom+ (Entry)", + "mature, inactive since 2016", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Primrose (Entry)", + "mature, inactive since 2009", + "puzzle", + "Windows, Linux, macOS", + "C++", + "Public domain" + ], + [ + "Privateer - Gemini Gold (Entry)", + "mature, inactive since 2012", + "adventure, remake, simulation", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "F.LF (Entry)", + "mature", + "framework", + "Web", + "JavaScript", + "0" + ], + [ + "Psyco (Entry)", + "mature, inactive since 2008", + "tool", + "Windows, Linux", + "C", + "T" + ], + [ + "PSY PONG 3D (Entry)", + "beta, inactive since 2009", + "arcade", + "-", + "C", + "GPL-3.0" + ], + [ + "Pymapper (Entry)", + "mature", + "tool", + "-", + "Python", + "0" + ], + [ + "pyRacerz (Entry)", + "beta, inactive since 2005", + "framework", + "-", + "Python", + "0" + ], + [ + "Quad-engine (Entry)", + "beta", + "framework", + "-", + "Pascal", + "T" + ], + [ + "ProQuake 4 (Entry)", + "mature, inactive since 2018", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "QuakeSpasm (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Rescue! Max (Entry)", + "beta, inactive since 2013", + "action, remake, strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "Ri-li (Entry)", + "mature, inactive since 2007", + "arcade", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Colossal Cave Adventure (Entry)", + "mature", + "adventure", + "-", + "Python", + "Apache-2.0" + ], + [ + "Hack (Entry)", + "mature, inactive since 1985", + "role playing", + "-", + "C", + "3-clause BSD" + ], + [ + "Rogue Clone IV (Entry)", + "mature, inactive since 2006", + "remake, role playing", + "-", + "C", + "3-clause BSD" + ], + [ + "HyperRogue (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS, Android", + "C++", + "GPL-2.0" + ], + [ + "RedShift (Entry)", + "beta, inactive since 2008", + "simulation", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "rock-raiders-remake (Entry)", + "beta", + "action, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Monsterz (Entry)", + "beta, inactive since 2007", + "arcade, puzzle", + "Windows, Linux, macOS", + "Python", + "WTFPL" + ], + [ + "GNU Shogi (Entry)", + "mature, inactive since 2018", + "strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "rpge (Entry)", + "beta, inactive since 2014", + "framework, role playing", + "-", + "C, Shell", + "0" + ], + [ + "The Ur-Quan Masters (Entry)", + "mature, inactive since 2011", + "remake, strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "FreeSpace 2 Source Code Project (Entry)", + "mature", + "remake, simulation", + "Windows, Linux, macOS", + "C, C++", + "Unlicense" + ], + [ + "Scrabble3D (Entry)", + "mature, inactive since 2015", + "board, strategy", + "Windows, Linux, macOS", + "Pascal", + "GPL-3.0" + ], + [ + "SDL Asylum (Entry)", + "mature, inactive since 2009", + "action, arcade, remake", + "Linux", + "C", + "GPL-3.0" + ], + [ + "SDL-Ball (Entry)", + "mature, inactive since 2016", + "arcade", + "Linux", + "C++", + "GPL-3.0" + ], + [ + "SDL Sopwith (Entry)", + "mature, inactive since 2014", + "action, remake", + "Linux", + "C, C++", + "GPL-2.0" + ], + [ + "Secret Maryo Chronicles (Entry)", + "mature, inactive since 2009", + "action, puzzle, remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "Scrolling Game Development Kit 2 (Entry)", + "mature, inactive since 2017", + "framework", + "Windows", + "C#", + "0" + ], + [ + "Fujo (Entry)", + "mature, inactive since 2014", + "role playing", + "-", + "Python", + "CC-BY-SA-4.0" + ], + [ + "Simple Sokoban (Entry)", + "mature, inactive since 2014", + "puzzle", + "-", + "C, Objective-C", + "GPL-3.0" + ], + [ + "Brogue (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS", + "C", + "AGPL-3.0" + ], + [ + "SLADE (Entry)", + "mature", + "tool", + "Windows, macOS", + "C++", + "0" + ], + [ + "Sleep Is Death (Entry)", + "mature, inactive since 2018", + "role playing", + "-", + "C++", + "?" + ], + [ + "Slime Volley (Entry)", + "mature, inactive since 2010", + "arcade", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "Word War vi (Entry)", + "mature", + "action", + "Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Openglad (Entry)", + "mature, inactive since 2004", + "remake, role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Siege of Avalon : Open Source (Entry)", + "beta, inactive since 2011", + "remake", + "-", + "Pascal", + "Custom" + ], + [ + "SoftPixel Engine (Entry)", + "mature, inactive since 2013", + "framework", + "Windows, Linux", + "C++, C", + "b" + ], + [ + "SokoSolve (Entry)", + "mature, inactive since 2009", + "puzzle", + "Windows, Linux", + "C#", + "GPL-3.0" + ], + [ + "Ambrose3D (Entry)", + "beta, inactive since 2007", + "game engine", + "Windows", + "C++", + "b" + ], + [ + "Sopwith 3 (Entry)", + "beta, inactive since 2003", + "remake, simulation", + "-", + "C, C++, Objective-C", + "GPL-2.0" + ], + [ + "Civitas (Entry)", + "beta, inactive since 2017", + "simulation", + "-", + "Java, Blender Script", + "GPL-2.0" + ], + [ + "SpaceZero (Entry)", + "beta", + "strategy", + "Linux", + "C", + "GPL-3.0" + ], + [ + "shadow-of-the-beast-html5 (Entry)", + "beta, inactive since 2017", + "action, remake", + "Web", + "JavaScript", + "Apache-2.0" + ], + [ + "Stareater (Entry)", + "beta", + "strategy", + "Windows, Linux, macOS", + "C#", + "GPL-3.0" + ], + [ + "Stargus (Entry)", + "beta, inactive since 2010", + "remake", + "-", + "C++, Lua", + "GPL-2.0" + ], + [ + "Star Ruler 2 (Entry)", + "mature", + "remake, strategy", + "-", + "C, C++", + "MIT" + ], + [ + "Arashi-JS (Entry)", + "beta, inactive since 2010", + "remake", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "orona (Entry)", + "beta, inactive since 2012", + "remake, strategy", + "Web", + "CoffeeScript", + "GPL-2.0" + ], + [ + "Vertigo (Entry)", + "beta, inactive since 2002", + "remake, simulation", + "Linux", + "C", + "GPL-2.0" + ], + [ + "Sudokuki (Entry)", + "mature, inactive since 2016", + "puzzle", + "Windows, Linux", + "C, Java", + "GPL-3.0" + ], + [ + "Superpowers (Entry)", + "mature", + "framework", + "Web", + "TypeScript", + "C" + ], + [ + "Syndicate Wars Port (Entry)", + "beta, inactive since 2010", + "action, remake, strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "T^3 (Entry)", + "beta, inactive since 2005", + "puzzle", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Tactics Squad (Entry)", + "beta, inactive since 2007", + "strategy", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Open Cube (Entry)", + "beta, inactive since 2017", + "game engine, remake", + "-", + "C++, C", + "b" + ], + [ + "TES3MP (Entry)", + "beta", + "remake", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "The Butterfly Effect (Entry)", + "beta", + "simulation", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "The Clans (Entry)", + "beta, inactive since 2003", + "role playing", + "-", + "C, Objective-C", + "GPL-2.0" + ], + [ + "jewelthief (Entry)", + "mature, inactive since 2016", + "arcade, remake", + "Android", + "Java", + "GPL-3.0" + ], + [ + "PrimeShooter (Entry)", + "mature, inactive since 2010", + "arcade, educational", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "Thunder&Lightning (Entry)", + "beta, inactive since 2015", + "simulation, strategy", + "-", + "C, C++, Io", + "GPL-2.0" + ], + [ + "I Have No Tomatoes (Entry)", + "mature, inactive since 2004", + "arcade, remake", + "Windows, Linux, macOS", + "C++", + "zlib" + ], + [ + "Toppler (Entry)", + "mature, inactive since 2012", + "action, puzzle, remake", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Tower Toppler (Entry)", + "mature, inactive since 2012", + "arcade, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "TORCS, The Open Racing Car Simulator (Entry)", + "mature, inactive since 2016", + "simulation", + "Windows, Linux", + "C++, C, PHP", + "GPL-2.0" + ], + [ + "Transcend (Entry)", + "beta, inactive since 2005", + "arcade, music", + "Windows, Linux, macOS", + "C++", + "?" + ], + [ + "Trigger (Entry)", + "beta", + "action", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Open Greedy (Entry)", + "beta, inactive since 2017", + "arcade", + "-", + "C", + "GPL-2.0" + ], + [ + "TROPHY (Entry)", + "mature, inactive since 2012", + "simulation", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Turbu (Entry)", + "beta, inactive since 2013", + "role playing, tool", + "-", + "Pascal", + "1" + ], + [ + "Tux Football (Entry)", + "beta, inactive since 2012", + "arcade, simulation, sports", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "TuxKart (Entry)", + "beta, inactive since 2004", + "role playing", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Tux Paint (Entry)", + "beta", + "educational", + "Windows, Linux, macOS, Android, iOS", + "C, C++", + "GPL-2.0" + ], + [ + "Tux Racer (Entry)", + "beta, inactive since 2001", + "action", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Twine (Entry)", + "mature", + "game engine, tool", + "Web", + "JavaScript, TypeScript", + "0" + ], + [ + "Dungeon Craft (Entry)", + "mature", + "remake, role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "UFO2000 (Entry)", + "mature, inactive since 2012", + "remake, strategy", + "-", + "C, C++, Lua", + "GPL-2.0" + ], + [ + "Hammer of Thyrion (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Nuncabola (Entry)", + "beta", + "action", + "-", + "Java", + "GPL-2.0" + ], + [ + "Underworld Adventures (Entry)", + "beta", + "role playing", + "-", + "C++, Lua", + "GPL-2.0" + ], + [ + "Vamos (Entry)", + "beta, inactive since 2014", + "simulation", + "Linux", + "C++, Python", + "GPL-3.0" + ], + [ + "VDrift (Entry)", + "mature, inactive since 2014", + "simulation", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "vitetris (Entry)", + "beta", + "puzzle, remake", + "Windows, Linux", + "C", + "2-clause BSD" + ], + [ + "Violetland (Entry)", + "beta", + "remake", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "xDuke (Entry)", + "beta, inactive since 2010", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Vorton (Entry)", + "beta, inactive since 2004", + "action, remake", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "Wargus (Entry)", + "mature", + "remake, strategy", + "-", + "C++, Lua, C", + "GPL-2.0" + ], + [ + "WAtomic (Entry)", + "mature, inactive since 2005", + "remake, strategy", + "-", + "Pascal", + "GPL-2.0" + ], + [ + "fRaBs (Entry)", + "mature, inactive since 2016", + "action, adventure", + "-", + "Lisp, C++, C", + "Public domain" + ], + [ + "Einstein Puzzle (Entry)", + "mature, inactive since 2005", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "Dmomd (Entry)", + "mature", + "role playing", + "-", + "Lisp", + "GPL-3.0" + ], + [ + "Domino On Acid (Entry)", + "mature, inactive since 2009", + "puzzle", + "-", + "Java", + "GPL-2.0" + ], + [ + "Wizznic! (Entry)", + "beta, inactive since 2016", + "arcade, puzzle, remake", + "-", + "C", + "GPL-3.0" + ], + [ + "Wizardry Legacy (Entry)", + "beta, inactive since 2018", + "remake", + "Windows, Linux", + "C++, C, Objective-C", + "GPL-3.0" + ], + [ + "Wograld (Entry)", + "beta", + "role playing", + "-", + "C", + "GPL-2.0" + ], + [ + "World of Phaos (Entry)", + "mature, inactive since 2011", + "role playing", + "Web", + "PHP", + "GPL-2.0" + ], + [ + "JGame (Entry)", + "mature, inactive since 2012", + "game engine", + "Windows, Linux, macOS", + "Java", + "D" + ], + [ + "Alien Assault Traders (Entry)", + "beta, inactive since 2009", + "strategy", + "Web", + "PHP", + "GPL-2.0" + ], + [ + "Omega-rpg (Entry)", + "beta, inactive since 2000", + "framework", + "-", + "C, Emacs Lisp", + "0" + ], + [ + "Nexuiz (Entry)", + "mature", + "action", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "OpenJazz (Entry)", + "beta", + "arcade, remake", + "Windows, macOS", + "C++", + "GPL-2.0" + ], + [ + "Allure of the Stars (Entry)", + "beta", + "role playing, strategy", + "Web", + "Haskell", + "AGPL-3.0" + ], + [ + "Armagetron Advanced (Entry)", + "mature", + "action", + "-", + "C++", + "GPL-2.0" + ], + [ + "Consomaton (Entry)", + "mature, inactive since 2016", + "puzzle", + "Web", + "TypeScript", + "MIT" + ], + [ + "Noiz2sa (Entry)", + "beta, inactive since 2004", + "arcade", + "Windows, Linux", + "C, C++", + "2-clause BSD" + ], + [ + "PARSEC47 (Entry)", + "beta, inactive since 2003", + "arcade", + "Windows, Linux", + "D", + "2-clause BSD" + ], + [ + "rRootage (Entry)", + "beta, inactive since 2004", + "game engine", + "Windows, Linux", + "C", + "D" + ], + [ + "Tumiki Fighters (Entry)", + "mature, inactive since 2005", + "arcade", + "Windows, Linux", + "D, C++", + "2-clause BSD" + ], + [ + "Advanced Strategic Command (Entry)", + "mature", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Meritous (Entry)", + "mature, inactive since 2008", + "role playing", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Daedalus (Entry)", + "mature, inactive since 2018", + "puzzle", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "Barony (Entry)", + "mature", + "remake, role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "Liberal Crime Squad (Entry)", + "mature, inactive since 2012", + "role playing, strategy", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Eboard (Entry)", + "mature", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "BlockOut II (Entry)", + "mature, inactive since 2014", + "puzzle, remake", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Bloodmasters (Entry)", + "mature, inactive since 2008", + "arcade", + "-", + "C#", + "GPL-2.0" + ], + [ + "C-evo (Entry)", + "mature, inactive since 2013", + "strategy", + "-", + "Pascal", + "Public domain, GPL-3.0" + ], + [ + "VMS Empire (Entry)", + "mature, inactive since 2014", + "strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "CaveExpress (Entry)", + "mature", + "platform", + "Windows, Linux, macOS, Android, Web", + "C, JavaScript", + "GPL-3.0" + ], + [ + "CavePacker (Entry)", + "mature", + "action", + "Windows, Linux", + "JavaScript, C, C++, Lua", + "GPL-3.0" + ], + [ + "Go Ollie! (Entry)", + "mature, inactive since 2011", + "platform", + "Windows, Linux", + "?", + "GPL-3.0" + ], + [ + "Simon Tatham's Portable Puzzle Collection (Entry)", + "mature", + "puzzle, remake", + "Windows, Linux, macOS, Android, iOS", + "C", + "MIT" + ], + [ + "Childsplay (Entry)", + "mature", + "adventure, educational", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "OpenBOR (Entry)", + "mature", + "game engine", + "-", + "C, C++", + "D" + ], + [ + "ClanLib (Entry)", + "mature", + "game engine", + "Windows, Linux", + "C, C++", + "b" + ], + [ + "Crown and Cutlass (Entry)", + "beta, inactive since 2009", + "remake, strategy", + "-", + "C++, C", + "Custom" + ], + [ + "Crystal Space 3D SDK (Entry)", + "mature, inactive since 2015", + "framework", + "Windows, Linux, macOS", + "C, C++", + "1" + ], + [ + "Dark Destiny (Entry)", + "mature, inactive since 2016", + "strategy", + "Web", + "Java, JavaScript", + "?" + ], + [ + "Deliantra (Entry)", + "mature", + "role playing", + "-", + "C, Perl, C++", + "GPL-2.0" + ], + [ + "D2X-XL (Entry)", + "mature, inactive since 2015", + "remake", + "Windows, Linux, macOS", + "C++", + "Custom, GPL-2.0" + ], + [ + "n2048 (Entry)", + "beta, inactive since 2014", + "puzzle", + "Linux", + "C", + "2-clause BSD" + ], + [ + "Dunnet (Entry)", + "mature, inactive since 1992", + "adventure", + "-", + "Emacs Lisp", + "GPL-3.0" + ], + [ + "sfxr (Entry)", + "mature, inactive since 2012", + "tool", + "Windows, macOS", + "C++", + "T" + ], + [ + "Linley's Dungeon Crawl (Entry)", + "mature, inactive since 2006", + "role playing", + "-", + "C, C++", + "Custom" + ], + [ + "Dungeon Eye (Entry)", + "beta, inactive since 2016", + "remake, role playing", + "-", + "C#", + "GPL-3.0" + ], + [ + "DwarfCorp (Entry)", + "mature", + "game engine, strategy", + "Windows, Linux, macOS", + "C#", + "T" + ], + [ + "Endgame: Singularity (Entry)", + "beta", + "strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Eternal Lands (Entry)", + "mature", + "role playing", + "-", + "C, C++", + "Custom" + ], + [ + "FIFE (Entry)", + "beta", + "game engine", + "Windows", + "C++, Python", + "1" + ], + [ + "Fractal Engine (Entry)", + "mature", + "game engine", + "-", + "C++", + "T" + ], + [ + "Freeciv (Entry)", + "mature", + "strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "FreeCol (Entry)", + "mature", + "remake, strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "War Of Kingdom (Entry)", + "beta", + "strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Galaxy Forces V2 (Entry)", + "mature", + "action, remake", + "-", + "C++", + "Public domain" + ], + [ + "GamePlay (Entry)", + "mature, inactive since 2016", + "game engine", + "Windows, Linux, macOS, Android, iOS", + "C++, C", + "0" + ], + [ + "GearHead (Entry)", + "mature", + "role playing", + "-", + "Pascal", + "LGPL-2.1, Apache-2.0" + ], + [ + "Eat The Whistle (Entry)", + "mature, inactive since 2017", + "remake, simulation", + "Windows, Linux, macOS", + "C", + "?" + ], + [ + "GLtron (Entry)", + "beta, inactive since 2017", + "action", + "Windows, Linux, macOS", + "C", + "?" + ], + [ + "Goblin Camp (Entry)", + "beta, inactive since 2012", + "strategy", + "-", + "C++, Python", + "GPL-3.0" + ], + [ + "micropolisJS (Entry)", + "mature", + "simulation", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "Linwarrior 3D (Entry)", + "mature, inactive since 2010", + "action", + "-", + "C++", + "Apache-2.0" + ], + [ + "Black Shades (Entry)", + "mature", + "simulation", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "H-Craft Championship (Entry)", + "mature, inactive since 2015", + "sports", + "-", + "C++, C", + "zlib" + ], + [ + "Isogenic Game Engine (Entry)", + "mature", + "game engine", + "Web", + "JavaScript", + "T" + ], + [ + "erampage (Entry)", + "beta, inactive since 2015", + "game engine, remake", + "-", + "C", + "0" + ], + [ + "JFDuke3D (Entry)", + "beta, inactive since 2005", + "game engine, remake", + "-", + "C", + "0" + ], + [ + "JonoF's Shadow Warrior Port (JFSW) (Entry)", + "beta, inactive since 2005", + "remake", + "Windows", + "C", + "GPL-2.0" + ], + [ + "JSkat (Entry)", + "beta", + "cards, role playing", + "Windows, Linux", + "Java", + "GPL-3.0, Apache-2.0" + ], + [ + "PyKaraoke (Entry)", + "beta, inactive since 2011", + "music", + "Windows, Linux, macOS", + "Python, C", + "LGPL-2.1" + ], + [ + "KlayGE (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS", + "C++", + "0" + ], + [ + "Knights (Entry)", + "beta, inactive since 2014", + "remake, role playing", + "Windows", + "C++", + "GPL-3.0" + ], + [ + "RPG-X (Entry)", + "mature, inactive since 2015", + "remake", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Slune (Entry)", + "mature, inactive since 2007", + "action", + "-", + "Python", + "GPL-2.0" + ], + [ + "Chroma (Entry)", + "mature", + "puzzle", + "Web", + "C", + "GPL-2.0" + ], + [ + "LieroLibre (Entry)", + "mature, inactive since 2017", + "action", + "-", + "C++", + "2-clause BSD" + ], + [ + "OpenLiero (Entry)", + "mature, inactive since 2015", + "action, arcade, remake", + "-", + "C++, C", + "Custom" + ], + [ + "Penguin Command (Entry)", + "mature, inactive since 2007", + "arcade", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Open Panzer (Entry)", + "mature", + "remake, strategy", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "Lix (Entry)", + "beta", + "puzzle", + "-", + "D, C++", + "CC0" + ], + [ + "Mana (Entry)", + "beta", + "framework, role playing", + "-", + "C++", + "0" + ], + [ + "Maratis (Entry)", + "beta", + "framework", + "-", + "C++", + "0" + ], + [ + "Tile World (Entry)", + "mature, inactive since 2015", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "3D Pong (Entry)", + "beta, inactive since 2004", + "arcade", + "Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Circus Linux! (Entry)", + "mature, inactive since 2000", + "action, remake", + "Windows, macOS", + "C", + "GPL-2.0" + ], + [ + "Defendguin (Entry)", + "mature, inactive since 2009", + "remake", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Gem Drop X (Entry)", + "beta, inactive since 2002", + "puzzle", + "Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "ICBM3D (Entry)", + "beta, inactive since 1998", + "arcade", + "-", + "C", + "?" + ], + [ + "Vectoroids (Entry)", + "mature, inactive since 2002", + "arcade, remake", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Billiards (Entry)", + "beta, inactive since 2012", + "simulation, sports", + "Linux", + "Lua, Objective-C", + "GPL-3.0" + ], + [ + "LordsAWar! (Entry)", + "mature", + "strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Which Way Is Up? (Entry)", + "beta, inactive since 2008", + "platform, puzzle", + "Windows, Linux", + "Python", + "GPL-2.0" + ], + [ + "Oolite (Entry)", + "mature", + "simulation", + "Windows, Linux, macOS", + "Objective-C, C, JavaScript", + "GPL-2.0" + ], + [ + "OpenAlchemist (Entry)", + "beta, inactive since 2010", + "puzzle", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "OpenCity (Entry)", + "beta, inactive since 2015", + "simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "OpenLieroX (Entry)", + "mature", + "action, arcade, remake", + "Windows", + "C++", + "LGPL-2.0" + ], + [ + "OpenRA (Entry)", + "mature", + "remake, strategy", + "-", + "C#", + "GPL-3.0" + ], + [ + "Open Yahtzee (Entry)", + "mature, inactive since 2016", + "strategy", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Other-Life (Entry)", + "beta", + "role playing", + "-", + "C, C++", + "Custom" + ], + [ + "Chrzaszcz (Entry)", + "beta, inactive since 2018", + "puzzle", + "Linux", + "C++", + "GPL-3.0" + ], + [ + "Zugspiel (Entry)", + "beta, inactive since 2004", + "simulation", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "PlaneShift (Entry)", + "mature", + "role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Atlantis (Entry)", + "mature, inactive since 2016", + "framework", + "-", + "C++", + "0" + ], + [ + "SWP (Entry)", + "mature", + "remake", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "PySol (Entry)", + "mature, inactive since 2004", + "cards, strategy", + "Windows, Linux, macOS", + "Python", + "GPL-2.0" + ], + [ + "QuakeJS (Entry)", + "mature", + "remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Race Into Space (Entry)", + "mature", + "remake, simulation, strategy", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "Duke3d_w32 (Entry)", + "beta, inactive since 2008", + "action, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Replica Island (Entry)", + "mature, inactive since 2011", + "platform", + "Android", + "Java", + "Apache-2.0" + ], + [ + "curses (Entry)", + "mature, inactive since 2000", + "library", + "Linux", + "C", + "?" + ], + [ + "Necklace of the Eye (Entry)", + "mature, inactive since 2016", + "tool", + "-", + "C++", + "0" + ], + [ + "Rolisteam (Entry)", + "mature", + "tool", + "Windows, Linux, macOS", + "C++, JavaScript", + "0" + ], + [ + "OpenRPG (Entry)", + "mature, inactive since 2013", + "framework, role playing", + "-", + "Python", + "0" + ], + [ + "Freebloks 3D for Android (Entry)", + "mature", + "strategy", + "Android", + "Kotlin, C++", + "GPL-2.0" + ], + [ + "Armor Alley (Entry)", + "beta", + "action, remake, strategy", + "Web", + "JavaScript", + "CC-BY-NC-3.0" + ], + [ + "Survivor (Entry)", + "mature", + "remake", + "Web", + "JavaScript", + "CC-BY-NC-3.0" + ], + [ + "Scorched3D (Entry)", + "mature, inactive since 2014", + "strategy", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Project Alexandria (Entry)", + "beta, inactive since 2007", + "arcade", + "-", + "Python", + "?" + ], + [ + "SLASH'EM (Entry)", + "beta, inactive since 2007", + "role playing", + "-", + "C, C++", + "Custom" + ], + [ + "Source of Tales (Entry)", + "mature, inactive since 2013", + "role playing", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Speed Dreams (Entry)", + "mature", + "action, simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "Classic Blades of Exile (Entry)", + "mature", + "role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Total Annihilation 3D (Entry)", + "beta, inactive since 2017", + "remake, strategy", + "Windows, Linux, macOS", + "C++, C, Lua", + "GPL-2.0" + ], + [ + "Terminal Overload (Entry)", + "beta, inactive since 2016", + "framework", + "-", + "C++, C, C#", + "0" + ], + [ + "Dragon History - Dra\u010d\u00ed Historie (Entry)", + "mature, inactive since 2010", + "adventure", + "-", + "Pascal, Script, Pascal, Assembly", + "GPL-2.0" + ], + [ + "Ularn (Entry)", + "mature, inactive since 2018", + "role playing", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Ultimate Stunts (Entry)", + "beta, inactive since 2013", + "remake", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "4D Maze Game (Entry)", + "mature, inactive since 2008", + "educational, puzzle", + "Windows, Linux, macOS", + "Java", + "Public domain" + ], + [ + "VASSAL (Entry)", + "mature", + "board, framework, game engine", + "Windows, Linux, macOS", + "Java", + "1" + ], + [ + "Wolfpack Empire (Entry)", + "mature", + "strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "XBill (Entry)", + "mature, inactive since 2001", + "arcade", + "Linux", + "C, Shell", + "GPL-2.0" + ], + [ + "X-Force: Fight For Destiny (Entry)", + "beta, inactive since 2011", + "strategy", + "-", + "Pascal", + "GPL-2.0" + ], + [ + "XPilot (Entry)", + "mature, inactive since 2010", + "action", + "Windows, Linux", + "C, C++", + "GPL-2.0" + ], + [ + "XSkat (Entry)", + "mature", + "cards, strategy", + "Windows, Linux, macOS, Android", + "Java", + "Custom" + ], + [ + "Yamagi Quake II (Entry)", + "mature", + "action, remake", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Infiniminer (Entry)", + "mature, inactive since 2016", + "simulation", + "-", + "C#", + "MIT" + ], + [ + "ZAngband (Entry)", + "mature, inactive since 2005", + "role playing", + "-", + "C", + "Custom" + ], + [ + "Zero Ballistics (Entry)", + "mature, inactive since 2013", + "action, strategy", + "Windows", + "C++", + "MIT" + ], + [ + "Zetawar (Entry)", + "mature", + "strategy", + "Web", + "Clojure", + "MIT" + ], + [ + "ZGameEditor (Entry)", + "mature", + "framework", + "-", + "Pascal", + "T" + ], + [ + "Orbit-Hopper (Entry)", + "mature, inactive since 2019", + "arcade", + "-", + "C++", + "GPL-2.0" + ], + [ + "wxLaserTank (Entry)", + "mature, inactive since 2009", + "remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Warzone 2100 (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "XArchon (Entry)", + "beta, inactive since 2003", + "strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "xBaK (Entry)", + "beta, inactive since 2013", + "remake", + "Linux", + "C++", + "GPL-3.0" + ], + [ + "XBlast (Entry)", + "mature, inactive since 2005", + "arcade", + "Windows, Linux", + "C, Java", + "GPL-2.0" + ], + [ + "Xconq (Entry)", + "mature, inactive since 2005", + "strategy", + "-", + "C++, C, Shell", + "GPL-2.0" + ], + [ + "Xenowar (Entry)", + "mature, inactive since 2014", + "strategy", + "Windows, Android", + "C, C++", + "GPL-3.0" + ], + [ + "XMage (Entry)", + "mature", + "cards, strategy", + "-", + "Java", + "MIT" + ], + [ + "XPilot NG (Entry)", + "mature, inactive since 2010", + "action, remake", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "XSwing Plus (Entry)", + "beta, inactive since 2010", + "remake", + "-", + "Java", + "GPL-3.0" + ], + [ + "xu4 (Entry)", + "mature, inactive since 2016", + "remake, role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Xye (Entry)", + "beta, inactive since 2013", + "arcade", + "-", + "C++", + "zlib" + ], + [ + "Chess3D (Entry)", + "mature, inactive since 2016", + "board, strategy", + "Web", + "JavaScript, Python", + "GPL-3.0" + ], + [ + "YSoccer (Entry)", + "mature", + "remake, simulation, sports", + "Windows, Linux, macOS", + "Java", + "GPL-2.0" + ], + [ + "Zatacka (Entry)", + "beta, inactive since 2007", + "arcade", + "Windows, Linux", + "C, C++", + "GPL-2.0" + ], + [ + "Zaz (Entry)", + "beta, inactive since 2010", + "puzzle, remake", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "ZDoom (Entry)", + "mature", + "remake", + "Windows, Linux, macOS", + "C, C++, ZenScript", + "GPL-3.0" + ], + [ + "Zero-K (Entry)", + "mature", + "strategy", + "-", + "Lua", + "GPL-2.0" + ], + [ + "Zod Engine (Entry)", + "mature, inactive since 2018", + "game engine, remake, strategy", + "Windows, Linux", + "C++", + "?" + ], + [ + "Open Horizon (Entry)", + "beta", + "remake, simulation", + "Windows, Linux, macOS", + "C++", + "MIT" + ], + [ + "Free Hero Mesh (Entry)", + "beta", + "framework, game engine", + "Linux", + "C, JavaScript", + "n" + ], + [ + "2006-rebotted (Entry)", + "mature", + "remake, role playing", + "-", + "Java", + "2-clause BSD" + ], + [ + "Seven Kingdoms: Ancient Adversaries (Entry)", + "mature", + "remake, strategy", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Me and My Shadow (Entry)", + "beta", + "puzzle", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Citybound (Entry)", + "beta", + "simulation", + "Windows, Linux, macOS", + "Rust, JavaScript", + "AGPL-3.0" + ], + [ + "Pixel Wheels (Entry)", + "beta", + "game engine", + "Windows, Linux, macOS, Android", + "Java", + "0" + ], + [ + "mc2 (Entry)", + "beta", + "remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Aleph One (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C++, Lua", + "GPL-3.0" + ], + [ + "Ancient Beast (Entry)", + "mature", + "strategy", + "Web", + "JavaScript", + "AGPL-3.0" + ], + [ + "OpenGL Test Drive Remake (Entry)", + "mature, inactive since 2015", + "remake", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Mindustry (Entry)", + "mature", + "action", + "Windows, Linux, Android", + "Java", + "GPL-3.0" + ], + [ + "BetterSpades (Entry)", + "beta", + "cards, remake", + "-", + "C", + "GPL-3.0" + ], + [ + "Colditz Escape (Entry)", + "mature", + "remake, strategy", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "Apos.Gui (Entry)", + "beta", + "library", + "-", + "C#", + "T" + ], + [ + "KGoldrunner (Entry)", + "mature", + "action, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Palapeli (Entry)", + "mature", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "Yo Frankie! (Entry)", + "mature, inactive since 2009", + "action, platform", + "Windows, Linux, macOS", + "Blender Script", + "?" + ], + [ + "Supremacy (Entry)", + "beta, inactive since 2014", + "strategy", + "-", + "C#", + "MS-RL" + ], + [ + "Excellent Bifurcation (Entry)", + "mature, inactive since 2007", + "action", + "-", + "C", + "GPL-2.0" + ], + [ + "Antares (Entry)", + "beta", + "remake, strategy", + "-", + "C++", + "LGPL-3.0" + ], + [ + "Arianne / Marauroa (Entry)", + "mature", + "framework", + "-", + "Java", + "0" + ], + [ + "Armory (Entry)", + "mature", + "framework", + "Windows, Linux, macOS", + "Haxe, Python", + "b" + ], + [ + "Arx Libertatis (Entry)", + "mature", + "remake, role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "AssaultCube (Entry)", + "mature, inactive since 2018", + "action", + "Windows, Linux, macOS", + "C, C++", + "Custom" + ], + [ + "Iter Vehemens ad Necem (Entry)", + "beta", + "role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Metaforce (Entry)", + "beta", + "game engine, remake", + "Windows, Linux, macOS", + "C, C++", + "T" + ], + [ + "Fantasy Map Generator (Entry)", + "mature", + "tool", + "Web", + "JavaScript", + "T" + ], + [ + "BAB BE U (Entry)", + "mature", + "puzzle", + "-", + "Lua", + "MIT" + ], + [ + "Ballerburg SDL (Entry)", + "mature", + "action, remake", + "-", + "C", + "GPL-3.0" + ], + [ + "skifree.js (Entry)", + "mature, inactive since 2016", + "arcade, remake, sports", + "Web", + "JavaScript", + "MIT" + ], + [ + "Battle City (Entry)", + "mature, inactive since 2013", + "action, remake, strategy", + "-", + "C, C++, Pascal", + "GPL-3.0" + ], + [ + "zztgo (Entry)", + "beta", + "remake", + "-", + "Go", + "MIT" + ], + [ + "BStone (Entry)", + "mature", + "remake, role playing", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "The Bub's Brothers (Entry)", + "mature, inactive since 2013", + "board, remake", + "Windows, Linux, macOS", + "Python, C", + "MIT" + ], + [ + "Space Trader for Android (Entry)", + "mature, inactive since 2016", + "strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "GDash (Entry)", + "beta", + "action, remake", + "-", + "C++", + "MIT" + ], + [ + "CaesarIA (Entry)", + "beta", + "remake, simulation, strategy", + "Windows, Linux, macOS", + "C++, JavaScript, C", + "GPL-3.0" + ], + [ + "POSTAL 1 Open Source (Entry)", + "beta, inactive since 2018", + "remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Team Tactics (Entry)", + "beta, inactive since 2016", + "action", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Block Attack - Rise of the Blocks (Entry)", + "mature", + "puzzle", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "boardgame.io (Entry)", + "beta", + "game engine, strategy", + "Web", + "JavaScript, TypeScript", + "T" + ], + [ + "Bobby (Entry)", + "mature", + "puzzle, remake", + "Web", + "TypeScript", + "AGPL-3.0" + ], + [ + "LibreMines (Entry)", + "mature", + "puzzle", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Box2D (Entry)", + "mature", + "library", + "-", + "C, C++, Objective-C", + "b" + ], + [ + "Tetris (in C and NCURSES) (Entry)", + "mature", + "puzzle, remake", + "-", + "C", + "3-clause BSD" + ], + [ + "Space Harrier Clone (Entry)", + "beta, inactive since 2018", + "strategy", + "Windows", + "C, C++", + "MIT" + ], + [ + "Ball And Wall (Entry)", + "mature, inactive since 2015", + "action", + "Web", + "JavaScript", + "MIT" + ], + [ + "Candy Box 2 (Entry)", + "mature, inactive since 2013", + "role playing", + "Web", + "TypeScript, JavaScript", + "GPL-3.0" + ], + [ + "Project Carrot (Entry)", + "beta, inactive since 2017", + "remake", + "-", + "C++", + "MIT" + ], + [ + "Castle Game Engine (Entry)", + "mature", + "framework, game engine", + "-", + "Pascal", + "0" + ], + [ + "Cataclysm: Dark Days Ahead (Entry)", + "mature", + "remake, role playing", + "Windows, Linux, macOS", + "C++", + "CC-BY-SA-3.0" + ], + [ + "Catacomb 3-D (Entry)", + "mature, inactive since 1991", + "action", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Catch Challenger (Entry)", + "mature", + "role playing", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Dash Engine (Entry)", + "mature, inactive since 2015", + "framework", + "-", + "D", + "T" + ], + [ + "Commander Genius (Entry)", + "mature", + "action, remake", + "Windows, Linux, Android", + "C, C++", + "GPL-2.0" + ], + [ + "COCOS2D-X (Entry)", + "mature", + "framework", + "-", + "C++", + "T" + ], + [ + "AI Wars (Entry)", + "beta, inactive since 2010", + "strategy", + "-", + "Python", + "MIT" + ], + [ + "Artillery Duel Reloaded (Entry)", + "beta, inactive since 2012", + "action, remake", + "-", + "Python", + "GPL-3.0" + ], + [ + "Evil Cult (Entry)", + "mature", + "strategy", + "Web", + "Haxe, JavaScript", + "GPL-3.0" + ], + [ + "Dodge (Entry)", + "mature, inactive since 2012", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "FAR Colony (Entry)", + "beta, inactive since 2014", + "strategy", + "-", + "Pascal", + "GPL-3.0" + ], + [ + "GalaxyMage Redux (Entry)", + "beta, inactive since 2011", + "role playing", + "-", + "Python", + "GPL-2.0" + ], + [ + "gamekit (Entry)", + "mature, inactive since 2015", + "game engine", + "Windows, Linux, macOS, Android", + "C++, C", + "b" + ], + [ + "l-echo (Entry)", + "beta, inactive since 2016", + "puzzle, remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "Mercenary Commander (Entry)", + "beta, inactive since 2010", + "strategy", + "Android", + "Java", + "3-clause BSD" + ], + [ + "Polis (Entry)", + "mature, inactive since 2016", + "strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "SilverTree (Entry)", + "beta, inactive since 2007", + "role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "Snelps (Entry)", + "beta, inactive since 2012", + "strategy", + "Windows, Linux, macOS", + "Ruby", + "LGPL-2.1" + ], + [ + "Song of Albion (Entry)", + "mature, inactive since 2011", + "strategy", + "-", + "C, C++", + "Apache-2.0" + ], + [ + "Tttris (Entry)", + "mature, inactive since 2012", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Tyger (Entry)", + "beta, inactive since 2016", + "adventure, game engine, remake", + "-", + "Python", + "?" + ], + [ + "Wizards Magic (Entry)", + "mature, inactive since 2012", + "cards, remake, strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Freekick 3 (Entry)", + "mature, inactive since 2015", + "remake, simulation, sports", + "-", + "C++, Python", + "GPL-3.0" + ], + [ + "Marble Marcher (Entry)", + "mature", + "puzzle", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Colobot: Gold Edition (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "MineClone 2 (Entry)", + "beta", + "simulation", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Core War (Entry)", + "mature", + "simulation", + "-", + "C, Java", + "GPL-2.0, 2-clause BSD" + ], + [ + "Retro Stack (Entry)", + "mature", + "arcade", + "Android", + "Kotlin", + "GPL-3.0" + ], + [ + "CrossUO (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "C-Dogs SDL (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Cytopia (Entry)", + "beta", + "simulation", + "-", + "C++", + "GPL-3.0" + ], + [ + "EmptyEpsilon (Entry)", + "mature", + "role playing", + "Windows, Linux, Android", + "C, C++, Lua", + "GPL-2.0" + ], + [ + "Omnispeak (Entry)", + "mature", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "DDraceNetwork (Entry)", + "beta", + "platform", + "Windows, Linux, macOS", + "C, C++", + "zlib" + ], + [ + "Delta Engine (Entry)", + "mature, inactive since 2015", + "framework", + "-", + "C#", + "0" + ], + [ + "Deer Portal (Entry)", + "beta", + "adventure, board, cards", + "Windows, Linux", + "C++", + "zlib" + ], + [ + "dhewm3 (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "Digger Remastered (Entry)", + "mature, inactive since 2004", + "action, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "MafiaUnity (Entry)", + "beta, inactive since 2020", + "action, remake", + "Windows", + "C#", + "Apache-2.0" + ], + [ + "OpenXRay (Entry)", + "mature", + "action, game engine, remake", + "-", + "C++, Lua", + "?" + ], + [ + "TyrQuake (Entry)", + "beta", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Dave Gnukem (Entry)", + "mature", + "platform", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Cattle Bity (Entry)", + "mature", + "action", + "Web", + "TypeScript", + "MIT" + ], + [ + "Doom64EX (Entry)", + "mature", + "action, remake", + "Windows, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "Strife: Veteran Edition (Entry)", + "beta, inactive since 2016", + "remake", + "-", + "C, C++, Objective-C", + "GPL-3.0" + ], + [ + "Dope Wars (Entry)", + "mature, inactive since 2013", + "remake, simulation", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Boohu (Entry)", + "beta", + "role playing", + "Web", + "Go", + "ISC" + ], + [ + "Dreerally (Entry)", + "beta", + "game engine, remake", + "-", + "C, C++", + "m" + ], + [ + "DRL (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS", + "Lua, Pascal", + "GPL-2.0" + ], + [ + "Tux Rider (Entry)", + "mature, inactive since 2019", + "arcade", + "Android", + "C", + "GPL-2.0" + ], + [ + "Uebergame (Entry)", + "mature", + "action", + "Windows", + "TorqueScript, C#", + "MIT" + ], + [ + "Dune II - The Maker (Entry)", + "beta", + "remake, strategy", + "Windows", + "Java", + "MIT" + ], + [ + "EasyRPG Editor (Entry)", + "mature", + "role playing, tool", + "Windows, Linux", + "C++", + "0" + ], + [ + "EasyRPG Player (Entry)", + "mature", + "framework", + "-", + "C++", + "0" + ], + [ + "Blinken (Entry)", + "mature", + "educational", + "-", + "C++", + "GPL-2.0" + ], + [ + "Supaxl (Entry)", + "mature", + "puzzle, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Fire Strike Retro (Entry)", + "mature", + "action", + "Android", + "Java, Haxe, JavaScript, Ruby, PHP", + "MIT" + ], + [ + "Clumsy Bird (Entry)", + "mature, inactive since 2017", + "remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Imperium (Entry)", + "mature", + "role playing", + "-", + "?", + "?" + ], + [ + "Endless Sky (Entry)", + "mature", + "role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "NOVA PINBALL (Entry)", + "beta, inactive since 2017", + "sports", + "Windows, Linux, macOS, Android, iOS", + "Lua", + "GPL-3.0" + ], + [ + "ENIGMA (development environment) (Entry)", + "mature", + "framework", + "-", + "C++, C", + "0" + ], + [ + "The Eternity Engine (Entry)", + "mature", + "game engine, remake", + "Windows, Linux, macOS", + "C, C++", + "0" + ], + [ + "OpenEtG (Entry)", + "beta", + "cards, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Etterna (Entry)", + "beta", + "music", + "Windows, macOS", + "C, C++, Lua", + "MIT" + ], + [ + "Escape Towards The Unknown (Entry)", + "beta, inactive since 2016", + "adventure", + "Windows, macOS", + "C", + "GPL-2.0" + ], + [ + "ezEngine (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS, Android", + "C++, JavaScript", + "T" + ], + [ + "Falltergeist (Entry)", + "beta", + "game engine, remake, role playing", + "Windows, Linux", + "C++", + "0" + ], + [ + "Fanwor (Entry)", + "mature", + "adventure, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Planet Rider (Entry)", + "mature, inactive since 2015", + "arcade", + "Windows, Linux, Android", + "GDScript", + "GPL-3.0" + ], + [ + "Anteform (Entry)", + "beta", + "role playing", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Minima (Entry)", + "mature", + "role playing", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Flare (Entry)", + "mature", + "framework, game engine", + "Windows, Linux, macOS", + "C++, Java, Python", + "0" + ], + [ + "fonline (Entry)", + "beta", + "remake, strategy", + "-", + "C, C++, C#", + "GPL-3.0" + ], + [ + "Frets on Fire X (Entry)", + "mature", + "music, remake", + "-", + "Python", + "GPL-2.0" + ], + [ + "twin-e (Entry)", + "beta, inactive since 2015", + "adventure, game engine, remake", + "-", + "C", + "0" + ], + [ + "TwinEngine (Entry)", + "mature, inactive since 2015", + "adventure, game engine, remake", + "-", + "C", + "0" + ], + [ + "Outpost HD (Entry)", + "beta", + "remake, simulation", + "-", + "C++", + "3-clause BSD" + ], + [ + "freeablo (Entry)", + "beta", + "action, remake, role playing", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Freedoom (Entry)", + "beta", + "action, remake", + "Windows, Linux, macOS", + "None, Python", + "None" + ], + [ + "Freeminer (Entry)", + "beta", + "simulation", + "Windows, Linux, Android", + "C++, Lua", + "GPL-3.0" + ], + [ + "FreeSO (Entry)", + "beta", + "game engine, remake, simulation", + "-", + "C#", + "0" + ], + [ + "FTEQW (Entry)", + "mature", + "action", + "Windows, Linux, macOS, Android", + "C", + "GPL-2.0" + ], + [ + "Fusee (Entry)", + "beta", + "game engine", + "-", + "C#, Python", + "T" + ], + [ + "Gamedev Framework (gf) (Entry)", + "beta", + "framework", + "-", + "C++", + "b" + ], + [ + "Rot Magus (Entry)", + "beta", + "remake, role playing", + "Web", + "JavaScript", + "Apache-2.0, CC0" + ], + [ + "Puzzle Moppet (Entry)", + "mature, inactive since 2015", + "puzzle", + "Windows, Linux, macOS", + "C++", + "WTFPL" + ], + [ + "NetRadiant-custom (Entry)", + "mature", + "tool", + "Windows, Linux", + "C++, C", + "0" + ], + [ + "GBDK (Entry)", + "mature", + "library, tool", + "Windows, Linux, macOS", + "C, Assembly, C++", + "T" + ], + [ + "GCompris (Entry)", + "mature", + "educational", + "Windows, Linux, macOS, Android", + "C, Python", + "GPL-3.0" + ], + [ + "GemRB (Entry)", + "mature", + "framework, remake", + "-", + "C++, Python", + "0" + ], + [ + "ges-code (Entry)", + "mature", + "action, remake", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Pink Pony (Entry)", + "mature, inactive since 2017", + "puzzle", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Forge (Entry)", + "mature", + "cards, strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "Star-Wars-III (Entry)", + "mature, inactive since 2014", + "arcade, remake", + "-", + "Python", + "GPL-2.0" + ], + [ + "Project-Uranium-Godot (Entry)", + "beta", + "role playing", + "Windows, Linux, macOS", + "GDScript", + "MIT" + ], + [ + "War1 (Entry)", + "beta", + "remake, strategy", + "-", + "C", + "zlib" + ], + [ + "AdaDoom3 (Entry)", + "beta", + "action, remake", + "-", + "Ada", + "GPL-3.0" + ], + [ + "Jet-Story (Entry)", + "beta", + "action, remake", + "-", + "Assembly, C, C++", + "MIT" + ], + [ + "wkbre (Entry)", + "beta", + "remake, strategy", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "OpenTESArena (Entry)", + "beta", + "game engine, remake", + "Windows, Linux, macOS", + "C++", + "T" + ], + [ + "LBA2 Remake (Entry)", + "beta", + "adventure, remake", + "Web", + "TypeScript", + "MIT" + ], + [ + "Flex Engine (Entry)", + "beta", + "game engine", + "-", + "C++", + "T" + ], + [ + "jsFO (Entry)", + "beta, inactive since 2017", + "remake, role playing", + "Web", + "JavaScript, Python", + "Apache-2.0" + ], + [ + "DynaDungeons (Entry)", + "beta, inactive since 2018", + "action", + "-", + "GDScript", + "GPL-3.0" + ], + [ + "Memoria (Entry)", + "mature", + "remake, tool", + "-", + "C#", + "T" + ], + [ + "WWW (Entry)", + "beta, inactive since 2014", + "platform, puzzle", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "noiz2-droid (Entry)", + "mature, inactive since 2015", + "action", + "Android", + "Java", + "2-clause BSD" + ], + [ + "Mighty Knight (Entry)", + "mature, inactive since 2018", + "arcade", + "Android", + "PHP, GDScript", + "MIT" + ], + [ + "DroidZebra (Entry)", + "mature, inactive since 2015", + "strategy", + "Android", + "C, Java", + "GPL-3.0" + ], + [ + "Faur (Entry)", + "beta", + "puzzle", + "Windows, Linux, Web", + "C, Python, C++", + "GPL-3.0" + ], + [ + "Tux Builder (Entry)", + "beta", + "platform", + "Windows, Linux, macOS", + "GDScript", + "GPL-3.0" + ], + [ + "Alimer (Entry)", + "beta", + "game engine", + "-", + "C++", + "T" + ], + [ + "Vortice (Entry)", + "mature", + "framework", + "-", + "C#, C++", + "T" + ], + [ + "DirectX12GameEngine (Entry)", + "beta", + "game engine", + "Windows", + "C#", + "T" + ], + [ + "Do It Yourself Doom With SDL (Entry)", + "beta", + "game engine, remake", + "Windows", + "C++", + "T" + ], + [ + "mkxp (Entry)", + "mature", + "framework", + "-", + "C++, C", + "0" + ], + [ + "Tux Memory (Entry)", + "mature, inactive since 2014", + "puzzle", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Torrega Race (Entry)", + "mature, inactive since 2015", + "simulation", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Foursies (Entry)", + "mature, inactive since 2016", + "board, strategy", + "-", + "Elm, JavaScript", + "GPL-3.0" + ], + [ + "Sootl (Entry)", + "beta, inactive since 2016", + "arcade", + "Web", + "Elm, JavaScript", + "GPL-2.0" + ], + [ + "ika (Entry)", + "beta, inactive since 2007", + "game engine, role playing", + "Windows", + "C++, Python, PHP, C#", + "0" + ], + [ + "Skifree-HTML5-clone (Entry)", + "beta, inactive since 2011", + "arcade, remake, sports", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "SuperFoulEgg (Entry)", + "mature, inactive since 2014", + "remake", + "macOS", + "Objective-C, C", + "MIT" + ], + [ + "Pygame---Alien-Invasion (Entry)", + "beta, inactive since 2018", + "arcade", + "Windows, Linux, macOS", + "Python", + "GPL-3.0" + ], + [ + "Room for Change (Entry)", + "mature, inactive since 2013", + "role playing", + "-", + "Java", + "Apache-2.0" + ], + [ + "Anura (Entry)", + "mature", + "arcade, game engine", + "Windows", + "C, C++", + "b" + ], + [ + "Lords of the Fey (Entry)", + "beta, inactive since 2018", + "remake, strategy", + "Web", + "JavaScript", + "AGPL-3.0" + ], + [ + "Taggem (Entry)", + "beta, inactive since 2014", + "role playing", + "Web", + "JavaScript", + "AGPL-3.0" + ], + [ + "CatacombGL (Entry)", + "beta", + "remake", + "Windows", + "C++", + "GPL-3.0" + ], + [ + "Raptor: Call of the Shadows (Entry)", + "beta", + "action, remake", + "-", + "C", + "GPL-3.0" + ], + [ + "The House (Entry)", + "mature, inactive since 2019", + "adventure", + "Web", + "JavaScript", + "MIT" + ], + [ + "MxEngine (Entry)", + "mature", + "game engine", + "-", + "C++", + "D" + ], + [ + "Reconstruction of Super ZZT (Entry)", + "mature", + "adventure, remake", + "-", + "Pascal", + "MIT" + ], + [ + "Reconstruction of ZZT (Entry)", + "mature", + "adventure, remake", + "-", + "Pascal", + "MIT" + ], + [ + "Atomic Game Engine (Entry)", + "mature, inactive since 2018", + "framework, game engine", + "-", + "C++", + "T" + ], + [ + "Cartographer (Entry)", + "mature", + "tool", + "Windows, Linux, macOS", + "GDScript", + "0" + ], + [ + "Beat Feet (Entry)", + "mature", + "platform", + "Android", + "Kotlin", + "GPL-3.0" + ], + [ + "OpenTriad (Entry)", + "beta, inactive since 2017", + "cards, remake", + "-", + "Java", + "GPL-3.0" + ], + [ + "Aether3D (Entry)", + "beta", + "framework, game engine", + "-", + "C++", + "b" + ], + [ + "Isometric-Minesweeper (Entry)", + "beta", + "strategy", + "-", + "Python", + "MIT" + ], + [ + "Bladecoder Adventure Engine (Entry)", + "mature", + "adventure, game engine", + "Windows, Linux, macOS, Android", + "Java", + "0" + ], + [ + "CatacombSDL (Entry)", + "mature, inactive since 2014", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "BobBall (Entry)", + "mature, inactive since 2017", + "arcade", + "Android", + "Java", + "2-clause BSD" + ], + [ + "Minesweeper (in C) (Entry)", + "beta, inactive since 2015", + "puzzle, remake", + "-", + "C", + "3-clause BSD" + ], + [ + "Catan Dice Game (Entry)", + "mature", + "board, strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Julius (Entry)", + "mature", + "remake, simulation", + "-", + "C, C++", + "AGPL-3.0" + ], + [ + "sensitive-js (Entry)", + "beta, inactive since 2017", + "action, remake", + "Web", + "JavaScript", + "Custom" + ], + [ + "DreamZZT (Entry)", + "beta, inactive since 2007", + "game engine, remake", + "-", + "C, C++", + "0" + ], + [ + "Libre Pinball (Entry)", + "beta, inactive since 2015", + "sports", + "-", + "GDScript", + "MIT" + ], + [ + "Executive Man (Entry)", + "mature, inactive since 2017", + "platform, remake", + "Web", + "JavaScript", + "Custom" + ], + [ + "Roguish (Entry)", + "beta, inactive since 2015", + "role playing", + "Web", + "JavaScript", + "3-clause BSD" + ], + [ + "Super Methane Brothers for Wii and GameCube (Entry)", + "beta, inactive since 2018", + "arcade, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Catacomb (Entry)", + "mature, inactive since 1989", + "action", + "-", + "Pascal", + "GPL-2.0" + ], + [ + "The Catacomb (Entry)", + "mature, inactive since 1990", + "action", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Gift Grabber (Entry)", + "mature", + "puzzle, remake", + "Web", + "JavaScript", + "Apache-2.0" + ], + [ + "Yorg (Entry)", + "beta", + "game engine", + "-", + "Python", + "0" + ], + [ + "GL TRON (Entry)", + "mature, inactive since 2012", + "action", + "Android", + "Java", + "GPL-3.0" + ], + [ + "GoRogue (Entry)", + "mature", + "tool", + "Windows", + "C#", + "T" + ], + [ + "Zauberer (Entry)", + "beta, inactive since 2018", + "action", + "-", + "None", + "ISC" + ], + [ + "Witch Blast (Entry)", + "beta, inactive since 2015", + "remake, role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "KevEdit (Entry)", + "mature", + "tool", + "Windows, Linux, macOS", + "C", + "0" + ], + [ + "Carnage3D (Entry)", + "beta", + "action, remake", + "Windows, Linux", + "C++, C", + "MIT" + ], + [ + "Raze (Entry)", + "mature", + "action, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Kai \u2018Opua (Entry)", + "mature, inactive since 2013", + "puzzle", + "Web", + "JavaScript", + "MIT" + ], + [ + "Riiablo (Entry)", + "beta", + "remake", + "-", + "Java", + "Apache-2.0" + ], + [ + "Loon Game (Entry)", + "beta", + "framework", + "Windows, Linux, macOS", + "Java, C#", + "0" + ], + [ + "UAlbion (Entry)", + "beta", + "role playing", + "Windows", + "C#", + "MIT" + ], + [ + "Flappy Cow (Entry)", + "mature", + "remake", + "Android", + "Java", + "MIT" + ], + [ + "Cubosphere (Entry)", + "beta", + "puzzle, remake", + "-", + "C, C++, Lua", + "GPL-3.0" + ], + [ + "Falling Time (Entry)", + "mature", + "role playing", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "WebFun (Entry)", + "beta", + "adventure, game engine, remake", + "Web", + "TypeScript", + "T" + ], + [ + "HTML5 Pacman (Entry)", + "mature, inactive since 2013", + "remake", + "Web", + "JavaScript", + "WTFPL" + ], + [ + "Pac Go (Entry)", + "mature", + "arcade", + "-", + "Go", + "MIT" + ], + [ + "Jump Don't Die (Entry)", + "mature", + "platform", + "Windows, Linux, macOS", + "Java", + "GPL-3.0" + ], + [ + "TowerJumper (Entry)", + "mature", + "arcade, strategy", + "Android", + "C++, GDScript", + "GPL-3.0" + ], + [ + "CCCP (Entry)", + "beta", + "remake, strategy", + "-", + "C++", + "AGPL-3.0" + ], + [ + "uninvited (Entry)", + "beta, inactive since 2016", + "adventure, remake", + "-", + "C, C++", + "Artistic License-2.0" + ], + [ + "Spooker Framework (Entry)", + "beta, inactive since 2014", + "puzzle", + "-", + "C#", + "MIT" + ], + [ + "Delaford (Entry)", + "beta", + "role playing", + "Web", + "JavaScript, PHP", + "MIT" + ], + [ + "OpenSoccer (Entry)", + "beta", + "sports, strategy", + "Web", + "PHP", + "GPL-3.0" + ], + [ + "C3DE (Entry)", + "beta", + "game engine", + "-", + "C#", + "T" + ], + [ + "Sanity Engine (Entry)", + "beta", + "framework, game engine", + "Windows", + "C++", + "0" + ], + [ + "Planet Conquest (Entry)", + "mature, inactive since 2017", + "strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Columns (Entry)", + "mature", + "arcade", + "-", + "C++", + "zlib" + ], + [ + "DGEngine (Entry)", + "beta", + "action, remake", + "-", + "C++", + "zlib, GPL-3.0" + ], + [ + "Diabolika (Entry)", + "mature", + "puzzle", + "-", + "C++", + "zlib" + ], + [ + "Devilution (Entry)", + "mature", + "action, remake", + "-", + "C, C++", + "Unlicense" + ], + [ + "DevilutionX (Entry)", + "mature", + "action, remake", + "-", + "C, C++", + "Unlicense" + ], + [ + "Nazara Engine (Entry)", + "beta", + "framework", + "Windows, Linux", + "C, C++", + "T" + ], + [ + "Penumbra (Entry)", + "mature", + "library", + "-", + "C#", + "T" + ], + [ + "Cannonball (Entry)", + "beta", + "action, remake", + "-", + "C++", + "MAME" + ], + [ + "FreeBlocks (Entry)", + "beta, inactive since 2015", + "puzzle, remake", + "Linux, Android", + "C, Java", + "GPL-3.0" + ], + [ + "Head over Heels (Entry)", + "mature", + "action, adventure, remake", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "doukutsu-rs (Entry)", + "beta", + "remake", + "-", + "Rust", + "MIT" + ], + [ + "Vector Pinball (Entry)", + "mature", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "CommonDrops (Entry)", + "beta, inactive since 2018", + "puzzle", + "-", + "C++", + "MIT" + ], + [ + "Pacman (Entry)", + "beta", + "arcade", + "-", + "C++, Shell", + "GPL-2.0" + ], + [ + "Quake3e (Entry)", + "beta", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Harris (Entry)", + "beta", + "strategy", + "-", + "C, Python", + "GPL-3.0" + ], + [ + "MechCommander 2 Omnitech (Entry)", + "beta, inactive since 2013", + "action, remake", + "-", + "C++", + "MS-PL" + ], + [ + "Permafrost Engine (Entry)", + "mature", + "game engine, strategy", + "-", + "C, Python", + "0" + ], + [ + "LastTry (Entry)", + "beta, inactive since 2017", + "action, remake", + "-", + "Java", + "MIT" + ], + [ + "Lose Your Marbles (Entry)", + "mature, inactive since 2014", + "remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "ouzel (Entry)", + "beta", + "game engine", + "Windows, Linux, macOS, Android, iOS, Web", + "C, C++, Objective-C", + "D" + ], + [ + "Love2dCS (Entry)", + "mature", + "framework", + "Windows, Linux, macOS", + "C#, C++", + "T" + ], + [ + "Enduro2D (Entry)", + "beta", + "framework, game engine", + "-", + "C++", + "T" + ], + [ + "LimonEngine (Entry)", + "beta", + "game engine", + "Windows, Linux, macOS", + "C, C++", + "0" + ], + [ + "lttp-phaser (Entry)", + "beta, inactive since 2016", + "remake, role playing", + "Web", + "TypeScript, JavaScript", + "MIT" + ], + [ + "Torso Ninja (Entry)", + "mature, inactive since 2017", + "action, arcade", + "-", + "Python", + "GPL-3.0" + ], + [ + "Torso Ninja 2 (Entry)", + "mature, inactive since 2017", + "action, arcade", + "-", + "Python", + "GPL-3.0" + ], + [ + "Arcane-Engine (Entry)", + "beta", + "game engine", + "Windows", + "C++", + "T" + ], + [ + "Angry Birds in Python (Entry)", + "mature, inactive since 2017", + "role playing", + "-", + "Python", + "MIT" + ], + [ + "Gravity Defied (Entry)", + "mature, inactive since 2015", + "arcade", + "Android", + "Java", + "GPL-2.0" + ], + [ + "OpenYandere (Entry)", + "beta, inactive since 2018", + "action", + "-", + "C#", + "GPL-3.0" + ], + [ + "Candle (Entry)", + "beta", + "game engine", + "-", + "C", + "T" + ], + [ + "Chocolate Duke3D (Entry)", + "beta, inactive since 2016", + "action, remake", + "-", + "C", + "GPL-2.0, Custom" + ], + [ + "xygineXT (Entry)", + "beta", + "game engine", + "-", + "C++", + "b" + ], + [ + "AdaGate (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Ada", + "GPL-3.0" + ], + [ + "AdaVenture (Entry)", + "mature", + "adventure", + "-", + "Ada", + "GPL-3.0" + ], + [ + "CoTerminalApps (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Ada", + "GPL-3.0" + ], + [ + "MiniPacman (Entry)", + "mature", + "arcade", + "Windows, Linux, macOS", + "Ada", + "GPL-3.0" + ], + [ + "Reliquarium (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Ada", + "GPL-2.0" + ], + [ + "RufasCube (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Ada", + "GPL-2.0" + ], + [ + "RufasSlider (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "RufasSwap (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Ada", + "GPL-3.0" + ], + [ + "TermFrogger (Entry)", + "mature", + "arcade", + "Windows, Linux, macOS", + "Ada", + "GPL-3.0" + ], + [ + "TerminalApps (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Ada", + "GPL-3.0" + ], + [ + "3DWorld (Entry)", + "mature", + "game engine", + "Windows", + "C++", + "0" + ], + [ + "Hovertank3D (Entry)", + "mature, inactive since 2014", + "action, remake", + "-", + "C++, Assembly", + "GPL-2.0" + ], + [ + "Dingo-Engine (Entry)", + "beta, inactive since 2016", + "game engine", + "-", + "Java", + "D" + ], + [ + "javascript-E.T. (Entry)", + "beta, inactive since 2017", + "adventure, remake", + "Web", + "JavaScript, Assembly", + "MIT" + ], + [ + "Heroes of Civilizations (Entry)", + "beta", + "cards, strategy", + "-", + "C++, C#", + "GPL-2.0" + ], + [ + "FreeSims (Entry)", + "beta", + "remake, simulation", + "Windows", + "C#", + "MPL-2.0" + ], + [ + "Wolf3dX (Entry)", + "beta", + "action, remake", + "-", + "C#", + "GPL-2.0" + ], + [ + "freegish (Entry)", + "beta, inactive since 2017", + "arcade, platform, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Oreon Engine (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS", + "Java", + "0" + ], + [ + "Quartz Engine (Entry)", + "beta", + "game engine", + "-", + "C++", + "D" + ], + [ + "RadixEngine (Entry)", + "mature", + "game engine", + "-", + "C++", + "b" + ], + [ + "Gnomescroll (Entry)", + "beta, inactive since 2013", + "remake, simulation", + "-", + "C, C++, Python", + "GPL-3.0" + ], + [ + "World of Might and Magic (Entry)", + "beta", + "game engine, remake, role playing", + "-", + "C++", + "0" + ], + [ + "Greentwip's Harvest Moon (Entry)", + "beta", + "remake", + "-", + "C#", + "GPL-3.0" + ], + [ + "Griefly (Entry)", + "beta", + "remake, role playing", + "-", + "C++, Go, Python", + "MIT" + ], + [ + "Grit Game Engine (Entry)", + "beta", + "framework, game engine", + "-", + "C++, Python", + "T" + ], + [ + "SanAndreasUnity (Entry)", + "mature", + "remake", + "Windows, Linux, Android", + "C#", + "MIT" + ], + [ + "Prescription Wars (Entry)", + "mature, inactive since 2016", + "educational, remake, simulation, strategy", + "Web", + "ColdFusion, JavaScript", + "GPL-3.0" + ], + [ + "Dungeon Hero (Entry)", + "mature", + "role playing", + "Android", + "Java", + "MIT" + ], + [ + "Dungeon Quest (Entry)", + "mature", + "role playing", + "Android", + "Java", + "MIT" + ], + [ + "Smash (Entry)", + "mature", + "action", + "Web", + "JavaScript", + "MIT" + ], + [ + "Open Flood (Entry)", + "mature, inactive since 2018", + "puzzle", + "Android", + "Java", + "MIT" + ], + [ + "OpenCrystalCaves (Entry)", + "beta, inactive since 2017", + "remake", + "-", + "C++", + "MIT" + ], + [ + "Rott94 (Entry)", + "beta", + "action, remake", + "Windows, Android", + "C, C++", + "GPL-2.0" + ], + [ + "UnderworldExporter (Entry)", + "mature", + "remake, role playing", + "-", + "C#, C++", + "MIT" + ], + [ + "Tiny Wings (Entry)", + "beta", + "remake", + "macOS", + "Objective-C, C, C++", + "MIT" + ], + [ + "Data Storm (Entry)", + "mature, inactive since 2017", + "platform, remake", + "-", + "C", + "Apache-2.0" + ], + [ + "Defendo (Entry)", + "mature, inactive since 2018", + "strategy", + "Android", + "GDScript, PHP", + "GPL-3.0" + ], + [ + "Turo (Entry)", + "mature, inactive since 2018", + "arcade", + "Android", + "PHP, GDScript", + "GPL-3.0" + ], + [ + "EternalWinterWars (Entry)", + "beta, inactive since 2014", + "strategy", + "Android", + "Java", + "MIT" + ], + [ + "Hopson-Arcade (Entry)", + "mature", + "arcade, remake", + "Linux", + "C++", + "GPL-3.0" + ], + [ + "MineCraft-One-Week-Challenge (Entry)", + "beta", + "simulation", + "-", + "C++, C", + "MIT" + ], + [ + "Horde3D (Entry)", + "mature", + "library", + "-", + "C++", + "0" + ], + [ + "Hypatia (Entry)", + "beta, inactive since 2016", + "adventure, game engine", + "-", + "Python", + "T" + ], + [ + "Oxygen Engine (Entry)", + "mature", + "game engine", + "-", + "C++, C", + "0" + ], + [ + "Dawn (Entry)", + "beta, inactive since 2011", + "role playing", + "-", + "C++, Lua", + "GPL-3.0" + ], + [ + "DOOM (Entry)", + "mature, inactive since 2012", + "action, game engine", + "Linux", + "C", + "m" + ], + [ + "DOOM-iOS (Entry)", + "mature, inactive since 2012", + "action, remake", + "iOS", + "C++, C", + "GPL-2.0" + ], + [ + "OpenWebSoccer-Sim (Entry)", + "mature", + "sports, strategy", + "Web", + "PHP", + "LGPL-3.0" + ], + [ + "DelverEngine (Entry)", + "mature", + "game engine, remake", + "-", + "Java", + "m" + ], + [ + "Shockolate (Entry)", + "beta", + "remake", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "iortcw (Entry)", + "mature", + "remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "adventure engine (Entry)", + "mature, inactive since 2013", + "adventure, game engine", + "-", + "Lua", + "T" + ], + [ + "pycraft (Entry)", + "mature, inactive since 2018", + "remake, simulation", + "-", + "C, Python", + "GPL-2.0" + ], + [ + "OpenJK (Entry)", + "beta", + "action, game engine, remake", + "Windows", + "C, C++", + "0" + ], + [ + "Jactorio (Entry)", + "beta", + "simulation", + "-", + "C++", + "MIT" + ], + [ + "OpenMoM (Entry)", + "beta", + "strategy", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Choria (Entry)", + "mature", + "role playing", + "-", + "C++, C, Lua", + "GPL-3.0" + ], + [ + "Empty Clip (Entry)", + "mature", + "role playing", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "irrlamb (Entry)", + "mature", + "arcade, remake", + "Windows", + "C, C++", + "GPL-3.0" + ], + [ + "Mario Objects (Entry)", + "beta", + "platform", + "-", + "C#", + "MIT" + ], + [ + "minecraft-weekend (Entry)", + "beta", + "simulation", + "-", + "C", + "MIT" + ], + [ + "Gorc (Entry)", + "beta", + "remake", + "-", + "C++", + "Apache-2.0" + ], + [ + "star-control2 (Entry)", + "mature", + "adventure, remake", + "-", + "C, C++", + "MIT" + ], + [ + "2Moons Browsergame Engine (Entry)", + "mature", + "framework, simulation, strategy", + "Web", + "PHP, JavaScript", + "T" + ], + [ + "Free in the Dark (engine) (Entry)", + "beta", + "adventure, game engine, remake", + "-", + "C, C++", + "0" + ], + [ + "Sintel The Game (Entry)", + "beta, inactive since 2014", + "adventure", + "-", + "Python", + "MIT" + ], + [ + "Poland can into Space (Entry)", + "mature, inactive since 2018", + "arcade", + "Android", + "Java", + "NPOSL-3.0" + ], + [ + "Settlers III remake (Entry)", + "beta", + "remake, strategy", + "Windows, Linux, macOS, Android", + "Java", + "MIT" + ], + [ + "Blitwizard (Entry)", + "beta, inactive since 2015", + "game engine", + "Windows, Linux, macOS, Android", + "C, C++, Lua", + "b" + ], + [ + "Conquest (Entry)", + "mature", + "strategy", + "-", + "C++", + "MIT" + ], + [ + "Dungeon Monkey Eternal (Entry)", + "mature, inactive since 2016", + "role playing", + "-", + "Python", + "GPL-2.0" + ], + [ + "GLXY (Entry)", + "mature", + "simulation", + "Android", + "Java", + "Apache-2.0" + ], + [ + "RaumBaller (Entry)", + "mature", + "action, arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Keen Dreams (Entry)", + "mature, inactive since 2014", + "platform, remake", + "-", + "C, Assembly, C++", + "GPL-2.0" + ], + [ + "Augustus (Entry)", + "mature", + "remake, simulation", + "Windows, Linux, macOS", + "C, C++", + "AGPL-3.0" + ], + [ + "EnTT Pacman (Entry)", + "mature", + "puzzle, remake", + "-", + "C, C++", + "MIT" + ], + [ + "Vangers (Entry)", + "mature", + "remake, role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "UndertaleModTool (Entry)", + "beta", + "tool", + "-", + "C#", + "0" + ], + [ + "sundog (Entry)", + "beta", + "game engine, remake, role playing, simulation", + "Linux", + "C, C++, Python", + "T" + ], + [ + "Wind Waker Randomizer (Entry)", + "mature", + "tool", + "-", + "Python, Assembly", + "T" + ], + [ + "OpenFire (Entry)", + "beta, inactive since 2018", + "action", + "-", + "C", + "MIT" + ], + [ + "Battleround (Entry)", + "beta, inactive since 2015", + "role playing", + "Android", + "Java", + "Apache-2.0" + ], + [ + "Rigel Engine (Entry)", + "beta", + "action, game engine, remake", + "-", + "C++", + "0" + ], + [ + "Lexica (Entry)", + "mature", + "puzzle", + "Android", + "Java", + "GPL-3.0" + ], + [ + "LinCity-NG (Entry)", + "mature", + "simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "Liberation Circuit (Entry)", + "mature", + "strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "M.E.W.L. (Entry)", + "beta, inactive since 2015", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "TetraVex (Entry)", + "beta", + "puzzle", + "macOS", + "Swift", + "GPL-3.0" + ], + [ + "aquastax (Entry)", + "beta", + "puzzle, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "OpenMC2 (Entry)", + "beta, inactive since 2018", + "arcade, remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "rottexpr (Entry)", + "beta", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "XEvil (Entry)", + "mature", + "platform", + "-", + "C++", + "GPL-2.0" + ], + [ + "SR (Entry)", + "mature", + "tool", + "-", + "C, Assembly", + "T, 0, ?" + ], + [ + "Xultris (Entry)", + "mature, inactive since 2011", + "arcade", + "Web", + "JavaScript, XUL", + "MPL-1.1" + ], + [ + "Classic RBDoom 3 BFG (Entry)", + "mature", + "action, game engine, remake", + "Windows, Linux", + "C, C++", + "0" + ], + [ + "c64-nuclearreaction (Entry)", + "mature, inactive since 2014", + "remake, strategy", + "-", + "C, Assembly", + "GPL-3.0" + ], + [ + "Xargon (Entry)", + "mature, inactive since 2015", + "remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "UA_source (Entry)", + "beta", + "remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Breakout-VR (Entry)", + "beta, inactive since 2017", + "action", + "-", + "C#", + "MIT" + ], + [ + "Monofoxe (Entry)", + "mature", + "game engine", + "Windows", + "C#", + "T" + ], + [ + "MAGE - Matthias Advanced Game Engine (Entry)", + "beta", + "game engine", + "Windows", + "C++", + "0" + ], + [ + "DemiGod (Entry)", + "beta, inactive since 2013", + "role playing", + "Android", + "Java", + "GPL-3.0" + ], + [ + "DUGA (Entry)", + "beta, inactive since 2018", + "action", + "-", + "Python", + "MPL-2.0" + ], + [ + "OpenSolomonsKey (Entry)", + "beta", + "puzzle", + "Windows, Linux", + "C++", + "Unlicense" + ], + [ + "Cabbages and Kings (Entry)", + "mature", + "action", + "-", + "Python", + "MIT" + ], + [ + "ladder (Entry)", + "beta, inactive since 2016", + "arcade, remake", + "-", + "Go", + "MIT" + ], + [ + "Hexwar (Entry)", + "beta, inactive since 2012", + "strategy", + "Web", + "Ruby, JavaScript", + "MIT" + ], + [ + "Minetest Game (Entry)", + "mature", + "simulation", + "-", + "Lua", + "LGPL-2.1" + ], + [ + "LibreQuake (Entry)", + "beta", + "action, remake", + "-", + "Python", + "3-clause BSD" + ], + [ + "diablo-js (Entry)", + "mature", + "role playing", + "Web", + "Java, JavaScript", + "MIT" + ], + [ + "OpenBlok (Entry)", + "beta", + "puzzle", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Diablerie (Entry)", + "beta", + "remake", + "-", + "C#", + "MIT" + ], + [ + "OpenFNaF (Entry)", + "beta", + "role playing", + "-", + "C", + "MIT" + ], + [ + "Destination Sol (Entry)", + "mature", + "arcade", + "Windows, Linux, macOS, Android", + "Java", + "Apache-2.0" + ], + [ + "Omega (Entry)", + "beta", + "strategy", + "Web", + "JavaScript, Ruby", + "AGPL-3.0" + ], + [ + "GJID (Entry)", + "mature, inactive since 2017", + "puzzle", + "-", + "C++", + "MIT" + ], + [ + "pq2 (Entry)", + "mature", + "remake, simulation", + "-", + "C++", + "GPL-3.0" + ], + [ + "Wario-Land-3 (Entry)", + "beta, inactive since 2018", + "platform, remake", + "-", + "Python", + "MIT" + ], + [ + "ativayeban (Entry)", + "mature, inactive since 2015", + "action", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Hocoslamfy (Entry)", + "beta, inactive since 2016", + "arcade, remake", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Lumix Engine (Entry)", + "beta", + "framework", + "-", + "C++", + "T" + ], + [ + "Train (Entry)", + "beta", + "remake", + "-", + "Java", + "3-clause BSD" + ], + [ + "OpenSC2K (Entry)", + "beta", + "remake, simulation", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "PianOli (Entry)", + "mature", + "music", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Nikki and the Robots (Entry)", + "mature, inactive since 2012", + "platform", + "-", + "Haskell, Lisp", + "LGPL-3.0" + ], + [ + "vkQuake (Entry)", + "mature", + "remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "NullpoMino (Entry)", + "mature", + "remake", + "Windows, Linux, macOS", + "Java", + "3-clause BSD" + ], + [ + "NXEngine-evo (Entry)", + "mature", + "platform, remake", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Reflection Keen (Entry)", + "mature", + "platform, remake", + "-", + "C, Lua", + "GPL-2.0" + ], + [ + "OpenSR (Entry)", + "beta, inactive since 2017", + "remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "Dear ImGui (Entry)", + "mature", + "library", + "-", + "C, C++", + "T" + ], + [ + "Stockfish (Entry)", + "mature", + "strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "IO Reboot (Entry)", + "mature, inactive since 2017", + "puzzle", + "-", + "C#", + "MIT" + ], + [ + "RacerJS (Entry)", + "mature, inactive since 2010", + "arcade", + "Web", + "JavaScript", + "MIT" + ], + [ + "openblack (Entry)", + "beta", + "remake, simulation", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "REDriver2 (Entry)", + "beta", + "remake", + "-", + "C++, C", + "MIT" + ], + [ + "OpenDUNE (Entry)", + "mature", + "remake, strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "OpenLoco (Entry)", + "mature", + "remake, simulation", + "Windows, macOS", + "C++", + "MIT" + ], + [ + "Open Tibia (Entry)", + "beta, inactive since 2014", + "role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "OpenTyrian (Entry)", + "beta, inactive since 2018", + "action, remake", + "Windows", + "C", + "GPL-2.0" + ], + [ + "Open Zelda (Entry)", + "mature, inactive since 2015", + "action", + "-", + "C, C++", + "zlib" + ], + [ + "Zone of Control (Entry)", + "beta, inactive since 2017", + "strategy", + "-", + "Rust", + "Apache-2.0" + ], + [ + "Spartan Engine (Entry)", + "beta", + "game engine", + "Windows", + "C, C++", + "T" + ], + [ + "PGU (Entry)", + "mature", + "library", + "Windows, Linux, macOS", + "Python", + "1" + ], + [ + "alive (Entry)", + "beta", + "action, remake", + "Windows, Linux", + "C++", + "MIT" + ], + [ + "sfall (Entry)", + "mature", + "game engine, remake", + "-", + "C++, C", + "0" + ], + [ + "Open Rodent's Revenge (Entry)", + "beta, inactive since 2018", + "remake", + "Windows, Linux, macOS", + "C++", + "MIT" + ], + [ + "Dedalus (Entry)", + "beta, inactive since 2018", + "adventure, game engine, tool", + "Web", + "JavaScript", + "0" + ], + [ + "OpenClaw (Entry)", + "mature", + "remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "OpenMOO2 (Entry)", + "beta, inactive since 2011", + "remake, strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "WallBall (Entry)", + "mature", + "simulation", + "Web", + "Haxe, JavaScript", + "GPL-3.0" + ], + [ + "donut (Entry)", + "beta", + "action, remake", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "thiefcatcher (Entry)", + "beta", + "educational, remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "XSera (Entry)", + "beta, inactive since 2010", + "strategy", + "-", + "C, Lua", + "MIT" + ], + [ + "Command Series Engine (Entry)", + "mature", + "remake, strategy", + "-", + "Go", + "GPL-2.0" + ], + [ + "Ambermoon.net (Entry)", + "mature", + "remake, role playing", + "Windows, Linux, macOS", + "C#", + "GPL-3.0" + ], + [ + "Freeserf.net (Entry)", + "mature", + "remake, strategy", + "-", + "C#", + "GPL-3.0" + ], + [ + "Q-Gears (Entry)", + "beta, inactive since 2015", + "game engine, remake, role playing", + "-", + "C, C++", + "0" + ], + [ + "Infinite Tux (Entry)", + "mature", + "platform", + "Windows, Linux, macOS", + "Java", + "GPL-3.0, Public domain" + ], + [ + "Point & Hit (Entry)", + "mature, inactive since 2017", + "action", + "Android", + "Java", + "GPL-3.0" + ], + [ + "splexhd (Entry)", + "beta, inactive since 2012", + "puzzle, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Anuto (Entry)", + "mature", + "strategy", + "Android", + "Java", + "GPL-2.0" + ], + [ + "Super Retro Mega Wars (Entry)", + "beta", + "arcade", + "Android", + "Kotlin", + "GPL-3.0" + ], + [ + "Simitone (Entry)", + "beta", + "remake", + "-", + "C#", + "MPL-2.0" + ], + [ + "PipePanic (Entry)", + "mature, inactive since 2016", + "strategy", + "Android", + "Java, JavaScript", + "MIT" + ], + [ + "RBDOOM-3-BFG (Entry)", + "mature", + "game engine, remake", + "-", + "C, C++", + "0" + ], + [ + "minesweeper-rs (Entry)", + "mature", + "puzzle", + "-", + "Rust", + "MIT" + ], + [ + "openDOW (Entry)", + "beta", + "remake, strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "GDHexGrid (Entry)", + "mature", + "action", + "-", + "GDScript", + "MIT" + ], + [ + "GeonBit.UI (Entry)", + "mature", + "library", + "Windows, Linux", + "C#", + "T" + ], + [ + "PaperCraft (Entry)", + "mature, inactive since 2018", + "arcade", + "Android", + "Java", + "Apache-2.0" + ], + [ + "Ruby-warrior (Entry)", + "beta, inactive since 2012", + "game engine", + "Windows, Linux, macOS", + "Ruby", + "T" + ], + [ + "bratwurst (Entry)", + "mature, inactive since 2009", + "action, remake", + "-", + "Lisp", + "GPL-2.0" + ], + [ + "Prince-Monogame (Entry)", + "beta", + "action, remake", + "-", + "C#", + "GPL-2.0" + ], + [ + "Ghostly (Entry)", + "mature, inactive since 2016", + "action, remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "freeaoe (Entry)", + "beta", + "remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Kartering (Entry)", + "beta, inactive since 2015", + "action", + "-", + "C", + "GPL-2.0, MIT, ISC" + ], + [ + "progress-quest (Entry)", + "mature", + "arcade, remake", + "-", + "C++, Python", + "MIT" + ], + [ + "KnightOfWor (Entry)", + "beta, inactive since 2015", + "arcade, remake", + "-", + "Java", + "GPL-3.0" + ], + [ + "Roton (Entry)", + "beta, inactive since 2019", + "remake", + "-", + "C#", + "ISC" + ], + [ + "reone (Entry)", + "beta", + "remake, role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "NorseWorld: Ragnarok (Entry)", + "beta", + "remake, role playing", + "-", + "C#", + "GPL-3.0" + ], + [ + "OpenSupaplex (Entry)", + "mature", + "puzzle, remake", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "TankistOnline (Entry)", + "beta", + "action", + "Windows, Linux, macOS", + "Python", + "GPL-3.0" + ], + [ + "Panel Attack (Entry)", + "beta", + "remake", + "-", + "Lua", + "zlib" + ], + [ + "DesktopAdventures (Entry)", + "beta", + "game engine, remake", + "-", + "C", + "1" + ], + [ + "Zatacka X (Entry)", + "beta", + "action, remake", + "-", + "C", + "GPL-3.0" + ], + [ + "Sine (Entry)", + "beta", + "action, remake", + "-", + "C, C++", + "MIT" + ], + [ + "Zelda: Mystery of Solarus DX (Entry)", + "mature", + "role playing", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Block Puzzle Stone Wars (Entry)", + "mature", + "strategy", + "Android", + "Java", + "MIT" + ], + [ + "Recursive Runner (Entry)", + "beta, inactive since 2017", + "arcade", + "Windows, Linux, macOS, Android", + "C++", + "GPL-3.0" + ], + [ + "Sourcehold (Entry)", + "beta", + "remake", + "-", + "C++", + "MIT" + ], + [ + "Canta (Entry)", + "beta, inactive since 2011", + "music", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "Just another Tetris\u2122 clone (Entry)", + "mature, inactive since 2017", + "remake", + "-", + "Java", + "WTFPL" + ], + [ + "snake (Entry)", + "mature, inactive since 2017", + "arcade, remake", + "-", + "Java", + "WTFPL" + ], + [ + "Memory Game (Entry)", + "mature", + "arcade", + "Android", + "Java", + "Apache-2.0" + ], + [ + "SS13 Remake (Entry)", + "beta, inactive since 2015", + "remake, role playing", + "-", + "C#", + "GPL-3.0" + ], + [ + "Open Kick-Off (Entry)", + "beta", + "arcade", + "Windows, Linux, macOS", + "Java", + "MIT" + ], + [ + "Blob Wars : Attrition (Entry)", + "mature", + "platform", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Sole Collector (Entry)", + "beta, inactive since 2018", + "action", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Ares Dogfighter (Entry)", + "beta, inactive since 2016", + "action", + "Windows, Linux", + "Java", + "GPL-3.0" + ], + [ + "Killer Crates (Entry)", + "beta, inactive since 2017", + "arcade", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Moonbase Assault (Entry)", + "beta, inactive since 2019", + "remake", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Physics Platformer (Entry)", + "beta, inactive since 2019", + "arcade, platform", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Physics Spacewar (Entry)", + "beta, inactive since 2019", + "arcade", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Simple Platformer (Entry)", + "beta, inactive since 2019", + "arcade, platform", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "Tumbly Towers (Entry)", + "beta, inactive since 2017", + "puzzle, remake", + "Windows, Linux", + "Java", + "MIT" + ], + [ + "EdisonEngine (Entry)", + "beta", + "action, game engine, remake", + "Windows, Linux", + "C++, Python", + "0" + ], + [ + "Enchanted Fortress (Entry)", + "mature", + "strategy", + "Android", + "Java", + "LGPL-3.0" + ], + [ + "TurokEX (Entry)", + "beta, inactive since 2014", + "remake", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "Mice Men: Remix (Entry)", + "mature, inactive since 2016", + "puzzle, remake", + "-", + "Java", + "LGPL-3.0" + ], + [ + "OpenHoW (Entry)", + "beta", + "remake, strategy", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "EPOH (Entry)", + "beta", + "strategy", + "Web", + "JavaScript", + "MIT" + ], + [ + "Magical Life (Entry)", + "beta", + "role playing", + "Windows", + "C#", + "MIT" + ], + [ + "Squiffy (Entry)", + "mature", + "game engine, tool", + "Web", + "JavaScript", + "T" + ], + [ + "Chronoshift (Entry)", + "beta", + "remake", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "Thyme (Entry)", + "beta", + "remake, strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Vanilla-Conquer (Entry)", + "mature", + "remake, strategy", + "Windows, Linux", + "C, C++, Assembly", + "GPL-3.0" + ], + [ + "The Knights of Alentejo (Entry)", + "beta", + "strategy", + "Android", + "Java, C++", + "2-clause BSD" + ], + [ + "Awkaster (Entry)", + "mature, inactive since 2017", + "action", + "-", + "AWK", + "MIT" + ], + [ + "The-Trail (Entry)", + "beta, inactive since 2018", + "remake", + "-", + "Java", + "MIT, Apache-2.0" + ], + [ + "Hase (Entry)", + "beta", + "strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "Thunder Engine (Entry)", + "beta", + "game engine", + "-", + "C++", + "0" + ], + [ + "FQuake3 (Entry)", + "beta, inactive since 2014", + "action, remake", + "-", + "F#, C", + "GPL-2.0" + ], + [ + "Simple Brick Games (Entry)", + "mature, inactive since 2017", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "TOMB5 (Entry)", + "beta", + "remake", + "-", + "C, C++", + "MIT" + ], + [ + "OpenKeeper (Entry)", + "beta", + "game engine, remake, simulation", + "-", + "Java", + "0" + ], + [ + "Turn of War (Entry)", + "beta, inactive since 2014", + "strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "OpenGothic (Entry)", + "beta", + "game engine, remake, role playing", + "Windows", + "C++", + "T" + ], + [ + "Candy Memory (Entry)", + "mature, inactive since 2018", + "arcade", + "Android", + "Java", + "GPL-2.0" + ], + [ + "remc2 (Entry)", + "mature", + "action, remake", + "Windows", + "C", + "GPL-3.0" + ], + [ + "glParchis (Entry)", + "mature", + "board, strategy", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "dRally (Entry)", + "beta", + "action, remake", + "-", + "Assembly, C", + "MIT" + ], + [ + "Boulder Dash (Entry)", + "mature, inactive since 2015", + "action, remake", + "-", + "Java", + "MIT" + ], + [ + "Isolmoa (Entry)", + "mature, inactive since 2014", + "strategy", + "Android", + "JavaScript, Java", + "GPL-3.0" + ], + [ + "zorkClone (Entry)", + "beta", + "adventure, remake", + "-", + "Java", + "Apache-2.0" + ], + [ + "Shadowgrounds (Entry)", + "beta, inactive since 2017", + "remake", + "-", + "C++", + "Custom" + ], + [ + "Fish Rings for Android (Entry)", + "mature, inactive since 2015", + "strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Ithaka Board Game (Entry)", + "mature", + "board, strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "NetMauMau (Entry)", + "mature, inactive since 2015", + "cards, role playing", + "Windows, Linux", + "C++", + "LGPL-3.0" + ], + [ + "BitRiot (Entry)", + "beta, inactive since 2017", + "strategy", + "-", + "C++", + "Apache-2.0" + ], + [ + "Veraball (Entry)", + "beta, inactive since 2016", + "remake", + "Windows, Linux", + "GDScript", + "MIT" + ], + [ + "OpenNotrium (Entry)", + "beta", + "action, puzzle, remake", + "-", + "C++", + "GPL-3.0" + ], + [ + "Super Bombinhas (Entry)", + "mature", + "platform", + "Windows, Linux", + "Ruby", + "GPL-3.0" + ], + [ + "VQEngine (Entry)", + "beta", + "framework", + "Windows", + "C++", + "0" + ], + [ + "Tenes Empanadas Graciela (Entry)", + "beta, inactive since 2015", + "strategy", + "Linux", + "C, JavaScript, Perl, C++", + "GPL-2.0" + ], + [ + "Taponium (Entry)", + "mature, inactive since 2019", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Liquid Wars (Entry)", + "mature, inactive since 2014", + "simulation, strategy", + "Android", + "C++, Java", + "GPL-3.0" + ], + [ + "JediAcademyLinux (Entry)", + "beta, inactive since 2017", + "action, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "JediOutcastLinux (Entry)", + "mature", + "game engine, remake", + "-", + "C, C++", + "0" + ], + [ + "OpenLara (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS, Android, iOS, Web", + "C++, C", + "2-clause BSD" + ], + [ + "OpenRaider (Entry)", + "beta, inactive since 2015", + "action, remake", + "macOS", + "C, C++", + "GPL-2.0" + ], + [ + "UnCiv (Entry)", + "beta", + "remake, strategy", + "Windows, Linux, macOS, Android", + "Kotlin", + "MPL-2.0" + ], + [ + "2048 Python (Entry)", + "mature", + "remake", + "-", + "Python", + "MIT" + ], + [ + "antiyoy (Entry)", + "beta", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "RuZZT (Entry)", + "beta", + "adventure, game engine, remake", + "-", + "Rust", + "T" + ], + [ + "YKnytt (Entry)", + "beta", + "platform, remake", + "-", + "C#", + "MIT" + ], + [ + "Cosmo-Engine (Entry)", + "beta", + "platform, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "ZGB (Entry)", + "mature", + "game engine", + "Windows", + "C, Assembly, C++", + "T" + ], + [ + "NFSIISE (Entry)", + "mature", + "remake", + "Windows, Linux", + "C", + "MIT" + ], + [ + "Innocence Engine (Entry)", + "beta", + "game engine", + "-", + "C++", + "0" + ], + [ + "BlakedAwesomenaughts (Entry)", + "beta, inactive since 2015", + "action, remake", + "Web", + "JavaScript, PHP", + "MIT" + ], + [ + "Critical Velocity (Entry)", + "mature, inactive since 2017", + "arcade", + "Android", + "Java", + "Apache-2.0" + ], + [ + "Cross The Road (Entry)", + "mature", + "action, arcade", + "Web", + "Elm, JavaScript", + "AGPL-3.0" + ], + [ + "Virus Attack (Entry)", + "mature", + "action", + "Android", + "Java", + "AGPL-3.0" + ], + [ + "Apple Flinger (Entry)", + "mature", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Starun (Entry)", + "mature, inactive since 2017", + "action, arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Bombman (Entry)", + "mature", + "action, remake", + "-", + "Python", + "CC0" + ], + [ + "Anarch (Entry)", + "mature", + "action", + "-", + "C, C++", + "CC0" + ], + [ + "Steamer Duck (Entry)", + "beta", + "platform", + "-", + "Python", + "CC0" + ], + [ + "Project Helena (Entry)", + "beta", + "role playing, strategy", + "-", + "Pascal", + "GPL-3.0" + ], + [ + "SpacePeng! (Entry)", + "mature, inactive since 2017", + "action", + "Windows, Linux, macOS, Android", + "Java", + "GPL-3.0" + ], + [ + "terrarium (Entry)", + "beta", + "action, adventure, remake", + "-", + "C++, Shell", + "GPL-2.0" + ], + [ + "Athenaeum (Entry)", + "beta", + "tool", + "Linux", + "Python", + "0" + ], + [ + "Walic (Entry)", + "mature", + "cards, strategy", + "-", + "Kotlin", + "Apache-2.0" + ], + [ + "Turious (Entry)", + "beta, inactive since 2014", + "strategy", + "-", + "C", + "GPL-3.0" + ], + [ + "SuperTuxParty (Entry)", + "beta", + "action", + "Windows, Linux, macOS", + "GDScript", + "GPL-3.0" + ], + [ + "Minos (Entry)", + "mature", + "strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Titan Tactics (Entry)", + "beta", + "role playing", + "-", + "GDScript", + "CC0" + ], + [ + "Globulation 2 (Entry)", + "mature", + "strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "glPortal (Entry)", + "beta", + "platform, puzzle, remake", + "-", + "C++", + "zlib" + ], + [ + "Godot (Entry)", + "mature", + "framework", + "-", + "C, C++", + "T" + ], + [ + "One Way To Go (Entry)", + "mature, inactive since 2011", + "puzzle, remake", + "-", + "Lua", + "GPL-3.0" + ], + [ + "Gorillas (Entry)", + "mature, inactive since 2014", + "remake", + "iOS", + "Objective-C, JavaScript", + "Java Research License" + ], + [ + "CuteMaze (Entry)", + "mature", + "puzzle", + "-", + "C++", + "GPL-3.0" + ], + [ + "Gottet (Entry)", + "mature", + "remake", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Simsu (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Tanglet (Entry)", + "mature", + "puzzle", + "-", + "C++", + "GPL-3.0" + ], + [ + "Tetzle (Entry)", + "mature", + "puzzle", + "-", + "C++", + "GPL-3.0" + ], + [ + "CrystalQuest (Entry)", + "mature, inactive since 2017", + "puzzle, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Hardwar (Entry)", + "beta, inactive since 2015", + "remake, simulation", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Harmonist: Dayoriah Clan Infiltration (Entry)", + "beta", + "role playing", + "Windows, Linux, macOS, Web", + "Go", + "ISC" + ], + [ + "Hexoshi (Entry)", + "beta, inactive since 2016", + "action", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "Hextris (Entry)", + "mature", + "puzzle", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "DarkPlaces (Entry)", + "mature, inactive since 2014", + "game engine, remake", + "Windows, Linux, macOS", + "C", + "0" + ], + [ + "Ilarion (Entry)", + "mature", + "role playing", + "-", + "C++, Java, Lua", + "GPL-3.0" + ], + [ + "Illarion (Entry)", + "mature", + "role playing", + "-", + "C++, Java, Lua", + "AGPL-3.0, GPL-3.0" + ], + [ + "Scrap (Entry)", + "mature, inactive since 2017", + "strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Inexor (Entry)", + "beta, inactive since 2018", + "remake", + "Windows, Linux", + "C++, JavaScript", + "zlib" + ], + [ + "INSTEAD (Entry)", + "mature", + "adventure, game engine, visual novel", + "Windows, Linux, macOS, Android", + "C, Lua, Java", + "T" + ], + [ + "cc94 (Entry)", + "beta", + "action, remake, strategy", + "Web", + "C++, Python", + "AGPL-3.0" + ], + [ + "Granatier (Entry)", + "mature", + "action", + "-", + "C++", + "GPL-2.0" + ], + [ + "Tressette (Entry)", + "mature, inactive since 2017", + "action, cards", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "ncurses (Entry)", + "mature", + "library", + "Windows, Linux", + "C", + "T" + ], + [ + "ioquake3 (Entry)", + "mature", + "action, game engine, remake", + "Windows, Linux, macOS", + "C", + "0" + ], + [ + "Irrlicht Engine (Entry)", + "mature", + "framework", + "-", + "C++, C", + "b" + ], + [ + "opsu! (Entry)", + "mature", + "tool", + "Windows, Linux, macOS, Android", + "Java", + "0" + ], + [ + "Jagged Alliance 2 Stracciatella (Entry)", + "mature", + "remake, strategy", + "-", + "C, C++", + "Custom" + ], + [ + "Javelin (Entry)", + "mature, inactive since 2016", + "role playing", + "Windows, Linux, macOS", + "Java", + "GPL-2.0" + ], + [ + "Pathogen Warrior (Entry)", + "beta, inactive since 2004", + "puzzle", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "jMonkeyEngine (Entry)", + "mature", + "framework", + "-", + "Java", + "D" + ], + [ + "Cadaver (Entry)", + "beta, inactive since 2009", + "action, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Supercars III (Entry)", + "mature, inactive since 2014", + "remake", + "-", + "Java", + "?" + ], + [ + "JavaScript Graphic Adventure Maker (Entry)", + "mature", + "adventure, game engine", + "Web", + "JavaScript", + "T" + ], + [ + "LevelHead (Entry)", + "mature, inactive since 2009", + "puzzle", + "Linux", + "C++, Python", + "GPL-3.0" + ], + [ + "KAtomic (Entry)", + "mature", + "puzzle, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "KMines (Entry)", + "mature", + "puzzle", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "KSnakeDuel (Entry)", + "mature", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "Ksudoku (Entry)", + "mature", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "KeeperRL (Entry)", + "beta", + "game engine, simulation", + "Windows", + "C, C++", + "0" + ], + [ + "1oom (Entry)", + "mature", + "remake, strategy", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Achtung, die Kurve! (Entry)", + "mature", + "action, arcade", + "Web", + "JavaScript", + "AGPL-3.0" + ], + [ + "LambdaHack (Entry)", + "beta", + "game engine", + "Windows, Linux, Web", + "Haskell", + "D" + ], + [ + "Freenukum (Entry)", + "beta, inactive since 2009", + "remake", + "Linux", + "C", + "GPL-3.0" + ], + [ + "Heroes of Wesnoth (Entry)", + "beta, inactive since 2010", + "strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "OpenHoMM (Entry)", + "beta, inactive since 2010", + "strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Lemmings.ts (Entry)", + "mature", + "puzzle", + "Web", + "TypeScript", + "MIT" + ], + [ + "ReQbert (Entry)", + "beta", + "puzzle, remake", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "PCExhumed (Entry)", + "beta", + "action, remake", + "-", + "C++", + "Custom" + ], + [ + "LGames (Entry)", + "mature", + "action", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Allegro (Entry)", + "mature", + "framework", + "-", + "C", + "b" + ], + [ + "libGDX (Entry)", + "mature", + "framework", + "-", + "Java, C++, C", + "0" + ], + [ + "Librelancer (Entry)", + "beta", + "action, game engine, remake, simulation", + "Windows, Linux", + "C, C#", + "T" + ], + [ + "LIKO-12 (Entry)", + "mature", + "framework", + "Windows, Linux, macOS, Android", + "Lua, Rust", + "T" + ], + [ + "LionEngine (Entry)", + "mature", + "action, game engine", + "Windows, Linux, macOS, Android", + "Java", + "0" + ], + [ + "L'Abbaye des Morts (Entry)", + "mature, inactive since 2018", + "adventure, platform", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "Klooni 1010! (Entry)", + "beta", + "puzzle", + "Android", + "Java", + "GPL-3.0" + ], + [ + "L\u00d6VE (Entry)", + "mature", + "framework", + "Windows, Linux, macOS, Android, iOS", + "C++", + "b" + ], + [ + "heXon (Entry)", + "beta", + "role playing", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Quatter (Entry)", + "mature, inactive since 2018", + "board, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Lona (Entry)", + "mature", + "arcade", + "Android", + "Java, JavaScript", + "GPL-3.0" + ], + [ + "Magarena (Entry)", + "mature", + "cards, role playing", + "-", + "Java, Groovy", + "GPL-3.0" + ], + [ + "OpenVIII (Entry)", + "beta", + "game engine, remake, role playing", + "Windows, Linux", + "C#", + "T" + ], + [ + "ManaPlus (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS", + "C, Shell", + "GPL-3.0" + ], + [ + "ECWolf (Entry)", + "mature", + "remake", + "Windows, Linux, macOS, Android", + "C++", + "GPL-2.0, LGPL-2.1, zlib, MIT, IJG, Public domain" + ], + [ + "Open Valley (Entry)", + "beta", + "remake, role playing, simulation", + "-", + "C++", + "CC-BY-NC-SA-4.0" + ], + [ + "Ice Breaker (Entry)", + "mature, inactive since 2003", + "arcade, remake", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "sandspiel (Entry)", + "beta", + "simulation", + "Web", + "Rust, JavaScript, TypeScript", + "MIT" + ], + [ + "Maxit (Entry)", + "mature, inactive since 2014", + "remake, strategy", + "Windows, Linux, macOS", + "C++", + "3-clause BSD" + ], + [ + "melonJS (Entry)", + "mature", + "game engine", + "Web", + "JavaScript", + "T" + ], + [ + "Thugaim (Entry)", + "mature, inactive since 2017", + "action", + "Android", + "Java", + "MIT" + ], + [ + "Micropolis (Entry)", + "mature, inactive since 2015", + "simulation", + "-", + "C++, Java, Python", + "GPL-3.0" + ], + [ + "Minesweeper.Zone (Entry)", + "mature", + "puzzle, remake", + "Web", + "JavaScript, PHP", + "MIT" + ], + [ + "mini2Dx (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS", + "Java, C#", + "0" + ], + [ + "mk.js (Entry)", + "beta", + "action, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Gloomy Dungeons 2 (Entry)", + "mature", + "action", + "Android", + "Java", + "MIT" + ], + [ + "Gloomy Dungeons (Entry)", + "mature, inactive since 2018", + "action", + "Android", + "Java", + "MIT" + ], + [ + "neoGFX (Entry)", + "beta", + "game engine", + "Windows, Linux", + "C++", + "0" + ], + [ + "Neverball (Entry)", + "mature", + "action", + "Windows, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "Yet Another Doom Clone (Entry)", + "mature", + "action", + "-", + "JavaScript, Python", + "GPL-3.0" + ], + [ + "Nighthawk (Entry)", + "mature, inactive since 2004", + "arcade, puzzle, remake", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "NLarn (Entry)", + "mature", + "remake, role playing", + "-", + "C, Lua", + "GPL-3.0" + ], + [ + "Gorillas-rs (Entry)", + "beta", + "remake", + "-", + "Rust", + "MIT" + ], + [ + "SuperStarfighter (Entry)", + "beta", + "framework", + "Windows, Linux, macOS", + "GDScript", + "T" + ], + [ + "NBlood (Entry)", + "mature", + "remake", + "-", + "C, C++, Lua", + "GPL-2.0" + ], + [ + "Rednukem (Entry)", + "beta", + "action, remake", + "-", + "C++", + "Custom" + ], + [ + "Octaforge (Entry)", + "mature", + "framework", + "-", + "C++", + "m" + ], + [ + "Odamex (Entry)", + "beta", + "game engine, remake", + "-", + "C, C++", + "0" + ], + [ + "OpenMW for Android (Entry)", + "mature", + "remake", + "Android", + "Kotlin, Java", + "GPL-3.0" + ], + [ + "One Hour One Life (Entry)", + "mature", + "remake", + "Web", + "C, C++, PHP", + "Public domain" + ], + [ + "Floppy Birb (Entry)", + "mature", + "framework", + "Web", + "JavaScript", + "T" + ], + [ + "openage (Entry)", + "beta", + "game engine, remake, strategy", + "-", + "C++, Python", + "0" + ], + [ + "Open Apocalypse (Entry)", + "beta", + "remake, strategy", + "-", + "C++", + "MIT" + ], + [ + "OpenBVE (Entry)", + "mature", + "simulation", + "Windows, Linux, macOS", + "C#", + "Public domain" + ], + [ + "OpenDiablo2 (Entry)", + "mature", + "action, remake, role playing", + "Windows, Linux, macOS", + "Go", + "GPL-3.0" + ], + [ + "OpenDungeons (Entry)", + "beta", + "strategy", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Open Fortress (Entry)", + "beta", + "remake", + "-", + "C++", + "CC-BY-NC-SA-4.0, Custom" + ], + [ + "OpenHV (Entry)", + "beta", + "strategy", + "Windows, Linux, macOS", + "C#, Lua", + "GPL-3.0" + ], + [ + "Open Legend RPG (Entry)", + "mature", + "board, role playing", + "-", + "None", + "Custom" + ], + [ + "OpenNFS (Entry)", + "beta", + "game engine, remake", + "-", + "C, C++", + "T" + ], + [ + "OpenRCT2 (Entry)", + "mature", + "remake, simulation", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "OpenRW (Entry)", + "beta", + "action, game engine, remake", + "Windows, Linux, macOS", + "C, C++", + "0" + ], + [ + "OpenSAGE (Entry)", + "beta", + "game engine, strategy", + "Windows, Linux, macOS", + "C#", + "0" + ], + [ + "Sludge (Entry)", + "mature", + "adventure, game engine", + "Windows, Linux, macOS", + "C, C++, Objective-C", + "1" + ], + [ + "Open Soccer Star (Entry)", + "beta", + "sports, strategy", + "Web", + "PHP", + "GPL-3.0" + ], + [ + "OpenSWE1R (Entry)", + "beta", + "remake", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "OpenTomb (Entry)", + "beta", + "action, game engine, remake", + "Windows", + "C, C++, Lua", + "0" + ], + [ + "OpenXcom (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "OPMon (Entry)", + "beta", + "remake", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Orx (Entry)", + "mature", + "framework", + "-", + "C", + "b" + ], + [ + "Lugaru (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Ladder (Entry)", + "mature, inactive since 2005", + "arcade, remake", + "-", + "Java", + "GPL-2.0" + ], + [ + "osu! (Entry)", + "beta", + "music", + "Windows, macOS, Android, iOS", + "C#", + "MIT" + ], + [ + "Pacewar (Entry)", + "mature, inactive since 2017", + "action", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "Xjig (Entry)", + "mature", + "puzzle", + "-", + "C", + "Custom" + ], + [ + "3Dc (Entry)", + "mature, inactive since 2000", + "board, puzzle", + "-", + "C", + "GPL-2.0" + ], + [ + "ACM (Entry)", + "mature, inactive since 2000", + "action, simulation", + "-", + "C", + "GPL-2.0" + ], + [ + "Blob Wars Episode 2 : Blob And Conquer (Entry)", + "mature, inactive since 2016", + "platform", + "-", + "C++", + "GPL-2.0" + ], + [ + "Amphetamine (Entry)", + "beta, inactive since 2008", + "platform", + "-", + "C", + "GPL-2.0" + ], + [ + "pacman-canvas (Entry)", + "mature, inactive since 2018", + "remake", + "Web", + "JavaScript", + "CC-BY-SA-4.0" + ], + [ + "Pentobi (Entry)", + "mature", + "board, role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "Jamp (Entry)", + "beta, inactive since 2009", + "puzzle", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Batrachians (Entry)", + "beta, inactive since 2012", + "action, remake", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "BurgerSpace (Entry)", + "mature, inactive since 2013", + "action, remake", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "Pingus (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "C++, Scheme", + "GPL-3.0" + ], + [ + "Pioneer (Entry)", + "mature", + "simulation", + "-", + "C, C++, Lua", + "Apache-2.0, GPL-3.0" + ], + [ + "Slime Volleyball (Entry)", + "beta", + "arcade", + "-", + "C++", + "3-clause BSD" + ], + [ + "Limbs Off (Entry)", + "beta, inactive since 2013", + "arcade", + "-", + "C++", + "GPL-3.0" + ], + [ + "Q (Entry)", + "mature, inactive since 2013", + "educational", + "Windows, Linux, macOS", + "Python", + "GPL-3.0" + ], + [ + "Simple-Solitaire (Entry)", + "mature", + "cards, strategy", + "Android", + "Java", + "GPL-3.0" + ], + [ + "0 A.D. (Entry)", + "beta", + "strategy", + "Windows, Linux, macOS", + "C, C++, JavaScript", + "GPL-2.0" + ], + [ + "2048 (Entry)", + "mature", + "puzzle", + "Web", + "JavaScript, Java", + "MIT" + ], + [ + "The Powder Toy (Entry)", + "mature", + "simulation", + "Windows, Linux, macOS, Android", + "C++, C, Lua, Python", + "GPL-3.0" + ], + [ + "Powerslave EX (Entry)", + "beta, inactive since 2017", + "remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "Project: Starfighter (Entry)", + "mature", + "arcade", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "TUSSLE (Entry)", + "mature, inactive since 2017", + "action, platform", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "proxx (Entry)", + "mature", + "puzzle", + "Web", + "TypeScript, JavaScript", + "Apache-2.0" + ], + [ + "Pushover (Entry)", + "beta, inactive since 2018", + "puzzle, remake", + "-", + "C++, C, Lua", + "GPL-3.0" + ], + [ + "Netacka (Entry)", + "mature", + "remake", + "-", + "C", + "MIT" + ], + [ + "PyChess (Entry)", + "mature", + "puzzle", + "Windows, Linux", + "Python, TypeScript", + "GPL-3.0" + ], + [ + "pyscroll (Entry)", + "mature, inactive since 2018", + "library", + "Windows, Linux, macOS", + "Python", + "0" + ], + [ + "PyTMX (Entry)", + "mature", + "library, tool", + "Windows, Linux, macOS", + "Python", + "0" + ], + [ + "Friking Shark (Entry)", + "mature", + "arcade", + "Linux", + "C++, C", + "GPL-3.0" + ], + [ + "pyskool (Entry)", + "mature", + "remake", + "Linux", + "Python", + "GPL-3.0" + ], + [ + "SGE Game Engine (Entry)", + "mature, inactive since 2017", + "framework, game engine", + "-", + "Python", + "0" + ], + [ + "Bouncy the Hungry Rabbit (Entry)", + "mature, inactive since 2007", + "arcade", + "-", + "Python", + "GPL-2.0" + ], + [ + "Sentient Storage (Entry)", + "mature", + "adventure", + "-", + "Python", + "Public domain" + ], + [ + "Stringrolled (Entry)", + "beta, inactive since 2008", + "platform, puzzle", + "-", + "Python", + "Public domain" + ], + [ + "Search for the Red Herring (Entry)", + "mature, inactive since 2006", + "strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Magic Gardeners Tournament (Entry)", + "beta, inactive since 2007", + "board, strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Tapir (Entry)", + "beta, inactive since 2017", + "game engine, remake", + "-", + "C, Ruby", + "0, T" + ], + [ + "Seafood Berserker! (Entry)", + "mature, inactive since 2018", + "arcade", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Enduro tribute (Entry)", + "mature", + "remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Rails: an 18xx game system (Entry)", + "mature", + "strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "rFXGen (Entry)", + "mature", + "tool", + "Windows", + "C", + "b" + ], + [ + "REGoth (Entry)", + "mature", + "remake, role playing", + "-", + "C++", + "GPL-3.0, MIT" + ], + [ + "Angband (Entry)", + "mature", + "role playing", + "-", + "C", + "GPL-2.0" + ], + [ + "ReShade (Entry)", + "mature", + "tool", + "Windows", + "C++", + "D" + ], + [ + "ReTux (Entry)", + "mature, inactive since 2018", + "platform", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "Thrive (Entry)", + "beta", + "strategy", + "Windows, Linux", + "C++, AngelScript, JavaScript, C#", + "GPL-3.0" + ], + [ + "Rockbot (Entry)", + "mature", + "arcade, remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "RogueBox Adventures (Entry)", + "mature, inactive since 2017", + "role playing", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "RogueSharp (Entry)", + "mature", + "game engine", + "-", + "C#", + "T" + ], + [ + "Clonepoint (Entry)", + "beta", + "action", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "O.H.R.RPG.C.E. (Entry)", + "mature", + "framework", + "-", + "Basic", + "0" + ], + [ + "Open RSC (Entry)", + "mature", + "remake, role playing", + "Windows, Linux, macOS, Android", + "Java, C++, C, Objective-C", + "GPL-3.0" + ], + [ + "RuneLite (Entry)", + "mature", + "remake, role playing", + "-", + "Java", + "2-clause BSD" + ], + [ + "engge (Entry)", + "beta", + "adventure, remake", + "-", + "C++", + "MIT" + ], + [ + "Scorched Moon (Entry)", + "beta", + "remake, strategy", + "-", + "Python", + "GPL-3.0" + ], + [ + "Digital: A Love Story (Entry)", + "mature", + "adventure, visual novel", + "Windows, Linux, macOS", + "Ren'Py, Python", + "CC-BY-NC-SA-3.0" + ], + [ + "Qonk (Entry)", + "beta, inactive since 2008", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "The Secret Chronicles of Dr. M. (Entry)", + "mature", + "platform, remake", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Super Tilt Bro (Entry)", + "mature", + "platform", + "Web", + "Assembly, Python", + "WTFPL" + ], + [ + "Shattered Pixel Dungeon (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS, Android, iOS", + "Java", + "GPL-3.0" + ], + [ + "BOOM: Remake (Entry)", + "mature", + "action, remake", + "-", + "C++", + "Custom" + ], + [ + "Potato Killer (Entry)", + "beta, inactive since 2011", + "action", + "-", + "Python", + "GPL-3.0" + ], + [ + "Gilbert and the doors (Entry)", + "mature, inactive since 2018", + "platform, strategy", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "Tiny Tris (Entry)", + "mature", + "puzzle", + "-", + "C", + "GPL-3.0" + ], + [ + "Slick2D (Entry)", + "beta, inactive since 2014", + "tool", + "Windows, Linux", + "Java", + "D" + ], + [ + "Smash Battle (Entry)", + "beta, inactive since 2011", + "action, platform", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Space Nerds In Space (Entry)", + "beta", + "remake, strategy", + "Linux", + "C, Lua", + "GPL-2.0" + ], + [ + "Smolpxl (Entry)", + "mature", + "arcade", + "Web", + "JavaScript", + "AGPL-3.0" + ], + [ + "StarMines: The Next Generation (Entry)", + "mature", + "arcade", + "Web", + "Scala", + "GPL-3.0" + ], + [ + "Morpheus Web Remake (Entry)", + "beta", + "adventure, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "Sokoban (Entry)", + "mature", + "puzzle", + "Android, Web", + "CoffeeScript", + "AGPL-3.0" + ], + [ + "WebChess (Entry)", + "mature, inactive since 2010", + "strategy", + "Web", + "PHP", + "GPL-3.0" + ], + [ + "Aklabeth (Entry)", + "mature, inactive since 2004", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "AntiChess (Entry)", + "beta, inactive since 2003", + "strategy", + "Windows, Linux, macOS", + "Java", + "MIT" + ], + [ + "A Planet's Revenge (Entry)", + "beta, inactive since 2008", + "strategy", + "-", + "Python", + "GPL-3.0" + ], + [ + "Armies (Entry)", + "mature, inactive since 2007", + "strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Attal: Lords of doom (Entry)", + "mature, inactive since 2008", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "AutoREALM (Entry)", + "mature", + "tool", + "-", + "C++", + "0" + ], + [ + "Battlefield Java (Entry)", + "beta, inactive since 2011", + "strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "BlackNova Traders (Entry)", + "beta, inactive since 2012", + "strategy", + "Web", + "PHP, JavaScript", + "GPL-2.0" + ], + [ + "Blitzkrieg (Entry)", + "beta, inactive since 2012", + "strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "Blobwars: Metal Blob Solid (Entry)", + "mature", + "arcade, platform", + "Windows", + "C++, C", + "GPL-2.0" + ], + [ + "Betrayer's Moon Tactics (Entry)", + "beta, inactive since 2006", + "role playing", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "Brikx (Entry)", + "beta, inactive since 2009", + "puzzle", + "Linux", + "C++", + "GPL-2.0" + ], + [ + "British Bingo (Entry)", + "mature", + "action, board", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "Celestron (Entry)", + "beta, inactive since 2012", + "action", + "-", + "Python", + "GPL-3.0" + ], + [ + "Chaos Esque Anthology (Entry)", + "mature", + "strategy", + "-", + "?", + "?" + ], + [ + "Colonization too (Entry)", + "beta, inactive since 2004", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Der Clou! (Entry)", + "beta, inactive since 2017", + "action, adventure", + "-", + "C", + "Custom" + ], + [ + "C.Y.O. Adventures, text game generator (Entry)", + "beta, inactive since 2012", + "tool", + "-", + "Ada", + "0" + ], + [ + "DarkCity (Entry)", + "mature, inactive since 2012", + "role playing", + "Web", + "PHP", + "GPL-3.0" + ], + [ + "Dungeon Monkey Unlimited (Entry)", + "mature, inactive since 2010", + "action, role playing", + "-", + "Pascal", + "LGPL-2.1" + ], + [ + "4D-TRIS (Entry)", + "mature, inactive since 2012", + "puzzle", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Duckmaze (Entry)", + "beta", + "puzzle", + "-", + "Python", + "GPL-2.0" + ], + [ + "Duel Commander (Entry)", + "beta, inactive since 2009", + "strategy", + "Windows, Linux", + "C", + "GPL-3.0" + ], + [ + "Ecksdee (Entry)", + "beta, inactive since 2009", + "simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "The Endless Dungeons (Entry)", + "mature, inactive since 2015", + "role playing", + "Windows", + "C", + "CC-BY-NC-SA-2.0" + ], + [ + "Eos, Dawn of Light: A Space Opera (Entry)", + "beta, inactive since 2007", + "role playing", + "-", + "Python", + "MIT" + ], + [ + "The Epic of Heroes (Entry)", + "beta, inactive since 2015", + "role playing, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Extreme Tux Racer (Entry)", + "beta, inactive since 2018", + "platform", + "-", + "C++", + "GPL-2.0" + ], + [ + "Free Heroes 2 (Entry)", + "beta, inactive since 2015", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "First Strike (Entry)", + "mature, inactive since 2018", + "strategy", + "-", + "Java", + "MIT" + ], + [ + "FreeCS (Entry)", + "mature", + "action, remake", + "-", + "QuakeC", + "GPL-2.0" + ], + [ + "FreeLords (Entry)", + "beta, inactive since 2017", + "remake, strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "Free Mars (Entry)", + "mature", + "strategy", + "Windows, Linux, macOS", + "Java", + "GPL-3.0" + ], + [ + "Froggix (Entry)", + "beta, inactive since 2009", + "arcade, remake", + "-", + "Python", + "GPL-3.0" + ], + [ + "FunLabyrinthe (Entry)", + "mature, inactive since 2012", + "puzzle", + "Windows", + "Pascal", + "GPL-2.0" + ], + [ + "GM Tools (Entry)", + "beta, inactive since 2004", + "tool", + "-", + "C++, C", + "0" + ], + [ + "Goblin Hack (Entry)", + "beta, inactive since 2009", + "role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "H-World (Entry)", + "beta, inactive since 2005", + "framework", + "-", + "C, Lua, C++", + "0" + ], + [ + "Hale (Entry)", + "beta, inactive since 2014", + "role playing", + "-", + "Java", + "GPL-2.0" + ], + [ + "Help Hannah's Horse (Entry)", + "beta, inactive since 2008", + "action, arcade", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Hex Game (Entry)", + "beta", + "strategy", + "-", + "C++", + "MIT" + ], + [ + "Holtz (Entry)", + "mature", + "board, puzzle", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Heroes of Wing Commander (Entry)", + "beta, inactive since 2014", + "strategy", + "-", + "Python", + "GPL-3.0" + ], + [ + "Isometric Turn-Based Strategy (Entry)", + "beta", + "strategy", + "-", + "Python", + "MIT" + ], + [ + "The hunt for the lost rainbow jewels (Jewelhunt) (Entry)", + "beta", + "role playing", + "-", + "Java", + "GPL-2.0" + ], + [ + "JQuest (Entry)", + "beta, inactive since 2006", + "strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "JSettlers (Entry)", + "mature", + "board, remake, strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "Kobold's Quest 2 (Entry)", + "beta, inactive since 2011", + "role playing", + "-", + "Python", + "LGPL-3.0" + ], + [ + "KRaptor (Entry)", + "beta, inactive since 2004", + "action", + "-", + "C", + "MIT" + ], + [ + "HolySpirit (Entry)", + "beta, inactive since 2013", + "action, role playing", + "-", + "C++, Haskell", + "GPL-3.0" + ], + [ + "M.A.R.S. (Entry)", + "beta, inactive since 2016", + "platform", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Mars, Land of No Mercy (Entry)", + "beta, inactive since 2008", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Metal Mech (Entry)", + "beta, inactive since 2006", + "strategy", + "Web", + "PHP", + "GPL-2.0" + ], + [ + "Monster Generator (Entry)", + "mature", + "tool", + "-", + "Java", + "T" + ], + [ + "Mpango (Entry)", + "beta, inactive since 2013", + "strategy", + "-", + "Java, JavaScript", + "GPL-2.0" + ], + [ + "Haxima (Entry)", + "beta", + "game engine, role playing", + "-", + "C++", + "0" + ], + [ + "No Gravity (Entry)", + "mature, inactive since 2006", + "arcade", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "NetStatsBaseball (Entry)", + "mature", + "simulation, sports", + "-", + "C", + "Public domain" + ], + [ + "Openfrag (Entry)", + "beta, inactive since 2008", + "framework", + "-", + "C++, Lua", + "0" + ], + [ + "Open Syobon Action (Entry)", + "beta, inactive since 2011", + "remake", + "-", + "C++", + "?" + ], + [ + "OldSkool Gravity Game (Entry)", + "mature, inactive since 2016", + "arcade", + "Windows, Linux", + "C++, C", + "GPL-3.0" + ], + [ + "Outer Space (Entry)", + "beta", + "strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Overgod (Entry)", + "mature, inactive since 2005", + "arcade", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Pang Zero (Entry)", + "beta, inactive since 2007", + "action, arcade, remake", + "Linux", + "Perl", + "GPL-2.0" + ], + [ + "Phantasy Star Rebirth (Entry)", + "beta, inactive since 2013", + "role playing", + "-", + "C++", + "GPL-3.0" + ], + [ + "Pioneers (Entry)", + "mature", + "board, strategy", + "-", + "C", + "GPL-2.0" + ], + [ + "Planetary Hoppers (Entry)", + "beta, inactive since 2003", + "strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "PyBreak360 (Entry)", + "mature, inactive since 2015", + "arcade, puzzle", + "-", + "Python", + "GPL-3.0" + ], + [ + "RAD (Entry)", + "mature", + "action, remake", + "-", + "Pascal, C", + "GPL-2.0" + ], + [ + "RickyD (Entry)", + "beta", + "remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Rolemaster Office (Entry)", + "mature", + "tool", + "-", + "Java", + "0" + ], + [ + "RPDungeon - computer aided role playing (Entry)", + "beta, inactive since 2006", + "tool", + "-", + "Pascal", + "0" + ], + [ + "S.C.O.U.R.G.E. (Entry)", + "beta, inactive since 2008", + "role playing", + "-", + "C++", + "GPL-2.0" + ], + [ + "Sengoku: Warring States of Japan (Entry)", + "beta, inactive since 2008", + "strategy", + "-", + "C++, Lua", + "MIT" + ], + [ + "SDL Game Engine 2D (Entry)", + "beta, inactive since 2014", + "framework", + "-", + "C", + "T" + ], + [ + "SharpKonquest (Entry)", + "mature, inactive since 2007", + "strategy", + "-", + "C#", + "GPL-2.0" + ], + [ + "Skrupel - Tribute Compilation (Entry)", + "mature, inactive since 2011", + "strategy", + "Web", + "PHP, JavaScript", + "GPL-2.0" + ], + [ + "Slay (Entry)", + "beta, inactive since 2010", + "strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "Space Faring (Entry)", + "beta", + "strategy", + "-", + "Java", + "GPL-3.0" + ], + [ + "Space War (Entry)", + "mature", + "strategy", + "-", + "Java", + "Apache-2.0" + ], + [ + "Space Opera (Entry)", + "beta, inactive since 2008", + "strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "SpaceTrader for Java (Entry)", + "mature, inactive since 2010", + "strategy", + "Windows, Linux, macOS", + "Java", + "GPL-2.0" + ], + [ + "Space Trader for Windows (Entry)", + "mature, inactive since 2009", + "strategy", + "-", + "C#", + "GPL-2.0" + ], + [ + "Spice Trade (Entry)", + "mature, inactive since 2005", + "adventure, role playing", + "Windows, Linux, macOS", + "Java", + "LGPL-2.1" + ], + [ + "StarBlastrix (Entry)", + "beta, inactive since 2006", + "action", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "Stars! Nova (Entry)", + "beta", + "strategy", + "-", + "C#", + "GPL-2.0" + ], + [ + "T-Bots (Entry)", + "beta, inactive since 2004", + "simulation, strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "The Rush (Entry)", + "beta, inactive since 2011", + "arcade", + "-", + "C++", + "GPL-2.0" + ], + [ + "2H4U (Entry)", + "mature, inactive since 2007", + "puzzle", + "-", + "C++", + "GPL-2.0" + ], + [ + "Theme Park Builder 3D CAD (Entry)", + "beta, inactive since 2013", + "remake, simulation", + "-", + "C++", + "GPL-3.0" + ], + [ + "Visual Pinball (Entry)", + "mature", + "remake, sports", + "Windows", + "C++", + "MAME" + ], + [ + "Wargamer (Entry)", + "mature, inactive since 2003", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "World Builder (Entry)", + "mature, inactive since 2007", + "tool", + "Windows", + "Visual Basic", + "0" + ], + [ + "World of Heroes (Entry)", + "beta, inactive since 2009", + "strategy", + "-", + "Python", + "3-clause BSD" + ], + [ + "Space Station 13 (Entry)", + "mature", + "role playing", + "-", + "DM", + "AGPL-3.0" + ], + [ + "Spring: 1944 (Entry)", + "mature", + "strategy", + "-", + "Lua", + "GPL-2.0, CC-BY-NC-3.0" + ], + [ + "Spring (Entry)", + "mature", + "game engine, remake, strategy", + "-", + "C++, C, Lua", + "0" + ], + [ + "Mari0 (Entry)", + "mature, inactive since 2012", + "platform, puzzle, remake", + "Windows, Linux, macOS", + "Lua", + "MIT" + ], + [ + "Not Pacman (Entry)", + "mature, inactive since 2013", + "action", + "Windows, Linux, macOS", + "Lua", + "WTFPL" + ], + [ + "Stendhal (Entry)", + "mature", + "role playing", + "-", + "Java", + "GPL-2.0" + ], + [ + "Storm Engine (Entry)", + "mature", + "framework, game engine, role playing", + "Windows", + "C++", + "0" + ], + [ + "Stratagus (Entry)", + "mature", + "game engine, strategy", + "Windows, Linux, macOS", + "C++", + "0" + ], + [ + "Stunt Rally (Entry)", + "mature", + "action", + "Windows, Linux", + "C, C++", + "GPL-3.0" + ], + [ + "SuperTuxKart (Entry)", + "mature", + "action", + "Windows, Linux, macOS, Android", + "C++, C", + "GPL-3.0" + ], + [ + "Taisei Project (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS, Web", + "C, Python", + "MIT" + ], + [ + "Tangomon (Entry)", + "mature, inactive since 2017", + "educational", + "Windows, Linux", + "Python", + "GPL-3.0" + ], + [ + "Duck Marines (Entry)", + "mature, inactive since 2016", + "puzzle, remake", + "Windows, Linux, macOS", + "Lua", + "zlib" + ], + [ + "Mr. Rescue (Entry)", + "mature, inactive since 2016", + "arcade, platform", + "Windows, Linux, macOS", + "Lua", + "zlib" + ], + [ + "Tales of Maj'Eyal (Entry)", + "mature", + "role playing", + "-", + "C, Lua", + "GPL-3.0" + ], + [ + "Divercity (Entry)", + "beta, inactive since 2015", + "simulation", + "-", + "Java", + "GPL-3.0" + ], + [ + "Terasology (Entry)", + "mature", + "framework, remake", + "-", + "Java", + "0" + ], + [ + "Spludlow Tetris (Entry)", + "mature, inactive since 2018", + "puzzle", + "-", + "C#", + "GPL-3.0" + ], + [ + "The Force Engine (Entry)", + "beta", + "action, game engine, remake", + "-", + "C++", + "0" + ], + [ + "Tetrepetete (Entry)", + "mature", + "puzzle", + "Windows, Android", + "C++", + "GPL-2.0" + ], + [ + "asdf (Entry)", + "mature", + "action, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "TinTin++ (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS, Android", + "C", + "GPL-3.0" + ], + [ + "Tanks of Freedom (Entry)", + "mature", + "strategy", + "Windows, Linux, macOS, Android", + "GDScript", + "MIT" + ], + [ + "Torque 3D (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS", + "C++, C", + "T" + ], + [ + "Torque 2D (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS", + "C++, C", + "T" + ], + [ + "Trackballs (Entry)", + "mature", + "puzzle, remake", + "Linux", + "C++, Scheme", + "GPL-2.0" + ], + [ + "TripleA (Entry)", + "mature", + "strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "TVTower (Entry)", + "mature", + "remake, strategy", + "-", + "BlitzMax, Lua", + "Custom" + ], + [ + "KungFoo Barracuda (Entry)", + "mature, inactive since 2016", + "arcade", + "Linux, Android", + "C++", + "GPL-3.0" + ], + [ + "Ultima 5 Redux (Entry)", + "beta", + "remake, role playing", + "-", + "C#", + "MIT" + ], + [ + "UFO: Alien Invasion (Entry)", + "mature", + "strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Liquid War (Entry)", + "mature, inactive since 2015", + "action", + "Linux", + "C, Shell", + "GPL-3.0" + ], + [ + "Umoria (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "Procedural Map Generator (Entry)", + "mature, inactive since 2018", + "tool", + "Windows", + "C++", + "T" + ], + [ + "unitystation (Entry)", + "beta", + "adventure", + "Windows, Linux, macOS", + "C#", + "AGPL-3.0" + ], + [ + "Unknown Horizons (Entry)", + "beta", + "strategy", + "-", + "Python, GDScript", + "GPL-2.0" + ], + [ + "UnNetHack (Entry)", + "mature", + "role playing", + "-", + "C", + "Custom" + ], + [ + "Unvanquished (Entry)", + "mature", + "action", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "Urho3D (Entry)", + "mature", + "framework", + "-", + "C++, AngelScript", + "T" + ], + [ + "UltraStar Deluxe (Entry)", + "mature", + "music, remake", + "Windows, Linux, macOS", + "Pascal", + "GPL-2.0" + ], + [ + "UltraStar Play (Entry)", + "beta", + "music, remake", + "Windows, Linux, macOS, Android", + "C#", + "MIT" + ], + [ + "Valyria Tear (Entry)", + "mature", + "role playing", + "-", + "Lua, C++, C", + "GPL-2.0" + ], + [ + "CrappyBird (Entry)", + "mature, inactive since 2017", + "puzzle, remake", + "Web", + "JavaScript", + "MIT" + ], + [ + "VCMI (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Veloren (Entry)", + "beta", + "role playing", + "-", + "Rust", + "GPL-3.0" + ], + [ + "Mafia: Toolkit (Entry)", + "mature", + "tool", + "Windows", + "C#", + "T" + ], + [ + "Vircadia (Entry)", + "mature", + "simulation", + "-", + "C++", + "Apache-2.0" + ], + [ + "Open Hexagon (Entry)", + "mature", + "puzzle", + "-", + "C++, C", + "AFL-3.0" + ], + [ + "Vegan on a Desert Island (Entry)", + "beta", + "adventure", + "-", + "Lua", + "GPL-3.0" + ], + [ + "FreeRCT (Entry)", + "beta, inactive since 2016", + "remake, strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "IMaze (Entry)", + "mature, inactive since 2001", + "action", + "-", + "C", + "4-clause BSD" + ], + [ + "Deathchase 3D (Entry)", + "mature, inactive since 2002", + "remake", + "-", + "C, Perl, Shell", + "GPL-2.0" + ], + [ + "Brutal Chess (Entry)", + "beta, inactive since 2007", + "strategy", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Mrfuze (Entry)", + "mature, inactive since 2008", + "platform", + "-", + "Python", + "LGPL-2.1" + ], + [ + "GL-117 (Entry)", + "mature, inactive since 2005", + "action, simulation", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Nikwi (Entry)", + "beta, inactive since 2012", + "platform", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Mmpong (Entry)", + "beta, inactive since 2009", + "arcade", + "-", + "C", + "GPL-3.0" + ], + [ + "Warp Rogue (Entry)", + "beta, inactive since 2010", + "platform", + "-", + "C", + "GPL-3.0" + ], + [ + "openc2e (Entry)", + "beta", + "game engine, remake, simulation", + "-", + "C, C++", + "1" + ], + [ + "XInvaders 3D (Entry)", + "mature, inactive since 2000", + "arcade", + "-", + "C, Objective-C", + "GPL-2.0" + ], + [ + "Apricots (Entry)", + "beta, inactive since 2003", + "arcade", + "-", + "C++", + "GPL-2.0" + ], + [ + "Decker (Entry)", + "beta, inactive since 2013", + "role playing", + "-", + "Java", + "GPL-2.0" + ], + [ + "Slot-Racers (Entry)", + "mature, inactive since 2008", + "arcade, remake", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Bloboats (Entry)", + "mature, inactive since 2006", + "action", + "-", + "C++", + "GPL-2.0" + ], + [ + "CAVEZ of PHEAR (Entry)", + "beta, inactive since 2011", + "action, arcade", + "-", + "C", + "GPL-3.0" + ], + [ + "Battery (Entry)", + "mature, inactive since 2009", + "arcade", + "-", + "Java", + "EPL-2.0, Custom" + ], + [ + "Luola (Entry)", + "mature, inactive since 2005", + "arcade", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "Sinatra (Entry)", + "mature, inactive since 2008", + "music", + "-", + "C", + "GPL-3.0" + ], + [ + "Creep Smash (Entry)", + "beta, inactive since 2011", + "action", + "-", + "Java", + "GPL-3.0" + ], + [ + "Peragro Tempus (Entry)", + "beta, inactive since 2012", + "role playing", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "OpenBlox (Entry)", + "beta, inactive since 2011", + "simulation", + "Windows, Linux", + "Python, Lua", + "GPL-3.0" + ], + [ + "FreeFalcon (Entry)", + "inactive since 2014", + "simulation", + "-", + "C, C++", + "2-clause BSD" + ], + [ + "LambdaRogue: The Book of Stars (Entry)", + "mature, inactive since 2012", + "role playing", + "Windows, Linux", + "Pascal", + "GPL-2.0" + ], + [ + "Mtp Target (Entry)", + "mature, inactive since 2008", + "action", + "-", + "C++", + "GPL-2.0" + ], + [ + "Infinite Mario Bros (Entry)", + "mature, inactive since 2010", + "platform", + "Windows, Linux, macOS", + "Java", + "3-clause BSD" + ], + [ + "ORIENT (Entry)", + "mature, inactive since 2009", + "educational, role playing", + "-", + "C#, Java", + "GPL-2.0" + ], + [ + "pyORPG (Entry)", + "beta, inactive since 2015", + "framework", + "-", + "Python", + "T" + ], + [ + "Trinity Reign (Entry)", + "beta, inactive since 2013", + "role playing", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Windstille (Entry)", + "beta, inactive since 2017", + "arcade", + "-", + "C++, Scheme", + "GPL-3.0" + ], + [ + "StressFreeZone (Entry)", + "beta, inactive since 2007", + "simulation", + "-", + "C++, Lua", + "GPL-3.0" + ], + [ + "Combat Simulator Project (Entry)", + "beta, inactive since 2010", + "action, simulation", + "Windows", + "C++", + "GPL-2.0" + ], + [ + "Between (Entry)", + "beta, inactive since 2010", + "puzzle", + "Linux", + "PHP, C++", + "?" + ], + [ + "Black Shades Elite (Entry)", + "beta, inactive since 2007", + "simulation", + "-", + "C", + "GPL-2.0" + ], + [ + "Anagramarama (Entry)", + "beta, inactive since 2002", + "puzzle", + "-", + "C", + "GPL-2.0" + ], + [ + "OpenRTS (Entry)", + "beta, inactive since 2006", + "strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Key Runner (Entry)", + "mature, inactive since 2013", + "action", + "Windows, Linux", + "C++, Shell", + "GPL-3.0" + ], + [ + "Cart Life (Entry)", + "mature, inactive since 2014", + "simulation", + "Windows, Linux", + "AGS Script", + "Custom" + ], + [ + "Slingshot (Entry)", + "beta, inactive since 2007", + "strategy", + "Windows, Linux, macOS", + "Python", + "GPL-2.0" + ], + [ + "Ironseed (Entry)", + "mature, inactive since 2013", + "remake", + "-", + "Pascal", + "GPL-3.0" + ], + [ + "Runfield (Entry)", + "mature, inactive since 2011", + "arcade", + "Web", + "JavaScript", + "GPL-3.0" + ], + [ + "Gnome Hearts (Entry)", + "mature, inactive since 2015", + "cards, strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "Yet Another Engine (Entry)", + "beta, inactive since 2016", + "game engine", + "Windows, Linux, macOS, Android, iOS", + "MoonScript, Java, Lua", + "T" + ], + [ + "jClassicRPG (Entry)", + "beta, inactive since 2010", + "role playing", + "-", + "Java", + "LGPL-3.0" + ], + [ + "movbizz (Entry)", + "beta, inactive since 2015", + "remake", + "Web", + "PHP, JavaScript", + "MIT" + ], + [ + "Iris2 (Entry)", + "beta, inactive since 2017", + "remake, role playing", + "-", + "C, C++, Lua", + "GPL-3.0" + ], + [ + "Lips of Suna (Entry)", + "beta, inactive since 2014", + "role playing", + "-", + "C, Lua, C++", + "GPL-3.0" + ], + [ + "Iceball (Entry)", + "inactive since 2017", + "remake", + "-", + "C, Lua", + "GPL-3.0" + ], + [ + "dim3 (Entry)", + "beta, inactive since 2014", + "game engine", + "Windows, Linux, macOS", + "C", + "T" + ], + [ + "Summoning Wars (Entry)", + "beta, inactive since 2014", + "role playing", + "-", + "C, C++, Lua", + "GPL-3.0" + ], + [ + "Epiar (Entry)", + "beta", + "action", + "-", + "C, C++, Lua", + "GPL-2.0" + ], + [ + "Raincat (Entry)", + "mature, inactive since 2018", + "puzzle", + "-", + "Haskell", + "3-clause BSD" + ], + [ + "WarMUX (Entry)", + "beta, inactive since 2018", + "platform", + "-", + "C++", + "GPL-2.0" + ], + [ + "Tornado (Entry)", + "mature, inactive since 2009", + "simulation", + "-", + "C", + "GPL-2.0" + ], + [ + "Radakan (Entry)", + "beta, inactive since 2014", + "role playing", + "-", + "Python", + "Custom" + ], + [ + "KittenMaxit (Entry)", + "beta", + "remake, strategy", + "Android", + "Java", + "MIT" + ], + [ + "Bacon2D (Entry)", + "beta, inactive since 2018", + "game engine", + "-", + "C++", + "T" + ], + [ + "Freeciv-web (Entry)", + "mature", + "strategy", + "Web", + "JavaScript, Java, Python", + "AGPL-3.0" + ], + [ + "Plee the Bear (Entry)", + "beta, inactive since 2017", + "platform", + "-", + "Lisp, C++, Scheme, C", + "GPL-3.0" + ], + [ + "JiGS Interactive Game System (Entry)", + "beta", + "framework, role playing", + "Web", + "JavaScript, PHP", + "0" + ], + [ + "Devana (Entry)", + "beta", + "strategy", + "Web", + "PHP", + "zlib" + ], + [ + "Tux of Math Command (Entry)", + "mature, inactive since 2011", + "educational", + "Linux", + "C", + "GPL-3.0" + ], + [ + "TrueCraft (Entry)", + "beta, inactive since 2018", + "remake, simulation", + "-", + "C#", + "MIT" + ], + [ + "Thousand Parsec (Entry)", + "beta, inactive since 2012", + "framework, strategy", + "-", + "C++, Python", + "0" + ], + [ + "Voxelands (Entry)", + "beta", + "remake, simulation", + "Windows, Linux", + "C++, C", + "GPL-3.0" + ], + [ + "One is enough (Entry)", + "beta, inactive since 2008", + "arcade", + "-", + "Python", + "GPL-2.0" + ], + [ + "Pax Britannica (Entry)", + "mature", + "strategy", + "-", + "Lua, C", + "MIT" + ], + [ + "CommandoJS (Entry)", + "beta, inactive since 2012", + "action, remake", + "Web", + "JavaScript, CoffeeScript", + "MIT" + ], + [ + "Umbra (Entry)", + "beta, inactive since 2002", + "role playing", + "-", + "Python", + "Custom" + ], + [ + "Adanaxis (Entry)", + "mature, inactive since 2007", + "action", + "-", + "C++", + "GPL-2.0" + ], + [ + "Hnefatafl (Entry)", + "beta, inactive since 2014", + "board, strategy", + "-", + "C", + "ISC" + ], + [ + "CivOne (Entry)", + "beta", + "remake, strategy", + "-", + "C#", + "CC0" + ], + [ + "EliFUT Android (Entry)", + "mature", + "simulation", + "Android", + "Java, Kotlin", + "Apache-2.0" + ], + [ + "WebHangman (Entry)", + "mature, inactive since 2003", + "puzzle", + "Web", + "JavaScript", + "GPL-2.0" + ], + [ + "Card Stories (Entry)", + "beta, inactive since 2012", + "cards, puzzle", + "Web", + "JavaScript, Python", + "AGPL-3.0" + ], + [ + "Ardentryst (Entry)", + "mature, inactive since 2009", + "action, role playing", + "-", + "Python", + "GPL-3.0" + ], + [ + "Battles of Antargis (Entry)", + "beta, inactive since 2014", + "strategy", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "Kiwi.js (Entry)", + "mature, inactive since 2015", + "game engine", + "Web", + "JavaScript, TypeScript", + "T" + ], + [ + "Naev (Entry)", + "mature", + "role playing", + "-", + "C, Lua", + "GPL-3.0" + ], + [ + "Super Transball 2 (Entry)", + "mature, inactive since 2005", + "arcade", + "-", + "C++", + "GPL-2.0" + ], + [ + "Monstrosity (Entry)", + "mature", + "role playing", + "-", + "Python", + "MIT" + ], + [ + "F-1 Spirit (Entry)", + "beta, inactive since 2009", + "remake, simulation", + "Windows, Linux, macOS", + "C++", + "?" + ], + [ + "flixel-gdx (Entry)", + "beta, inactive since 2017", + "framework", + "Windows, Linux, macOS, Android, iOS, Web", + "Java", + "D" + ], + [ + "Paper Isaac (Entry)", + "beta, inactive since 2015", + "role playing", + "-", + "ooc", + "MIT" + ], + [ + "Return of Dr. Destructo (Entry)", + "mature, inactive since 2015", + "action, remake", + "-", + "C++", + "MIT" + ], + [ + "OpenGGS (Entry)", + "beta, inactive since 2017", + "remake", + "-", + "C++", + "GPL-2.0" + ], + [ + "Beat Harvester (Entry)", + "beta, inactive since 2009", + "action", + "-", + "Python", + "GPL-2.0" + ], + [ + "Pendumito (Entry)", + "mature, inactive since 2003", + "tool", + "Web", + "JavaScript", + "0" + ], + [ + "Tremulous (Entry)", + "mature, inactive since 2016", + "action", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "SDL Bomber (Entry)", + "mature, inactive since 2012", + "action, remake", + "Linux", + "C", + "GPL-2.0" + ], + [ + "Aussenposten (Entry)", + "beta, inactive since 2015", + "strategy", + "Windows, Linux", + "JavaScript", + "MIT" + ], + [ + "Zen! (Entry)", + "mature", + "simulation", + "Android", + "Java", + "GPL-2.0" + ], + [ + "HoverRace (Entry)", + "mature, inactive since 2016", + "remake, sports", + "Windows", + "C++", + "Custom" + ], + [ + "AndEngine (Entry)", + "mature, inactive since 2013", + "game engine", + "Windows, Linux", + "Java", + "0" + ], + [ + "Nox Imperii (Entry)", + "mature, inactive since 2016", + "sports", + "-", + "C", + "GPL-3.0" + ], + [ + "XorCurses (Entry)", + "beta, inactive since 2012", + "puzzle", + "Linux", + "C", + "GPL-3.0" + ], + [ + "Land of Fire (Entry)", + "beta", + "role playing", + "Web", + "Script, PHP", + "GPL-2.0" + ], + [ + "Hero of Allacrost (Entry)", + "mature", + "role playing", + "-", + "C++, Lua", + "GPL-2.0" + ], + [ + "buggyGame (Entry)", + "beta, inactive since 2007", + "action", + "-", + "Python", + "GPL-2.0" + ], + [ + "Pillows (Entry)", + "beta, inactive since 2007", + "arcade", + "Windows, Linux, macOS", + "Python", + "GPL-2.0" + ], + [ + "ElonaFoobar (Entry)", + "mature", + "remake, role playing", + "Windows, Linux, macOS", + "C++, Lua", + "MIT" + ], + [ + "rpgboss (Entry)", + "beta, inactive since 2017", + "game engine, role playing", + "Windows, Linux, macOS", + "Scala, JavaScript", + "0" + ], + [ + "System Syzygy (Entry)", + "mature, inactive since 2018", + "puzzle", + "Windows, Linux, macOS", + "Rust", + "GPL-3.0" + ], + [ + "Azimuth (Entry)", + "mature", + "adventure", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "BrowserQuest (Entry)", + "mature", + "adventure, role playing", + "Web", + "JavaScript", + "MPL-2.0" + ], + [ + "MegaGlest (Entry)", + "mature", + "remake, strategy", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "Free Allegiance (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "MIT" + ], + [ + "HaxePunk (Entry)", + "mature", + "framework", + "Windows, Linux, macOS, Android, iOS, Web", + "Haxe", + "T" + ], + [ + "HaxeFlixel (Entry)", + "mature", + "framework", + "-", + "Haxe", + "T" + ], + [ + "MoveNoid (Entry)", + "mature, inactive since 2017", + "arcade", + "-", + "C++", + "GPL-3.0, 3-clause BSD" + ], + [ + "Aisleriot (Entry)", + "mature", + "arcade, cards", + "Linux", + "C, Scheme", + "GPL-3.0" + ], + [ + "Atomix (Entry)", + "mature", + "puzzle, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Gnome Chess (Entry)", + "mature", + "strategy", + "Linux", + "Vala", + "GPL-3.0" + ], + [ + "Mines (Entry)", + "mature", + "strategy", + "Linux", + "Vala", + "GPL-3.0" + ], + [ + "Quadrapassel (Entry)", + "mature", + "puzzle", + "-", + "Vala", + "GPL-2.0" + ], + [ + "Remixed Dungeon (Entry)", + "mature", + "remake, role playing", + "Android", + "Java", + "GPL-3.0" + ], + [ + "Ryzom Core (Entry)", + "mature", + "remake, role playing", + "-", + "C++, PHP", + "AGPL-3.0" + ], + [ + "Wagic, the Homebrew (Entry)", + "beta", + "cards, game engine", + "Windows, Linux, macOS, Android, iOS", + "C++, C, Objective-C", + "D" + ], + [ + "Berusky (Entry)", + "mature", + "action", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Berusky II (Entry)", + "beta", + "action", + "-", + "C++", + "GPL-3.0" + ], + [ + "Andor's Trail (Entry)", + "beta", + "role playing", + "Android", + "Java", + "GPL-2.0" + ], + [ + "Rabbit Escape (Entry)", + "mature", + "action, puzzle, remake", + "Windows, Linux, macOS, Android", + "Java", + "GPL-2.0" + ], + [ + "Mirror Magic (Entry)", + "mature", + "puzzle, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Rocks'n'Diamonds (Entry)", + "mature", + "action, puzzle, remake", + "Windows, Linux, macOS, Android", + "C", + "GPL-2.0" + ], + [ + "Atrinik (Entry)", + "mature, inactive since 2016", + "role playing", + "-", + "C, Python", + "GPL-2.0" + ], + [ + "Lionheart Remake (Entry)", + "beta, inactive since 2018", + "platform, remake", + "-", + "Java", + "GPL-3.0" + ], + [ + "Tyrian Remake (Entry)", + "beta", + "action, remake", + "-", + "Java", + "GPL-2.0" + ], + [ + "warcraft-remake (Entry)", + "beta", + "remake, strategy", + "Windows, Linux, Android", + "Java", + "GPL-2.0" + ], + [ + "JaNaG - Java Name Generator (Entry)", + "mature, inactive since 2016", + "tool", + "-", + "Java", + "0" + ], + [ + "Dungeon (Entry)", + "mature", + "role playing", + "Windows, Linux, macOS", + "Java", + "3-clause BSD" + ], + [ + "Blackvoxel (Entry)", + "mature", + "simulation", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "Blender game engine (Entry)", + "mature", + "framework", + "-", + "C++", + "0" + ], + [ + "BomberClone (Entry)", + "beta, inactive since 2010", + "arcade", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Bos Wars (Entry)", + "mature, inactive since 2013", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Bridge Command (Entry)", + "mature", + "simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "BZFlag (Entry)", + "mature", + "action", + "Windows, Linux, macOS", + "C++", + "LGPL-2.1, MPL-2.0" + ], + [ + "Cafu Engine (Entry)", + "beta, inactive since 2018", + "game engine", + "-", + "C++", + "T" + ], + [ + "Fitzquake (Entry)", + "beta, inactive since 2009", + "action, remake", + "Windows", + "C", + "GPL-2.0" + ], + [ + "Chocolate Doom (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C", + "GPL-2.0" + ], + [ + "ClassiCube (Entry)", + "mature", + "remake", + "Windows, Linux, macOS, Android", + "C", + "3-clause BSD" + ], + [ + "ClassicUO (Entry)", + "beta", + "role playing", + "-", + "C#", + "4-clause BSD" + ], + [ + "Argentum Online (Entry)", + "beta, inactive since 2014", + "role playing", + "-", + "Visual Basic", + "GPL-2.0, AGPL-3.0" + ], + [ + "Crown (Entry)", + "beta", + "game engine", + "Linux", + "C, C++, Vala", + "T" + ], + [ + "Daimonin (Entry)", + "mature", + "role playing", + "-", + "C", + "GPL-2.0" + ], + [ + "Vulture's Eye (Entry)", + "mature, inactive since 2015", + "role playing", + "-", + "C++, C", + "NetHack General Public License" + ], + [ + "Daggerfall Unity (Entry)", + "mature", + "remake, role playing", + "Windows, Linux, macOS", + "C#", + "MIT" + ], + [ + "DOOM Retro (Entry)", + "mature", + "action, remake", + "Windows", + "C, C++", + "GPL-3.0" + ], + [ + "GLSpeed (Entry)", + "mature", + "remake, simulation", + "-", + "Pascal, C", + "GPL-2.0" + ], + [ + "Blasphemer (Entry)", + "mature, inactive since 2017", + "action", + "-", + "None, Python", + "None" + ], + [ + "DreamChess (Entry)", + "beta", + "board, strategy", + "Windows, Linux, macOS", + "C", + "GPL-3.0" + ], + [ + "Duality (Entry)", + "mature", + "game engine", + "-", + "C#", + "T" + ], + [ + "DXX-Rebirth (Entry)", + "mature", + "remake", + "Windows, Linux", + "C, C++, Python", + "GPL-3.0, Custom" + ], + [ + "EDuke32 (Entry)", + "mature", + "action, remake", + "-", + "C, C++", + "GPL-2.0" + ], + [ + "ET: Legacy (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C, C++, Lua", + "GPL-3.0" + ], + [ + "ezQuake (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "FlightGear (Entry)", + "mature", + "simulation", + "Windows, macOS", + "C++", + "GPL-2.0" + ], + [ + "xdigger (Entry)", + "mature, inactive since 1999", + "action", + "Linux", + "C", + "GPL-2.0" + ], + [ + "FreedroidRPG (Entry)", + "mature", + "role playing", + "-", + "C, C++, Lua", + "GPL-2.0" + ], + [ + "Intersect (Entry)", + "beta", + "game engine, role playing", + "Windows, Linux, macOS", + "C#", + "T, 0" + ], + [ + "FreeOrion (Entry)", + "beta", + "remake, strategy", + "-", + "C++, Python", + "GPL-2.0" + ], + [ + "FreeType (Entry)", + "mature", + "library", + "-", + "C", + "0, m" + ], + [ + "Shotgun Debugger (Entry)", + "mature, inactive since 2005", + "remake", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Gang Garrison 2 (Entry)", + "mature", + "action", + "Windows", + "Game Maker Script", + "MPL-2.0" + ], + [ + "GearHead 2 (Entry)", + "beta", + "role playing", + "-", + "Pascal", + "LGPL-2.0" + ], + [ + "Ball and Paddle (Entry)", + "beta, inactive since 2009", + "action", + "Linux", + "C++, Scheme, Shell", + "GPL-3.0" + ], + [ + "GNU Chess (Entry)", + "mature, inactive since 2017", + "game engine, strategy", + "Windows, Linux, macOS", + "C++", + "0" + ], + [ + "GNU FreeDink (Entry)", + "mature, inactive since 2012", + "adventure, remake, role playing", + "Windows, Linux, macOS, Web", + "C", + "GPL-3.0" + ], + [ + "GNU Go (Entry)", + "mature, inactive since 2011", + "board, game engine, strategy", + "Windows, Linux, macOS", + "C", + "0" + ], + [ + "starshatter-open (Entry)", + "beta, inactive since 2015", + "action, remake", + "-", + "C++", + "3-clause BSD" + ], + [ + "Jump'n'Bump (Entry)", + "mature, inactive since 2004", + "remake", + "Windows", + "C", + "GPL-2.0" + ], + [ + "Isleward (Entry)", + "mature", + "role playing", + "-", + "JavaScript", + "AGPL-3.0" + ], + [ + "android-chess (Entry)", + "mature", + "strategy", + "Android", + "Java, C++", + "MIT" + ], + [ + "KaM Remake (Entry)", + "mature", + "remake, strategy", + "-", + "Pascal", + "AGPL-3.0" + ], + [ + "Cuyo (Entry)", + "mature, inactive since 2014", + "puzzle", + "Linux", + "C++, OCaml", + "GPL-2.0" + ], + [ + "OpenKrush (Entry)", + "beta", + "remake", + "Windows, Linux, macOS", + "C#", + "GPL-3.0" + ], + [ + "Marblez (Entry)", + "beta, inactive since 2017", + "arcade", + "-", + "C#", + "MIT" + ], + [ + "Korax' Heritage (Entry)", + "mature", + "game engine, role playing", + "-", + "None", + "?" + ], + [ + "Simple DirectMedia Layer (Entry)", + "mature", + "library", + "-", + "C", + "b" + ], + [ + "Maelstrom (Entry)", + "mature, inactive since 2002", + "action, arcade, remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "Castle-Combat (Entry)", + "beta, inactive since 2006", + "remake, strategy", + "-", + "Python", + "GPL-2.0" + ], + [ + "XScavenger (Entry)", + "mature, inactive since 2015", + "puzzle, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "Lightweight Java Game Library (Entry)", + "mature", + "framework", + "-", + "Kotlin, C, Java", + "D" + ], + [ + "Thrust (Entry)", + "beta, inactive since 2006", + "arcade, remake", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "Mechanized Assault & eXploration Reloaded (Entry)", + "beta", + "remake, strategy", + "-", + "C++, C", + "GPL-2.0" + ], + [ + "MegaMek (Entry)", + "mature", + "strategy", + "-", + "Java", + "GPL-2.0" + ], + [ + "MekWars (Entry)", + "mature", + "strategy", + "Windows, Linux, macOS", + "Java", + "GPL-2.0" + ], + [ + "Craft (Entry)", + "mature, inactive since 2017", + "puzzle", + "Windows, Linux, macOS", + "C, Python", + "MIT" + ], + [ + "Minetest (Entry)", + "mature", + "framework, remake", + "Windows, Linux, macOS, Android", + "C, C++, Lua", + "1" + ], + [ + "OpenSA (Entry)", + "mature", + "remake, strategy", + "-", + "C#, Lua", + "GPL-3.0" + ], + [ + "Powerslide remake (Entry)", + "beta", + "arcade, remake", + "Windows, Linux, Android", + "C++", + "MIT" + ], + [ + "Robot Redemption (Entry)", + "mature, inactive since 2014", + "action, remake", + "-", + "C++", + "CC-BY-NC-SA-4.0, GPL-2.0" + ], + [ + "MonoGame (Entry)", + "mature", + "framework", + "-", + "C#", + "L, T" + ], + [ + "MonoGame.Extended (Entry)", + "mature", + "tool", + "-", + "C#", + "T" + ], + [ + "NeoLemmix (Entry)", + "beta", + "puzzle", + "-", + "Pascal", + "?" + ], + [ + "NetHack (Entry)", + "mature", + "role playing", + "-", + "C", + "Custom" + ], + [ + "NetPanzer (Entry)", + "beta", + "strategy", + "-", + "C++", + "GPL-2.0" + ], + [ + "Netrek (Entry)", + "mature, inactive since 2009", + "action", + "Windows, Linux, macOS", + "C", + "Custom" + ], + [ + "Crack Attack! (Entry)", + "mature, inactive since 2005", + "puzzle, remake", + "Windows, Linux", + "C++", + "GPL-2.0" + ], + [ + "Enigma (Entry)", + "mature", + "puzzle, remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "OGRE (Entry)", + "mature", + "framework", + "-", + "C++", + "T" + ], + [ + "OpenClonk (Entry)", + "mature", + "action, remake", + "Windows, Linux", + "C, C++", + "ISC" + ], + [ + "OpenDominion (Entry)", + "beta", + "strategy", + "Web", + "PHP", + "AGPL-3.0" + ], + [ + "OpenFL (Entry)", + "mature", + "framework", + "-", + "Haxe", + "T" + ], + [ + "OpenOMF (Entry)", + "beta", + "action, remake", + "Windows, Linux", + "C, C++", + "MIT" + ], + [ + "OpenTTD (Entry)", + "mature", + "remake, simulation", + "-", + "C++", + "GPL-2.0" + ], + [ + "Panda3D (Entry)", + "mature", + "framework", + "-", + "C++, C", + "D" + ], + [ + "The Legend of Edgar (Entry)", + "mature", + "action, platform", + "Windows, Linux", + "C", + "GPL-2.0" + ], + [ + "PixelLight (Entry)", + "mature, inactive since 2012", + "game engine", + "Windows, Linux", + "C, C++", + "T" + ], + [ + "PokerTH (Entry)", + "mature, inactive since 2017", + "strategy", + "Windows, Linux, macOS, Android", + "C++", + "AGPL-3.0" + ], + [ + "SDLPoP (Entry)", + "mature", + "action, remake", + "-", + "C", + "GPL-3.0" + ], + [ + "FreePrince (Entry)", + "beta, inactive since 2011", + "action, platform, remake", + "-", + "C", + "GPL-2.0" + ], + [ + "pygame (Entry)", + "mature", + "framework", + "-", + "C, Python", + "1" + ], + [ + "Fallen Spire (Entry)", + "beta, inactive since 2009", + "role playing", + "-", + "Python", + "GPL-3.0" + ], + [ + "Monsters and Mushrooms (Entry)", + "mature, inactive since 2010", + "arcade, remake", + "-", + "Python", + "GPL-2.0" + ], + [ + "ransack (Entry)", + "mature, inactive since 2016", + "role playing", + "-", + "Python", + "MIT" + ], + [ + "Story of a Lost Sky (Entry)", + "mature", + "role playing", + "-", + "Python", + "3-clause BSD" + ], + [ + "UlDunAd (Entry)", + "beta, inactive since 2011", + "role playing", + "-", + "Python", + "GPL-3.0" + ], + [ + "SolarWolf (Entry)", + "mature, inactive since 2004", + "action, arcade, remake", + "Windows, Linux, macOS", + "Python", + "LGPL-2.1" + ], + [ + "Qt (Entry)", + "mature", + "framework", + "-", + "C++", + "0" + ], + [ + "raylib (Entry)", + "mature", + "framework", + "Windows, Linux, macOS, Android, Web", + "C, C++, C#", + "b" + ], + [ + "Red Eclipse (Entry)", + "mature", + "action", + "-", + "C++", + "zlib" + ], + [ + "Ren'Py (Entry)", + "mature", + "framework, visual novel", + "Windows, Linux, macOS, Android, iOS, Web", + "C, Python, Ren'Py", + "1" + ], + [ + "ResidualVM (Entry)", + "beta", + "adventure, game engine, remake", + "Windows, macOS", + "C++", + "0" + ], + [ + "Rigs of Rods (Entry)", + "mature", + "simulation", + "Windows", + "C, C++, AngelScript", + "GPL-3.0" + ], + [ + "sandbox Game Maker (Entry)", + "mature, inactive since 2014", + "framework", + "-", + "C++, C", + "m" + ], + [ + "Cosmore (Entry)", + "mature", + "remake", + "-", + "C, Assembly", + "MIT" + ], + [ + "ScummVM (Entry)", + "mature", + "framework, game engine, remake", + "-", + "C++", + "0" + ], + [ + "Moon-buggy (Entry)", + "mature, inactive since 2006", + "action", + "-", + "C", + "GPL-2.0" + ], + [ + "Simple and Fast Multimedia Library (Entry)", + "mature", + "library", + "-", + "C++", + "b" + ], + [ + "Return to the Roots (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "GPL-3.0" + ], + [ + "Simutrans (Entry)", + "mature", + "simulation", + "-", + "C++", + "Artistic License-1.0" + ], + [ + "JSoko (Entry)", + "mature", + "puzzle", + "Windows, Linux, macOS", + "Java", + "GPL-3.0" + ], + [ + "Solarus (Entry)", + "mature", + "action, framework, game engine, remake, role playing", + "-", + "C, C++, Lua", + "0" + ], + [ + "Soldat (Entry)", + "mature", + "action", + "-", + "C, Pascal", + "MIT" + ], + [ + "Sonic Robo Blast 2 (Entry)", + "mature", + "platform", + "Windows, Linux, macOS", + "C, C++", + "GPL-2.0" + ], + [ + "StepMania (Entry)", + "mature", + "music", + "Windows", + "C, C++, Lua", + "MIT" + ], + [ + "SuperTux (Entry)", + "beta", + "platform", + "Windows, Linux, macOS", + "C++", + "GPL-3.0" + ], + [ + "Teeworlds (Entry)", + "beta", + "platform", + "Windows, Linux, macOS", + "C, C++", + "zlib" + ], + [ + "The Dark Mod (Entry)", + "mature", + "role playing", + "Windows, Linux", + "C++", + "GPL-3.0" + ], + [ + "The Mana World (Entry)", + "mature", + "role playing", + "Web", + "PHP, C++", + "GPL-2.0" + ], + [ + "Garith (Entry)", + "mature, inactive since 2013", + "educational", + "-", + "C++, Perl", + "LGPL-2.1" + ], + [ + "FLTK Recycling Game! (Entry)", + "mature, inactive since 2014", + "arcade", + "Windows, Linux, macOS", + "C++", + "LGPL-2.1" + ], + [ + "Tremfusion (Entry)", + "mature, inactive since 2009", + "remake", + "-", + "C", + "GPL-2.0" + ], + [ + "TTDPatch (Entry)", + "mature, inactive since 2013", + "simulation, tool", + "Windows", + "Assembly, C, C++", + "0" + ], + [ + "Tuxemon (Entry)", + "beta", + "remake, role playing", + "Windows, Linux, macOS, Android", + "Python", + "GPL-3.0" + ], + [ + "Vega Strike (Entry)", + "mature", + "framework", + "-", + "C++", + "0" + ], + [ + "VGC (Entry)", + "beta", + "tool", + "-", + "C++", + "0" + ], + [ + "AstroMenace (Entry)", + "mature", + "action, remake", + "-", + "C++, C", + "GPL-3.0" + ], + [ + "Vocaluxe (Entry)", + "beta, inactive since 2018", + "music", + "Windows, Linux", + "C#, C++", + "GPL-3.0" + ], + [ + "The Battle for Wesnoth (Entry)", + "mature", + "strategy", + "Windows, Linux, macOS, Android, iOS", + "C, C++, Java, Python, Lua", + "GPL-2.0" + ], + [ + "Widelands (Entry)", + "mature", + "strategy", + "-", + "C, C++, Lua, Python", + "GPL-2.0" + ], + [ + "WorldForge (Entry)", + "mature", + "framework, role playing", + "-", + "C++", + "0" + ], + [ + "Zelda Classic (Entry)", + "mature", + "role playing", + "Windows", + "C, C++", + "GPL-3.0" + ], + [ + "Children of Ur (Entry)", + "beta", + "role playing", + "Web", + "Dart, JavaScript", + "MIT" + ], + [ + "X-Moto (Entry)", + "mature, inactive since 2014", + "action, remake", + "Windows, Linux, macOS", + "C++", + "GPL-2.0" + ], + [ + "Xonotic (Entry)", + "mature", + "action", + "-", + "C, C++", + "GPL-3.0" + ], + [ + "xoreos (Entry)", + "beta", + "framework, remake", + "-", + "C++", + "0" + ], + [ + "GameCake (Entry)", + "mature", + "game engine", + "Windows, Linux, macOS", + "C, C++, Lua", + "T" + ], + [ + "Crosswords (Entry)", + "mature", + "board, role playing", + "Android", + "Java", + "GPL-2.0" + ], + [ + "Librerama (Entry)", + "mature", + "arcade", + "-", + "GDScript", + "GPL-3.0" + ], + [ + "Zandronum (Entry)", + "mature, inactive since 2017", + "action", + "Windows, Linux, macOS", + "C", + "Custom" + ], + [ + "GZDoom (Entry)", + "mature", + "action, remake", + "Windows, Linux, macOS", + "C, C++", + "GPL-3.0" + ], + [ + "Zeta (Entry)", + "beta", + "tool", + "-", + "C", + "T" + ], + [ + "Tank: Zone of Death (Entry)", + "beta, inactive since 2017", + "action", + "-", + "C++, Lua", + "GPL-3.0" + ], + [ + "Zed Online (Entry)", + "mature", + "remake, strategy", + "-", + "C++", + "?" + ] + ] +} \ No newline at end of file diff --git a/docs/developers/0.html b/docs/developers/0.html index 9d9c9f58..7919eec7 100644 --- a/docs/developers/0.html +++ b/docs/developers/0.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -636,7 +636,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/A.html b/docs/developers/A.html index fcb8b383..c2cac0e9 100644 --- a/docs/developers/A.html +++ b/docs/developers/A.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -10095,7 +10095,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/B.html b/docs/developers/B.html index 99c8725d..6f520474 100644 --- a/docs/developers/B.html +++ b/docs/developers/B.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -4884,7 +4884,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/C.html b/docs/developers/C.html index 17e1f6c2..03b8e697 100644 --- a/docs/developers/C.html +++ b/docs/developers/C.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -5541,7 +5541,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/D.html b/docs/developers/D.html index c0591713..00f906cf 100644 --- a/docs/developers/D.html +++ b/docs/developers/D.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -7242,7 +7242,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/E.html b/docs/developers/E.html index 50c1699a..fab8b292 100644 --- a/docs/developers/E.html +++ b/docs/developers/E.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -3615,7 +3615,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/F.html b/docs/developers/F.html index 9d7abb2c..fff8fc78 100644 --- a/docs/developers/F.html +++ b/docs/developers/F.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -3291,7 +3291,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/G.html b/docs/developers/G.html index 49297811..10f09062 100644 --- a/docs/developers/G.html +++ b/docs/developers/G.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -3579,7 +3579,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/H.html b/docs/developers/H.html index 20287504..37fa84b8 100644 --- a/docs/developers/H.html +++ b/docs/developers/H.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -2526,7 +2526,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/I.html b/docs/developers/I.html index 69f80332..6e6b9e1d 100644 --- a/docs/developers/I.html +++ b/docs/developers/I.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -1824,7 +1824,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/J.html b/docs/developers/J.html index 20e1365c..64f85429 100644 --- a/docs/developers/J.html +++ b/docs/developers/J.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -8916,7 +8916,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/K.html b/docs/developers/K.html index 9da15de6..824e987a 100644 --- a/docs/developers/K.html +++ b/docs/developers/K.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -4191,7 +4191,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/L.html b/docs/developers/L.html index 0d398daf..e92f53aa 100644 --- a/docs/developers/L.html +++ b/docs/developers/L.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -3975,7 +3975,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/M.html b/docs/developers/M.html index 48b747fe..e6a6b0db 100644 --- a/docs/developers/M.html +++ b/docs/developers/M.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -10770,7 +10770,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/N.html b/docs/developers/N.html index 9cbf83c8..c0d83a3b 100644 --- a/docs/developers/N.html +++ b/docs/developers/N.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -3507,7 +3507,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/O.html b/docs/developers/O.html index c1244f3b..0b97cd1e 100644 --- a/docs/developers/O.html +++ b/docs/developers/O.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -1644,7 +1644,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/P.html b/docs/developers/P.html index f78a2409..1efed797 100644 --- a/docs/developers/P.html +++ b/docs/developers/P.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -5100,7 +5100,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/Q.html b/docs/developers/Q.html index 3f649341..15264914 100644 --- a/docs/developers/Q.html +++ b/docs/developers/Q.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -465,7 +465,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/R.html b/docs/developers/R.html index 4a421ae1..73622a42 100644 --- a/docs/developers/R.html +++ b/docs/developers/R.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -6126,7 +6126,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/S.html b/docs/developers/S.html index 3eb8e166..b6860207 100644 --- a/docs/developers/S.html +++ b/docs/developers/S.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -9006,7 +9006,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/T.html b/docs/developers/T.html index 263d1fc6..9467de17 100644 --- a/docs/developers/T.html +++ b/docs/developers/T.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -6216,7 +6216,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/U.html b/docs/developers/U.html index 8d160f24..0f5ec420 100644 --- a/docs/developers/U.html +++ b/docs/developers/U.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -600,7 +600,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/V.html b/docs/developers/V.html index ab7d6224..659c0183 100644 --- a/docs/developers/V.html +++ b/docs/developers/V.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -2364,7 +2364,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/W.html b/docs/developers/W.html index da86e3ad..cec623ed 100644 --- a/docs/developers/W.html +++ b/docs/developers/W.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -1770,7 +1770,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/X.html b/docs/developers/X.html index 4b40afd3..ebab0a2f 100644 --- a/docs/developers/X.html +++ b/docs/developers/X.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -771,7 +771,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/Y.html b/docs/developers/Y.html index 889db4f8..b9d4d176 100644 --- a/docs/developers/Y.html +++ b/docs/developers/Y.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -978,7 +978,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/Z.html b/docs/developers/Z.html index c6d5e001..b1cf0b83 100644 --- a/docs/developers/Z.html +++ b/docs/developers/Z.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -1293,7 +1293,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/developers/index.html b/docs/developers/index.html index e61f6f20..9383c431 100644 --- a/docs/developers/index.html +++ b/docs/developers/index.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Developers @@ -1819,7 +1819,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/frameworks/framework.html b/docs/frameworks/framework.html index 70e783dd..7b84cfaa 100644 --- a/docs/frameworks/framework.html +++ b/docs/frameworks/framework.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Game engines, frameworks, tools @@ -1583,7 +1583,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/frameworks/game engine.html b/docs/frameworks/game engine.html index 9d6d7d14..ac8f4b05 100644 --- a/docs/frameworks/game engine.html +++ b/docs/frameworks/game engine.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Game engines, frameworks, tools @@ -42,7 +42,7 @@
-

Game Engine

Index

+

Game Engines

Index

puzzle sliding blocks
-
Homepages: play2048.co, 2048
Play online: play2048.co
+
Homepage: play2048.co
Media: 2048
Play online: play2048.co
Details
Code languages: JavaScript, Java
Code licenses: MIT
Code repositories: gabrielecirulli/2048.git(since 2014, ), tpcstld/2048.git @add(since 2014, )
Assets licenses: MIT
Build system: Rake
Developers: Gabriele Cirulli, Jerry Jiang, Laurent, Lee Reilly, Paul Woitaschek, sigod, Tim Petricola
@@ -258,7 +258,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/A.html b/docs/games/A.html index cf81b4dc..88f197fc 100644 --- a/docs/games/A.html +++ b/docs/games/A.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1093,7 +1093,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/B.html b/docs/games/B.html index 155bd128..6e7f5d76 100644 --- a/docs/games/B.html +++ b/docs/games/B.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1094,7 +1094,7 @@
adventurerole playing multiplayer online + massive
-
+
Details
Code languages: JavaScript
Code licenses: MPL-2.0
Code repositories: mozilla/BrowserQuest.git(since 2011, )
Developers: Franck Lecollinet, Guillaume Lecollinet, Myles Recny
Improve Raw entry @@ -1205,7 +1205,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/C.html b/docs/games/C.html index 85c76a08..407ff405 100644 --- a/docs/games/C.html +++ b/docs/games/C.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -788,7 +788,7 @@
simulation clone content open
-
+
Details
Code languages: Rust, JavaScript
Code licenses: AGPL-3.0
Code repositories: citybound/citybound.git(since 2016, )
Developers: Anselm Eickhoff, Ben Wang, Martin Risell Lilja, O01eg, Rasmus Larsen, Vladimir
Improve Raw entry @@ -1588,7 +1588,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/D.html b/docs/games/D.html index 987ad44d..8daff410 100644 --- a/docs/games/D.html +++ b/docs/games/D.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -414,7 +414,7 @@
actionremake content commercial + original required (Diablo 1) engine recreation
-
Homepage: diasurgical/devilution
Inspiration: Diablo
+
Homepage: diasurgical/devilution
Inspiration: Diablo
Improve @@ -1239,7 +1239,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/E.html b/docs/games/E.html index 15680445..58009fc6 100644 --- a/docs/games/E.html +++ b/docs/games/E.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -598,7 +598,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/F.html b/docs/games/F.html index 5f756dcf..d09ca5ee 100644 --- a/docs/games/F.html +++ b/docs/games/F.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1204,7 +1204,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/G.html b/docs/games/G.html index ae177ea7..fc59eb02 100644 --- a/docs/games/G.html +++ b/docs/games/G.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -957,7 +957,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/H.html b/docs/games/H.html index 1bfdd596..1e55e53e 100644 --- a/docs/games/H.html +++ b/docs/games/H.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -634,7 +634,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/I.html b/docs/games/I.html index 5c0e9da1..dd8a2c9d 100644 --- a/docs/games/I.html +++ b/docs/games/I.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -470,7 +470,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/J.html b/docs/games/J.html index 606327eb..ca4d0f19 100644 --- a/docs/games/J.html +++ b/docs/games/J.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -354,7 +354,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/K.html b/docs/games/K.html index eb667d29..17829346 100644 --- a/docs/games/K.html +++ b/docs/games/K.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -438,7 +438,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/L.html b/docs/games/L.html index e4398549..b4cf9e0b 100644 --- a/docs/games/L.html +++ b/docs/games/L.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -725,7 +725,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/M.html b/docs/games/M.html index 6bd85b4d..924ae30a 100644 --- a/docs/games/M.html +++ b/docs/games/M.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1164,7 +1164,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/N.html b/docs/games/N.html index 48f00c77..38d45384 100644 --- a/docs/games/N.html +++ b/docs/games/N.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -548,7 +548,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/O.html b/docs/games/O.html index 4c3bc29a..da6b3cd2 100644 --- a/docs/games/O.html +++ b/docs/games/O.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1668,7 +1668,7 @@
music clone content open
-
+
Details
Code languages: C#
Code licenses: MIT
Code repositories: ppy/osu.git(since 2014, )
Code dependencies: .NET
Developers: (178)Adonais Romero González, Aergwyn, aitani9, Akash Mozumdar, Albert Tang, Albie, Alchyr, Alex Amadori, AlFas, alula, Andrei Zavatski, andy, anellie, Angela Zhang, apollo, BananeVolante, Bartłomiej Dach, Berkan Diler, BlauFx, Charlie, Christian Kamphausen, Christine Chen, ckie, clayton, Craftplacer, Damnae, Dan Balasescu, David Zhao, Dean Herbert, default0, Derrick Timmermans, Desconocidosmh, Dragicafit, Drew DeVault, Drezi126, DTSDAO, ekrctb, emu1337, Endrik, Fabian L, Fabian Lindgren, Fire937, Firmatorenio, frankhjwx, FreezyLemon, Fukashi13, Gabe Livengood, Gagah Pangeran Rosfatiputra, Ganendra Afrasya, Grrum, Hanamuke, Henry Lin, HoLLy, Huo Yaoyuan, ilsubyeega-desu, Ivan Pavluk, Jack Boswell, Jack Lee, Jack Scotson, JackLee9355, Jacob, Jacob Odgård Tørring, Jai Sharma, James58899, Jamie Taylor, Jan Jurzitza, Jarosław Zgierski, Jesse Myers, Jessica Meng, Jihoon, Jihoon Yang, JimmyC7834, John Neijzen, jorolf, Joseph Madamba, Joseph-Ramos-CMU, Justus Tumacder, jvyden, Kaleb, kamp, Keijia, Kelvin, KoziLord, kyekiller, Kyle Chang, Laica, LastExceed, Leon Gebler, Liam DeVoe, LiangXiang Shen, Lucas A., Maciej Sołtys, MafinBoy, Malox10, Marco Stephan, MATRIX-feather, Max, Max Hübner, MBmasher, McEndu, Mikal Stordal, MillhioreF, miterosan, Morguldir, Moritz Bender, n4b3l, Nabile Rahmani, Naeferith, naoey, Nathan Alo, Nathan Du, Naxess, nwabear, ocboogie, odgaard, Olle Kelderman, Opelkuh, Owen Young, Pasi4K5, Patrick Andersson, Paul Teng, PercyDan, phos, Piotrek Brzeziński, Poliwrath, Power Maker, Poyo, ProgrammaticNajel, ProTheory8, qwewqa, recapitalverb, RedMindZ, rednir, Remie Richards, RizonFTW, Robin Avery, Ron B, Ronnie Moir, RORIdev, roridev, Ryan Zmuda, Salman Ahmed, Samuel Cattini-Schultz, Samuel Huang, Santeri Nogelainen, Sebastian Krajewski, Seth, Shane Woolcock, Shawdooow, Shivam, StanR, su, Sunghwan Bang, Susko3, Swords, tgi, TheOmyNomy, ThePyrotechnic, Thomas Müller, Thomas Tan, Tim Nolte, Tim Oliver, Tom Arrow, TPGPL, Tyler, UselessToucan, Vidalee, Viktor Rosvall, Vincent Maggioli, VINXIS, Vladimir Pavlov, voidedWarranties, vperus, wildtree, Willy Tu, Xexxar, Yao Chung Hu, Инсур

Improve Raw entry @@ -1760,7 +1760,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/P.html b/docs/games/P.html index 1f3d2975..21153fbb 100644 --- a/docs/games/P.html +++ b/docs/games/P.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1237,7 +1237,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/Q.html b/docs/games/Q.html index 95432820..6b44b533 100644 --- a/docs/games/Q.html +++ b/docs/games/Q.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -167,7 +167,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/R.html b/docs/games/R.html index 36742b53..deb3815f 100644 --- a/docs/games/R.html +++ b/docs/games/R.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -949,7 +949,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/S.html b/docs/games/S.html index 03917f15..5a0c7c4a 100644 --- a/docs/games/S.html +++ b/docs/games/S.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -2011,7 +2011,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/T.html b/docs/games/T.html index 65f89603..eff3ee60 100644 --- a/docs/games/T.html +++ b/docs/games/T.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -1640,7 +1640,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/U.html b/docs/games/U.html index 50e3a399..f3db6bcb 100644 --- a/docs/games/U.html +++ b/docs/games/U.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -403,7 +403,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/V.html b/docs/games/V.html index ee29906c..4834248c 100644 --- a/docs/games/V.html +++ b/docs/games/V.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -441,7 +441,7 @@
platformremake content commercial + original required
-
+
Details
Code languages: ActionScript, C++
Code licenses: Custom
Code repositories: TerryCavanagh/vvvvvv.git(since 2015, )
Code dependencies: Adobe AIR, SDL2
Developers: (18)Allison Fleischer, Ally, Charlie, Daniel Lee, Dav999-v, ePirat, Ethan Lee, Fredrik Ljungdahl, leo60228, Matt Aaldenberg, Matt Penny, Misa, Misa Elizabeth Kai, Nichole Mattera, Reese Rivers, Rémi Verschelde, Terry Cavanagh, Tynan Richards

Improve Raw entry @@ -456,7 +456,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/W.html b/docs/games/W.html index d099df0c..db2ac42d 100644 --- a/docs/games/W.html +++ b/docs/games/W.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -569,7 +569,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/X.html b/docs/games/X.html index b76b4860..248a80ca 100644 --- a/docs/games/X.html +++ b/docs/games/X.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -459,7 +459,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/Y.html b/docs/games/Y.html index 2322f0d0..8b11a911 100644 --- a/docs/games/Y.html +++ b/docs/games/Y.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -133,7 +133,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/Z.html b/docs/games/Z.html index b18d6371..b1b98d25 100644 --- a/docs/games/Z.html +++ b/docs/games/Z.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -336,7 +336,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/genres.html b/docs/games/genres.html index f146c007..3e215031 100644 --- a/docs/games/genres.html +++ b/docs/games/genres.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Genres @@ -43,7 +43,7 @@
-

Open source games

Index by game genre

+

Open source games

Index by game genre (or see the table)

Action (266) Adventure (42) Arcade (157) @@ -1553,7 +1553,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/index.html b/docs/games/index.html index 8b9761f7..2d905593 100644 --- a/docs/games/index.html +++ b/docs/games/index.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Alphabetical @@ -43,7 +43,7 @@
-

Open source games

Alphabetical index of informations about 1342 games

+

Open source games

Alphabetical index of informations about 1342 games (or see the table)

A (65) B (73) C (97) @@ -1313,7 +1313,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/languages.html b/docs/games/languages.html index 23374e0f..9b7bdd8a 100644 --- a/docs/games/languages.html +++ b/docs/games/languages.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Programming language @@ -43,7 +43,7 @@
-

Open source games and frameworks

Index by programming language

+

Open source games and frameworks

Index by programming language (or see the table)

? (3) ActionScript (2) Ada (11) @@ -2205,7 +2205,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/platforms.html b/docs/games/platforms.html index cd786ac4..b25dc8ed 100644 --- a/docs/games/platforms.html +++ b/docs/games/platforms.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | Supported Platform @@ -43,7 +43,7 @@
-

Open source games and frameworks

Index by supported platform

+

Open source games and frameworks

Index by supported platform (or see the table)

Windows (531) Linux (504) macOS (297) @@ -1742,7 +1742,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/games/top50.html b/docs/games/top50.html index 9483fefb..1eb710d3 100644 --- a/docs/games/top50.html +++ b/docs/games/top50.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Games | GitHub Top 50 @@ -71,7 +71,7 @@
puzzle sliding blocks
-
Homepages: play2048.co, 2048
Play online: play2048.co
+
Homepage: play2048.co
Media: 2048
Play online: play2048.co
Details
Code languages: JavaScript, Java
Code licenses: MIT
Code repositories: gabrielecirulli/2048.git(since 2014, ), tpcstld/2048.git @add(since 2014, )
Assets licenses: MIT
Build system: Rake
Developers: Gabriele Cirulli, Jerry Jiang, Laurent, Lee Reilly, Paul Woitaschek, sigod, Tim Petricola
@@ -143,7 +143,7 @@
adventurerole playing multiplayer online + massive
-
+
Details
Code languages: JavaScript
Code licenses: MPL-2.0
Code repositories: mozilla/BrowserQuest.git(since 2011, )
Developers: Franck Lecollinet, Guillaume Lecollinet, Myles Recny
Improve Raw entry @@ -160,7 +160,7 @@
actionremake content commercial + original required (Diablo 1) engine recreation
-
Homepage: diasurgical/devilution
Inspiration: Diablo
+
Homepage: diasurgical/devilution
Inspiration: Diablo
Improve @@ -177,7 +177,7 @@
music clone content open
-
+
Details
Code languages: C#
Code licenses: MIT
Code repositories: ppy/osu.git(since 2014, )
Code dependencies: .NET
Developers: (178)Adonais Romero González, Aergwyn, aitani9, Akash Mozumdar, Albert Tang, Albie, Alchyr, Alex Amadori, AlFas, alula, Andrei Zavatski, andy, anellie, Angela Zhang, apollo, BananeVolante, Bartłomiej Dach, Berkan Diler, BlauFx, Charlie, Christian Kamphausen, Christine Chen, ckie, clayton, Craftplacer, Damnae, Dan Balasescu, David Zhao, Dean Herbert, default0, Derrick Timmermans, Desconocidosmh, Dragicafit, Drew DeVault, Drezi126, DTSDAO, ekrctb, emu1337, Endrik, Fabian L, Fabian Lindgren, Fire937, Firmatorenio, frankhjwx, FreezyLemon, Fukashi13, Gabe Livengood, Gagah Pangeran Rosfatiputra, Ganendra Afrasya, Grrum, Hanamuke, Henry Lin, HoLLy, Huo Yaoyuan, ilsubyeega-desu, Ivan Pavluk, Jack Boswell, Jack Lee, Jack Scotson, JackLee9355, Jacob, Jacob Odgård Tørring, Jai Sharma, James58899, Jamie Taylor, Jan Jurzitza, Jarosław Zgierski, Jesse Myers, Jessica Meng, Jihoon, Jihoon Yang, JimmyC7834, John Neijzen, jorolf, Joseph Madamba, Joseph-Ramos-CMU, Justus Tumacder, jvyden, Kaleb, kamp, Keijia, Kelvin, KoziLord, kyekiller, Kyle Chang, Laica, LastExceed, Leon Gebler, Liam DeVoe, LiangXiang Shen, Lucas A., Maciej Sołtys, MafinBoy, Malox10, Marco Stephan, MATRIX-feather, Max, Max Hübner, MBmasher, McEndu, Mikal Stordal, MillhioreF, miterosan, Morguldir, Moritz Bender, n4b3l, Nabile Rahmani, Naeferith, naoey, Nathan Alo, Nathan Du, Naxess, nwabear, ocboogie, odgaard, Olle Kelderman, Opelkuh, Owen Young, Pasi4K5, Patrick Andersson, Paul Teng, PercyDan, phos, Piotrek Brzeziński, Poliwrath, Power Maker, Poyo, ProgrammaticNajel, ProTheory8, qwewqa, recapitalverb, RedMindZ, rednir, Remie Richards, RizonFTW, Robin Avery, Ron B, Ronnie Moir, RORIdev, roridev, Ryan Zmuda, Salman Ahmed, Samuel Cattini-Schultz, Samuel Huang, Santeri Nogelainen, Sebastian Krajewski, Seth, Shane Woolcock, Shawdooow, Shivam, StanR, su, Sunghwan Bang, Susko3, Swords, tgi, TheOmyNomy, ThePyrotechnic, Thomas Müller, Thomas Tan, Tim Nolte, Tim Oliver, Tom Arrow, TPGPL, Tyler, UselessToucan, Vidalee, Viktor Rosvall, Vincent Maggioli, VINXIS, Vladimir Pavlov, voidedWarranties, vperus, wildtree, Willy Tu, Xexxar, Yao Chung Hu, Инсур

Improve Raw entry @@ -193,7 +193,7 @@
simulation clone content open
-
+
Details
Code languages: Rust, JavaScript
Code licenses: AGPL-3.0
Code repositories: citybound/citybound.git(since 2016, )
Developers: Anselm Eickhoff, Ben Wang, Martin Risell Lilja, O01eg, Rasmus Larsen, Vladimir
Improve Raw entry @@ -209,7 +209,7 @@
platformremake content commercial + original required
-
+
Details
Code languages: ActionScript, C++
Code licenses: Custom
Code repositories: TerryCavanagh/vvvvvv.git(since 2015, )
Code dependencies: Adobe AIR, SDL2
Developers: (18)Allison Fleischer, Ally, Charlie, Daniel Lee, Dav999-v, ePirat, Ethan Lee, Fredrik Ljungdahl, leo60228, Matt Aaldenberg, Matt Penny, Misa, Misa Elizabeth Kai, Nichole Mattera, Reese Rivers, Rémi Verschelde, Terry Cavanagh, Tynan Richards

Improve Raw entry @@ -905,7 +905,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 6c1c92f1..3f958d90 100644 --- a/docs/index.html +++ b/docs/index.html @@ -45,7 +45,7 @@

Open source games list (OSGL)

-

Contains information about 1342 open source games and 307 frameworks/tools.

+

Contains information about 1342 open source games and 307 game engines/tools.

The content of this site is based on a collection of open source game descriptions stored on Github. The descriptions concentrate on technical and general aspects of the games. Lots of sorting options are available and a list of inspirations and developers is cross-referenced. This work is a best-effort based result and will surely contain inaccurate information.
@@ -64,7 +64,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/0.html b/docs/inspirations/0.html index 8078df8c..60d1c231 100644 --- a/docs/inspirations/0.html +++ b/docs/inspirations/0.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -63,7 +63,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/A.html b/docs/inspirations/A.html index cd9062dd..ec427558 100644 --- a/docs/inspirations/A.html +++ b/docs/inspirations/A.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -285,7 +285,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/B.html b/docs/inspirations/B.html index a3581ad3..25336aad 100644 --- a/docs/inspirations/B.html +++ b/docs/inspirations/B.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -285,7 +285,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/C.html b/docs/inspirations/C.html index aeec7ea6..901a7c57 100644 --- a/docs/inspirations/C.html +++ b/docs/inspirations/C.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -375,7 +375,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/D.html b/docs/inspirations/D.html index f7fd2dbf..65c855f4 100644 --- a/docs/inspirations/D.html +++ b/docs/inspirations/D.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -279,7 +279,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/E.html b/docs/inspirations/E.html index f493ff09..a85f5d78 100644 --- a/docs/inspirations/E.html +++ b/docs/inspirations/E.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -159,7 +159,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/F.html b/docs/inspirations/F.html index 8cb20a1f..e68e1711 100644 --- a/docs/inspirations/F.html +++ b/docs/inspirations/F.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -237,7 +237,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/G.html b/docs/inspirations/G.html index 281e0ea2..848fd39d 100644 --- a/docs/inspirations/G.html +++ b/docs/inspirations/G.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -177,7 +177,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/H.html b/docs/inspirations/H.html index 3fc22be4..5a7bc3b7 100644 --- a/docs/inspirations/H.html +++ b/docs/inspirations/H.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -135,7 +135,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/I.html b/docs/inspirations/I.html index 588e8071..47a8a839 100644 --- a/docs/inspirations/I.html +++ b/docs/inspirations/I.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -99,7 +99,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/J.html b/docs/inspirations/J.html index c28c2623..575d068c 100644 --- a/docs/inspirations/J.html +++ b/docs/inspirations/J.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -111,7 +111,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/K.html b/docs/inspirations/K.html index 64fe5afa..973905fc 100644 --- a/docs/inspirations/K.html +++ b/docs/inspirations/K.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -123,7 +123,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/L.html b/docs/inspirations/L.html index c4892592..54244a3b 100644 --- a/docs/inspirations/L.html +++ b/docs/inspirations/L.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -195,7 +195,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/M.html b/docs/inspirations/M.html index 90552280..bc6eaa4d 100644 --- a/docs/inspirations/M.html +++ b/docs/inspirations/M.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -375,7 +375,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/N.html b/docs/inspirations/N.html index 6ebb800a..5404f429 100644 --- a/docs/inspirations/N.html +++ b/docs/inspirations/N.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -135,7 +135,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/O.html b/docs/inspirations/O.html index 621a9cb2..f785b2f7 100644 --- a/docs/inspirations/O.html +++ b/docs/inspirations/O.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -135,7 +135,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/P.html b/docs/inspirations/P.html index 315e96a8..86eea9d6 100644 --- a/docs/inspirations/P.html +++ b/docs/inspirations/P.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -219,7 +219,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/Q.html b/docs/inspirations/Q.html index efbf08f9..53b64014 100644 --- a/docs/inspirations/Q.html +++ b/docs/inspirations/Q.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -81,7 +81,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/R.html b/docs/inspirations/R.html index 39db913d..c138651f 100644 --- a/docs/inspirations/R.html +++ b/docs/inspirations/R.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -183,7 +183,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/S.html b/docs/inspirations/S.html index a6e2c4e1..6157bd69 100644 --- a/docs/inspirations/S.html +++ b/docs/inspirations/S.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -657,7 +657,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/T.html b/docs/inspirations/T.html index 9800fb18..043c10c8 100644 --- a/docs/inspirations/T.html +++ b/docs/inspirations/T.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -393,7 +393,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/U.html b/docs/inspirations/U.html index 7e9a6bbf..c608f26b 100644 --- a/docs/inspirations/U.html +++ b/docs/inspirations/U.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -159,7 +159,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/V.html b/docs/inspirations/V.html index 2026c070..dbbe52cd 100644 --- a/docs/inspirations/V.html +++ b/docs/inspirations/V.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -93,7 +93,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/W.html b/docs/inspirations/W.html index e54a1a68..ffb856ce 100644 --- a/docs/inspirations/W.html +++ b/docs/inspirations/W.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -207,7 +207,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/X.html b/docs/inspirations/X.html index 5b0acd4d..373422a1 100644 --- a/docs/inspirations/X.html +++ b/docs/inspirations/X.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -117,7 +117,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/Y.html b/docs/inspirations/Y.html index 62a7d085..9b6ad1ab 100644 --- a/docs/inspirations/Y.html +++ b/docs/inspirations/Y.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -69,7 +69,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/Z.html b/docs/inspirations/Z.html index 57e3b638..3c073e9e 100644 --- a/docs/inspirations/Z.html +++ b/docs/inspirations/Z.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -81,7 +81,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/inspirations/index.html b/docs/inspirations/index.html index 21cb5616..a75d91dc 100644 --- a/docs/inspirations/index.html +++ b/docs/inspirations/index.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Inspirational games @@ -577,7 +577,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/js/simple-datatables.js b/docs/js/simple-datatables.js new file mode 100644 index 00000000..71cbe8b8 --- /dev/null +++ b/docs/js/simple-datatables.js @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.7.1. + * Original file: /npm/simple-datatables@3.1.2/dist/umd/simple-datatables.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).simpleDatatables=t()}}((function(){return function t(e,s,i){function a(r,o){if(!s[r]){if(!e[r]){var h="function"==typeof require&&require;if(!o&&h)return h(r,!0);if(n)return n(r,!0);var l=new Error("Cannot find module '"+r+"'");throw l.code="MODULE_NOT_FOUND",l}var d=s[r]={exports:{}};e[r][0].call(d.exports,(function(t){return a(e[r][1][t]||t)}),d,d.exports,t,e,s,i)}return s[r].exports}for(var n="function"==typeof require&&require,r=0;r=e?t:""+Array(e+1-i.length).join(s)+t},b={s:m,z:function(t){var e=-t.utcOffset(),s=Math.abs(e),i=Math.floor(s/60),a=s%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(a,2,"0")},m:function t(e,s){if(e.date()68?1900:2e3)},o=function(t){return function(e){this[t]=+e}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),s=60*e[1]+(+e[2]||0);return 0===s?0:"+"===e[0]?-s:s}(t)}],l=function(t){var e=n[t];return e&&(e.indexOf?e:e.s.concat(e.f))},d=function(t,e){var s,i=n.meridiem;if(i){for(var a=1;a<=24;a+=1)if(t.indexOf(i(a,0,e))>-1){s=a>12;break}}else s=t===(e?"pm":"PM");return s},c={A:[a,function(t){this.afternoon=d(t,!1)}],a:[a,function(t){this.afternoon=d(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[s,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,o("seconds")],ss:[i,o("seconds")],m:[i,o("minutes")],mm:[i,o("minutes")],H:[i,o("hours")],h:[i,o("hours")],HH:[i,o("hours")],hh:[i,o("hours")],D:[i,o("day")],DD:[s,o("day")],Do:[a,function(t){var e=n.ordinal,s=t.match(/\d+/);if(this.day=s[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],M:[i,o("month")],MM:[s,o("month")],MMM:[a,function(t){var e=l("months"),s=(l("monthsShort")||e.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(s<1)throw new Error;this.month=s%12||s}],MMMM:[a,function(t){var e=l("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,o("year")],YY:[s,function(t){this.year=r(t)}],YYYY:[/\d{4}/,o("year")],Z:h,ZZ:h};function u(s){var i,a;i=s,a=n&&n.formats;for(var r=(s=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,s,i){var n=i&&i.toUpperCase();return s||a[i]||t[i]||a[n].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,s){return e||s.slice(1)}))}))).match(e),o=r.length,h=0;h-1)return new Date(("X"===e?1e3:1)*t);var i=u(e)(t),a=i.year,n=i.month,r=i.day,o=i.hours,h=i.minutes,l=i.seconds,d=i.milliseconds,c=i.zone,p=new Date,f=r||(a||n?1:p.getDate()),g=a||p.getFullYear(),m=0;a&&!n||(m=n>0?n-1:p.getMonth());var b=o||0,y=h||0,v=l||0,w=d||0;return c?new Date(Date.UTC(g,m,f,b,y,v,w+60*c.offset*1e3)):s?new Date(Date.UTC(g,m,f,b,y,v,w)):new Date(g,m,f,b,y,v,w)}catch(t){return new Date("")}}(e,o,i),this.init(),c&&!0!==c&&(this.$L=this.locale(c).$L),d&&e!==this.format(o)&&(this.$d=new Date("")),n={}}else if(o instanceof Array)for(var p=o.length,f=1;f<=p;f+=1){r[1]=o[f-1];var g=s.apply(this,r);if(g.isValid()){this.$d=g.$d,this.$L=g.$L,this.init();break}f===p&&(this.$d=new Date(""))}else a.call(this,t)}}}()}));i.extend(a),s.parseDate=(t,e)=>{let s=!1;if(e)switch(e){case"ISO_8601":s=t;break;case"RFC_2822":s=i(t.slice(5),"DD MMM YYYY HH:mm:ss ZZ").unix();break;case"MYSQL":s=i(t,"YYYY-MM-DD hh:mm:ss").unix();break;case"UNIX":s=i(t).unix();break;default:s=i(t,e).valueOf()}return s}}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(t,e,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const i=t=>"[object Object]"===Object.prototype.toString.call(t),a=(t,e)=>{const s=document.createElement(t);if(e&&"object"==typeof e)for(const t in e)"html"===t?s.innerHTML=e[t]:s.setAttribute(t,e[t]);return s},n=t=>{t instanceof NodeList?t.forEach((t=>n(t))):t.innerHTML=""},r=(t,e,s)=>a("li",{class:t,html:`${s}`}),o=(t,e)=>{let s,i;1===e?(s=0,i=t.length):-1===e&&(s=t.length-1,i=-1);for(let a=!0;a;){a=!1;for(let n=s;n!=i;n+=e)if(t[n+e]&&t[n].value>t[n+e].value){const s=t[n],i=t[n+e],r=s;t[n]=i,t[n+e]=r,a=!0}}return t};class h{constructor(t,e){return this.dt=t,this.rows=e,this}build(t){const e=a("tr");let s=this.dt.headings;return s.length||(s=t.map((()=>""))),s.forEach(((s,i)=>{const n=a("td");t[i]&&t[i].length||(t[i]=""),n.innerHTML=t[i],n.data=t[i],e.appendChild(n)})),e}render(t){return t}add(t){if(Array.isArray(t)){const e=this.dt;Array.isArray(t[0])?t.forEach((t=>{e.data.push(this.build(t))})):e.data.push(this.build(t)),e.data.length&&(e.hasRows=!0),this.update(),e.columns().rebuild()}}remove(t){const e=this.dt;Array.isArray(t)?(t.sort(((t,e)=>e-t)),t.forEach((t=>{e.data.splice(t,1)}))):"all"==t?e.data=[]:e.data.splice(t,1),e.data.length||(e.hasRows=!1),this.update(),e.columns().rebuild()}update(){this.dt.data.forEach(((t,e)=>{t.dataIndex=e}))}}class l{constructor(t){return this.dt=t,this}swap(t){if(t.length&&2===t.length){const e=[];this.dt.headings.forEach(((t,s)=>{e.push(s)}));const s=t[0],i=t[1],a=e[i];e[i]=e[s],e[s]=a,this.order(e)}}order(t){let e,s,i,a,n,r,o;const h=[[],[],[],[]],l=this.dt;t.forEach(((t,i)=>{n=l.headings[t],r="false"!==n.getAttribute("data-sortable"),e=n.cloneNode(!0),e.originalCellIndex=i,e.sortable=r,h[0].push(e),l.hiddenColumns.includes(t)||(s=n.cloneNode(!0),s.originalCellIndex=i,s.sortable=r,h[1].push(s))})),l.data.forEach(((e,s)=>{i=e.cloneNode(!1),a=e.cloneNode(!1),i.dataIndex=a.dataIndex=s,null!==e.searchIndex&&void 0!==e.searchIndex&&(i.searchIndex=a.searchIndex=e.searchIndex),t.forEach((t=>{o=e.cells[t].cloneNode(!0),o.data=e.cells[t].data,i.appendChild(o),l.hiddenColumns.includes(t)||(o=e.cells[t].cloneNode(!0),o.data=e.cells[t].data,a.appendChild(o))})),h[2].push(i),h[3].push(a)})),l.headings=h[0],l.activeHeadings=h[1],l.data=h[2],l.activeRows=h[3],l.update()}hide(t){if(t.length){const e=this.dt;t.forEach((t=>{e.hiddenColumns.includes(t)||e.hiddenColumns.push(t)})),this.rebuild()}}show(t){if(t.length){let e;const s=this.dt;t.forEach((t=>{e=s.hiddenColumns.indexOf(t),e>-1&&s.hiddenColumns.splice(e,1)})),this.rebuild()}}visible(t){let e;const s=this.dt;return t=t||s.headings.map((t=>t.originalCellIndex)),isNaN(t)?Array.isArray(t)&&(e=[],t.forEach((t=>{e.push(!s.hiddenColumns.includes(t))}))):e=!s.hiddenColumns.includes(t),e}add(t){let e;const s=document.createElement("th");if(!this.dt.headings.length)return this.dt.insert({headings:[t.heading],data:t.data.map((t=>[t]))}),void this.rebuild();this.dt.hiddenHeader?s.innerHTML="":t.heading.nodeName?s.appendChild(t.heading):s.innerHTML=t.heading,this.dt.headings.push(s),this.dt.data.forEach(((s,i)=>{t.data[i]&&(e=document.createElement("td"),t.data[i].nodeName?e.appendChild(t.data[i]):e.innerHTML=t.data[i],e.data=e.innerHTML,t.render&&(e.innerHTML=t.render.call(this,e.data,e,s)),s.appendChild(e))})),t.type&&s.setAttribute("data-type",t.type),t.format&&s.setAttribute("data-format",t.format),t.hasOwnProperty("sortable")&&(s.sortable=t.sortable,s.setAttribute("data-sortable",!0===t.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()}remove(t){Array.isArray(t)?(t.sort(((t,e)=>e-t)),t.forEach((t=>this.remove(t)))):(this.dt.headings.splice(t,1),this.dt.data.forEach((e=>{e.removeChild(e.cells[t])}))),this.rebuild()}filter(t,e,s,i){const a=this.dt;if(a.filterState||(a.filterState={originalData:a.data}),!a.filterState[t]){const e=[...i,()=>!0];a.filterState[t]=function(){let t=0;return()=>e[t++%e.length]}()}const n=a.filterState[t](),r=Array.from(a.filterState.originalData).filter((e=>{const s=e.cells[t],i=s.hasAttribute("data-content")?s.getAttribute("data-content"):s.innerText;return"function"==typeof n?n(i):i===n}));a.data=r,a.data.length?(this.rebuild(),a.update()):(a.clear(),a.setMessage(a.options.labels.noRows)),s||a.emit("datatable.sort",t,e)}sort(e,s,i){const a=this.dt;if(a.hasHeadings&&(e<0||e>a.headings.length))return!1;const n=a.options.filters&&a.options.filters[a.headings[e].textContent];if(n&&0!==n.length)return void this.filter(e,s,i,n);a.sorting=!0,i||a.emit("datatable.sorting",e,s);let r=a.data;const h=[],l=[];let d=0,c=0;const u=a.headings[e],p=[];if("date"===u.getAttribute("data-type")){let e=!1;u.hasAttribute("data-format")&&(e=u.getAttribute("data-format")),p.push(Promise.resolve().then((function(){return t("./date-ee454f51.js")})).then((({parseDate:t})=>s=>t(s,e))))}Promise.all(p).then((t=>{const n=t[0];let p,f;Array.from(r).forEach((t=>{const s=t.cells[e],i=s.hasAttribute("data-content")?s.getAttribute("data-content"):s.innerText;let a;a=n?n(i):"string"==typeof i?i.replace(/(\$|,|\s|%)/g,""):i,parseFloat(a)==a?l[c++]={value:Number(a),row:t}:h[d++]={value:"string"==typeof i?i.toLowerCase():i,row:t}})),s||(s=u.classList.contains("asc")?"desc":"asc"),"desc"==s?(p=o(h,-1),f=o(l,-1),u.classList.remove("asc"),u.classList.add("desc")):(p=o(l,1),f=o(h,1),u.classList.remove("desc"),u.classList.add("asc")),a.lastTh&&u!=a.lastTh&&(a.lastTh.classList.remove("desc"),a.lastTh.classList.remove("asc")),a.lastTh=u,r=p.concat(f),a.data=[];const g=[];r.forEach(((t,e)=>{a.data.push(t.row),null!==t.row.searchIndex&&void 0!==t.row.searchIndex&&g.push(e)})),a.searchData=g,this.rebuild(),a.update(),i||a.emit("datatable.sort",e,s)}))}rebuild(){let t,e,s,i;const a=this.dt,n=[];a.activeRows=[],a.activeHeadings=[],a.headings.forEach(((t,e)=>{t.originalCellIndex=e,t.sortable="false"!==t.getAttribute("data-sortable"),a.hiddenColumns.includes(e)||a.activeHeadings.push(t)})),a.data.forEach(((r,o)=>{t=r.cloneNode(!1),e=r.cloneNode(!1),t.dataIndex=e.dataIndex=o,null!==r.searchIndex&&void 0!==r.searchIndex&&(t.searchIndex=e.searchIndex=r.searchIndex),Array.from(r.cells).forEach((n=>{s=n.cloneNode(!0),s.data=n.data,t.appendChild(s),a.hiddenColumns.includes(s.cellIndex)||(i=s.cloneNode(!0),i.data=s.data,e.appendChild(i))})),n.push(t),a.activeRows.push(e)})),a.data=n,a.update()}}const d=function(t){let e=!1,s=!1;if((t=t||this.options.data).headings){e=a("thead");const s=a("tr");t.headings.forEach((t=>{const e=a("th",{html:t});s.appendChild(e)})),e.appendChild(s)}t.data&&t.data.length&&(s=a("tbody"),t.data.forEach((e=>{if(t.headings&&t.headings.length!==e.length)throw new Error("The number of rows do not match the number of headings.");const i=a("tr");e.forEach((t=>{const e=a("td",{html:t});i.appendChild(e)})),s.appendChild(i)}))),e&&(null!==this.dom.tHead&&this.dom.removeChild(this.dom.tHead),this.dom.appendChild(e)),s&&(this.dom.tBodies.length&&this.dom.removeChild(this.dom.tBodies[0]),this.dom.appendChild(s))},c={sortable:!0,searchable:!0,paging:!0,perPage:10,perPageSelect:[5,10,15,20,25],nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",ascText:"▴",descText:"▾",truncatePager:!0,pagerDelta:2,scrollY:"",fixedColumns:!0,fixedHeight:!1,header:!0,hiddenHeader:!1,footer:!1,labels:{placeholder:"Search...",perPage:"{select} entries per page",noRows:"No entries found",info:"Showing {start} to {end} of {rows} entries"},layout:{top:"{select}{search}",bottom:"{info}{pager}"}};class u{constructor(t,e={}){const s="string"==typeof t?document.querySelector(t):t;if(this.options={...c,...e,layout:{...c.layout,...e.layout},labels:{...c.labels,...e.labels}},this.initialized=!1,this.initialLayout=s.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null===s.tHead&&(!this.options.data||this.options.data&&!this.options.data.headings)&&(this.options.sortable=!1),s.tBodies.length&&!s.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.dom=s,this.table=this.dom,this.listeners={onResize:t=>this.onResize(t)},this.init()}static extend(t,e){"function"==typeof e?u.prototype[t]=e:u[t]=e}init(t){if(this.initialized||this.dom.classList.contains("dataTable-table"))return!1;Object.assign(this.options,t||{}),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout((()=>{this.emit("datatable.init"),this.initialized=!0,this.options.plugins&&Object.entries(this.options.plugins).forEach((([t,e])=>{this[t]&&"function"==typeof this[t]&&(this[t]=this[t](e,{createElement:a}),e.enabled&&this[t].init&&"function"==typeof this[t].init&&this[t].init())}))}),10)}render(t){if(t){switch(t){case"page":this.renderPage();break;case"pager":this.renderPager();break;case"header":this.renderHeader()}return!1}const e=this.options;let s="";if(e.data&&d.call(this),this.body=this.dom.tBodies[0],this.head=this.dom.tHead,this.foot=this.dom.tFoot,this.body||(this.body=a("tbody"),this.dom.appendChild(this.body)),this.hasRows=this.body.rows.length>0,!this.head){const t=a("thead"),s=a("tr");this.hasRows&&(Array.from(this.body.rows[0].cells).forEach((()=>{s.appendChild(a("th"))})),t.appendChild(s)),this.head=t,this.dom.insertBefore(this.head,this.body),this.hiddenHeader=e.hiddenHeader}if(this.headings=[],this.hasHeadings=this.head.rows.length>0,this.hasHeadings&&(this.header=this.head.rows[0],this.headings=[].slice.call(this.header.cells)),e.header||this.head&&this.dom.removeChild(this.dom.tHead),e.footer?this.head&&!this.foot&&(this.foot=a("tfoot",{html:this.head.innerHTML}),this.dom.appendChild(this.foot)):this.foot&&this.dom.removeChild(this.dom.tFoot),this.wrapper=a("div",{class:"dataTable-wrapper dataTable-loading"}),s+="
",s+=e.layout.top,s+="
",e.scrollY.length?s+=`
`:s+="
",s+="
",s+=e.layout.bottom,s+="
",s=s.replace("{info}",e.paging?"
":""),e.paging&&e.perPageSelect){let t="
";const i=a("select",{class:"dataTable-selector"});e.perPageSelect.forEach((t=>{const s=t===e.perPage,a=new Option(t,t,s,s);i.add(a)})),t=t.replace("{select}",i.outerHTML),s=s.replace("{select}",t)}else s=s.replace("{select}","");if(e.searchable){const t=``;s=s.replace("{search}",t)}else s=s.replace("{search}","");this.hasHeadings&&this.render("header"),this.dom.classList.add("dataTable-table");const i=a("nav",{class:"dataTable-pagination"}),n=a("ul",{class:"dataTable-pagination-list"});i.appendChild(n),s=s.replace(/\{pager\}/g,i.outerHTML),this.wrapper.innerHTML=s,this.container=this.wrapper.querySelector(".dataTable-container"),this.pagers=this.wrapper.querySelectorAll(".dataTable-pagination-list"),this.label=this.wrapper.querySelector(".dataTable-info"),this.dom.parentNode.replaceChild(this.wrapper,this.dom),this.container.appendChild(this.dom),this.rect=this.dom.getBoundingClientRect(),this.data=Array.from(this.body.rows),this.activeRows=this.data.slice(),this.activeHeadings=this.headings.slice(),this.update(),this.setColumns(),this.fixHeight(),this.fixColumns(),e.header||this.wrapper.classList.add("no-header"),e.footer||this.wrapper.classList.add("no-footer"),e.sortable&&this.wrapper.classList.add("sortable"),e.searchable&&this.wrapper.classList.add("searchable"),e.fixedHeight&&this.wrapper.classList.add("fixed-height"),e.fixedColumns&&this.wrapper.classList.add("fixed-columns"),this.bindEvents()}renderPage(){if(this.hasHeadings&&(n(this.header),this.activeHeadings.forEach((t=>this.header.appendChild(t)))),this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);const t=this.currentPage-1,e=document.createDocumentFragment();this.pages[t].forEach((t=>e.appendChild(this.rows().render(t)))),this.clear(e),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.setMessage(this.options.labels.noRows);let t,e=0,s=0,i=0;if(this.totalPages&&(e=this.currentPage-1,s=e*this.options.perPage,i=s+this.pages[e].length,s+=1,t=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){const e=this.options.labels.info.replace("{start}",s).replace("{end}",i).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",t);this.label.innerHTML=t?e:""}1==this.currentPage&&this.fixHeight()}renderPager(){if(n(this.pagers),this.totalPages>1){const t="pager",e=document.createDocumentFragment(),s=this.onFirstPage?1:this.currentPage-1,i=this.onLastPage?this.totalPages:this.currentPage+1;this.options.firstLast&&e.appendChild(r(t,1,this.options.firstText)),this.options.nextPrev&&!this.onFirstPage&&e.appendChild(r(t,s,this.options.prevText));let n=this.links;this.options.truncatePager&&(n=((t,e,s,i,n)=>{let r;const o=2*(i=i||2);let h=e-i,l=e+i;const d=[],c=[];e<4-i+o?l=3+o:e>s-(3-i+o)&&(h=s-(2+o));for(let e=1;e<=s;e++)if(1==e||e==s||e>=h&&e<=l){const s=t[e-1];s.classList.remove("active"),d.push(s)}return d.forEach((e=>{const s=e.children[0].getAttribute("data-page");if(r){const e=r.children[0].getAttribute("data-page");if(s-e==2)c.push(t[e]);else if(s-e!=1){const t=a("li",{class:"ellipsis",html:`${n}`});c.push(t)}}c.push(e),r=e})),c})(this.links,this.currentPage,this.pages.length,this.options.pagerDelta,this.options.ellipsisText)),this.links[this.currentPage-1].classList.add("active"),n.forEach((t=>{t.classList.remove("active"),e.appendChild(t)})),this.links[this.currentPage-1].classList.add("active"),this.options.nextPrev&&!this.onLastPage&&e.appendChild(r(t,i,this.options.nextText)),this.options.firstLast&&e.appendChild(r(t,this.totalPages,this.options.lastText)),this.pagers.forEach((t=>{t.appendChild(e.cloneNode(!0))}))}}renderHeader(){this.labels=[],this.headings&&this.headings.length&&this.headings.forEach(((t,e)=>{if(this.labels[e]=t.textContent,t.firstElementChild&&t.firstElementChild.classList.contains("dataTable-sorter")&&(t.innerHTML=t.firstElementChild.innerHTML),t.sortable="false"!==t.getAttribute("data-sortable"),t.originalCellIndex=e,this.options.sortable&&t.sortable){const e=a("a",{href:"#",class:"dataTable-sorter",html:t.innerHTML});t.innerHTML="",t.setAttribute("data-sortable",""),t.appendChild(e)}})),this.fixColumns()}bindEvents(){const t=this.options;if(t.perPageSelect){const e=this.wrapper.querySelector(".dataTable-selector");e&&e.addEventListener("change",(()=>{t.perPage=parseInt(e.value,10),this.update(),this.fixHeight(),this.emit("datatable.perpage",t.perPage)}),!1)}t.searchable&&(this.input=this.wrapper.querySelector(".dataTable-input"),this.input&&this.input.addEventListener("keyup",(()=>this.search(this.input.value)),!1)),this.wrapper.addEventListener("click",(e=>{const s=e.target.closest("a");s&&"a"===s.nodeName.toLowerCase()&&(s.hasAttribute("data-page")?(this.page(s.getAttribute("data-page")),e.preventDefault()):t.sortable&&s.classList.contains("dataTable-sorter")&&"false"!=s.parentNode.getAttribute("data-sortable")&&(this.columns().sort(this.headings.indexOf(s.parentNode)),e.preventDefault()))}),!1),window.addEventListener("resize",this.listeners.onResize)}onResize(){this.rect=this.container.getBoundingClientRect(),this.rect.width&&this.fixColumns()}setColumns(t){t||this.data.forEach((t=>{Array.from(t.cells).forEach((t=>{t.data=t.innerHTML}))})),this.options.columns&&this.headings.length&&this.options.columns.forEach((t=>{Array.isArray(t.select)||(t.select=[t.select]),t.hasOwnProperty("render")&&"function"==typeof t.render&&(this.selectedColumns=this.selectedColumns.concat(t.select),this.columnRenderers.push({columns:t.select,renderer:t.render})),t.select.forEach((e=>{const s=this.headings[e];t.type&&s.setAttribute("data-type",t.type),t.format&&s.setAttribute("data-format",t.format),t.hasOwnProperty("sortable")&&s.setAttribute("data-sortable",t.sortable),t.hasOwnProperty("hidden")&&!1!==t.hidden&&this.columns().hide([e]),t.hasOwnProperty("sort")&&1===t.select.length&&this.columns().sort(t.select[0],t.sort,!0)}))})),this.hasRows&&(this.data.forEach(((t,e)=>{t.dataIndex=e,Array.from(t.cells).forEach((t=>{t.data=t.innerHTML}))})),this.selectedColumns.length&&this.data.forEach((t=>{Array.from(t.cells).forEach(((e,s)=>{this.selectedColumns.includes(s)&&this.columnRenderers.forEach((i=>{i.columns.includes(s)&&(e.innerHTML=i.renderer.call(this,e.data,e,t))}))}))})),this.columns().rebuild()),this.render("header")}destroy(){this.dom.innerHTML=this.initialLayout,this.dom.classList.remove("dataTable-table"),this.wrapper.parentNode.replaceChild(this.dom,this.wrapper),this.initialized=!1,window.removeEventListener("resize",this.listeners.onResize)}update(){this.wrapper.classList.remove("dataTable-empty"),this.paginate(this),this.render("page"),this.links=[];let t=this.pages.length;for(;t--;){const e=t+1;this.links[t]=r(0===t?"active":"",e,e)}this.sorting=!1,this.render("pager"),this.rows().update(),this.emit("datatable.update")}paginate(){const t=this.options.perPage;let e=this.activeRows;return this.searching&&(e=[],this.searchData.forEach((t=>e.push(this.activeRows[t])))),this.options.paging?this.pages=e.map(((s,i)=>i%t==0?e.slice(i,i+t):null)).filter((t=>t)):this.pages=[e],this.totalPages=this.lastPage=this.pages.length,this.totalPages}fixColumns(){if((this.options.scrollY.length||this.options.fixedColumns)&&this.activeHeadings&&this.activeHeadings.length){let t,e=!1;if(this.columnWidths=[],this.dom.tHead){if(this.options.scrollY.length&&(e=a("thead"),e.appendChild(a("tr")),e.style.height="0px",this.headerTable&&(this.dom.tHead=this.headerTable.tHead)),this.activeHeadings.forEach((t=>{t.style.width=""})),this.activeHeadings.forEach(((t,s)=>{const i=t.offsetWidth,n=i/this.rect.width*100;if(t.style.width=`${n}%`,this.columnWidths[s]=i,this.options.scrollY.length){const t=a("th");e.firstElementChild.appendChild(t),t.style.width=`${n}%`,t.style.paddingTop="0",t.style.paddingBottom="0",t.style.border="0"}})),this.options.scrollY.length){const t=this.dom.parentElement;if(!this.headerTable){this.headerTable=a("table",{class:"dataTable-table"});const e=a("div",{class:"dataTable-headercontainer"});e.appendChild(this.headerTable),t.parentElement.insertBefore(e,t)}const s=this.dom.tHead;this.dom.replaceChild(e,s),this.headerTable.tHead=s,this.headerTable.parentElement.style.paddingRight=`${this.headerTable.clientWidth-this.dom.clientWidth+parseInt(this.headerTable.parentElement.style.paddingRight||"0",10)}px`,t.scrollHeight>t.clientHeight&&(t.style.overflowY="scroll")}}else{t=[],e=a("thead");const s=a("tr");Array.from(this.dom.tBodies[0].rows[0].cells).forEach((()=>{const e=a("th");s.appendChild(e),t.push(e)})),e.appendChild(s),this.dom.insertBefore(e,this.body);const i=[];t.forEach(((t,e)=>{const s=t.offsetWidth,a=s/this.rect.width*100;i.push(a),this.columnWidths[e]=s})),this.data.forEach((t=>{Array.from(t.cells).forEach(((t,e)=>{this.columns(t.cellIndex).visible()&&(t.style.width=`${i[e]}%`)}))})),this.dom.removeChild(e)}}}fixHeight(){this.options.fixedHeight&&(this.container.style.height=null,this.rect=this.container.getBoundingClientRect(),this.container.style.height=`${this.rect.height}px`)}search(t){return!!this.hasRows&&(t=t.toLowerCase(),this.currentPage=1,this.searching=!0,this.searchData=[],t.length?(this.clear(),this.data.forEach(((e,s)=>{const i=this.searchData.includes(e);t.split(" ").reduce(((t,s)=>{let i=!1,a=null,n=null;for(let t=0;tthis.pages.length||t<0)&&(this.render("page"),this.render("pager"),void this.emit("datatable.page",t)))}sortColumn(t,e){this.columns().sort(t,e)}insert(t){let e=[];if(i(t)){if(t.headings&&!this.hasHeadings&&!this.hasRows){const e=a("tr");t.headings.forEach((t=>{const s=a("th",{html:t});e.appendChild(s)})),this.head.appendChild(e),this.header=e,this.headings=[].slice.call(e.cells),this.hasHeadings=!0,this.options.sortable=this.initialSortable,this.render("header"),this.activeHeadings=this.headings.slice()}t.data&&Array.isArray(t.data)&&(e=t.data)}else Array.isArray(t)&&t.forEach((t=>{const s=[];Object.entries(t).forEach((([t,e])=>{const i=this.labels.indexOf(t);i>-1&&(s[i]=e)})),e.push(s)}));e.length&&(this.rows().add(e),this.hasRows=!0),this.update(),this.setColumns(),this.fixColumns()}refresh(){this.options.searchable&&(this.input.value="",this.searching=!1),this.currentPage=1,this.onFirstPage=!0,this.update(),this.emit("datatable.refresh")}clear(t){this.body&&n(this.body);let e=this.body;this.body||(e=this.dom),t&&("string"==typeof t&&(document.createDocumentFragment().innerHTML=t),e.appendChild(t))}export(t){if(!this.hasHeadings&&!this.hasRows)return!1;const e=this.activeHeadings;let s=[];const a=[];let n,r,o,h;if(!i(t))return!1;const l={download:!0,skipColumn:[],lineDelimiter:"\n",columnDelimiter:",",tableName:"myTable",replacer:null,space:4,...t};if(l.type){if("txt"!==l.type&&"csv"!==l.type||(s[0]=this.header),l.selection)if(isNaN(l.selection)){if(Array.isArray(l.selection))for(n=0;n{e.data[i]=[];const a=t.split(s.columnDelimiter);a.length&&a.forEach((t=>{e.data[i].push(t)}))})))}else if("json"===s.type){const t=(t=>{let e=!1;try{e=JSON.parse(t)}catch(t){return!1}return!(null===e||!Array.isArray(e)&&!i(e))&&e})(s.data);t&&(e={headings:[],data:[]},t.forEach(((t,s)=>{e.data[s]=[],Object.entries(t).forEach((([t,i])=>{e.headings.includes(t)||e.headings.push(t),e.data[s].push(i)}))})))}i(s.data)&&(e=s.data),e&&this.insert(e)}return!1}print(){const t=this.activeHeadings,e=this.activeRows,s=a("table"),i=a("thead"),n=a("tbody"),r=a("tr");t.forEach((t=>{r.appendChild(a("th",{html:t.textContent}))})),i.appendChild(r),e.forEach((t=>{const e=a("tr");Array.from(t.cells).forEach((t=>{e.appendChild(a("td",{html:t.textContent}))})),n.appendChild(e)})),s.appendChild(i),s.appendChild(n);const o=window.open();o.document.body.appendChild(s),o.print()}setMessage(t){let e=1;this.hasRows?e=this.data[0].cells.length:this.activeHeadings.length&&(e=this.activeHeadings.length),this.wrapper.classList.add("dataTable-empty"),this.label&&(this.label.innerHTML=""),this.totalPages=0,this.render("pager"),this.clear(a("tr",{html:`${t}`}))}columns(t){return new l(this,t)}rows(t){return new h(this,t)}on(t,e){this.events=this.events||{},this.events[t]=this.events[t]||[],this.events[t].push(e)}off(t,e){this.events=this.events||{},t in this.events!=0&&this.events[t].splice(this.events[t].indexOf(e),1)}emit(t){if(this.events=this.events||{},t in this.events!=0)for(let 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/devilution_01.jpg b/docs/screenshots/devilution_01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb4d460ad735a391f1db28e82b299cdbc9a9dcc3 GIT binary patch literal 7866 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 delta 10041 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 - 2021-10-13T16:06:38.744885 + 2021-10-15T23:32:37.925636 image/svg+xml diff --git a/docs/statistics/index.html b/docs/statistics/index.html index db994aa2..08662dce 100644 --- a/docs/statistics/index.html +++ b/docs/statistics/index.html @@ -5,7 +5,7 @@ - OSGL + OSGL | Statistics @@ -74,7 +74,7 @@

The content (games descriptions) is licensed CC-0. Used icons are licensed under CC BY-SA 3.0 (Iconic or Linecons), CC0 1.0 (Simple Icons), CC BY 4.0 (Font Awesome or IcoMoon Free), CC BY-SA 4.0 (Entypo+) or Apache License 2.0 (Material Icons). - This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-13 14:06

+ This website is built using Python, Lark, Jinja2 and Bulma. Last updated: 2021-10-15 21:32

\ No newline at end of file diff --git a/docs/table.html b/docs/table.html new file mode 100644 index 00000000..61b2c5bd --- /dev/null +++ b/docs/table.html @@ -0,0 +1,82 @@ + + + + + + + + OSGL | Entries | Table + + + + + + + + +
+
+
+

Table

+

Sortable and searchable.

+
+
+
+
+ + + + \ No newline at end of file diff --git a/entries/2048.md b/entries/2048.md index 9ad40e26..ef1ba3ef 100644 --- a/entries/2048.md +++ b/entries/2048.md @@ -1,6 +1,7 @@ # 2048 -- Home: https://play2048.co/, https://en.wikipedia.org/wiki/2048_(video_game) +- Home: https://play2048.co/ +- Media: https://en.wikipedia.org/wiki/2048_(video_game) - State: mature - Play: https://play2048.co/ - Platform: Web diff --git a/entries/screenshots/README.md b/entries/screenshots/README.md index 364efbb9..74c753dc 100644 --- a/entries/screenshots/README.md +++ b/entries/screenshots/README.md @@ -9,10 +9,23 @@ considered fair use and no special labeling is needed. 01 103 128 https://cloud.githubusercontent.com/assets/1175750/8614312/280e5dc2-26f1-11e5-9f1f-5891c3ca8b26.png +# browserquest + +01 188 128 + +# citybound + +01 225 128 https://uploads-ssl.webflow.com/58ef666b690e1f31ad12a43a/5c24208c35af3ace29d8ff05_Screenshot%202018-12-26%20at%2014.39.29.476.png +02 226 128 https://uploads-ssl.webflow.com/58ef666b690e1f31ad12a43a/5c2430cb35af3a5e2bd90d16_microeconomy%20screenshot.png + # craft 01 171 128 https://i.imgur.com/SH7wcas.png +# devilution + +01 171 128 + # evil_cult 01 213 128 @@ -33,3 +46,11 @@ considered fair use and no special labeling is needed. 01 228 128 https://i.imgur.com/e7CK5Sc.png +# osu + +01 273 128 + +# vvvvvv + +01 221 128 + diff --git a/entries/screenshots/browserquest_01.jpg b/entries/screenshots/browserquest_01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c71694b71c8b47e4dcf619f8620d00b51de1d460 GIT binary patch literal 5187 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 literal 0 HcmV?d00001 diff --git a/entries/screenshots/devilution_01.jpg b/entries/screenshots/devilution_01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb4d460ad735a391f1db28e82b299cdbc9a9dcc3 GIT binary patch literal 7866 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 delta 10041 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