Difference between revisions of "AAGRINDER software"

From AAGRINDER wiki
Jump to navigationJump to search
imported>Maze
(Created page with "This page describes the dependencies of AAGRINDER, as well as software related to it in other ways. == Language and environment == The AAGRINDER client runs in a web browser...")
 
(→‎Client: mention websocket)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
 
This page describes the dependencies of AAGRINDER, as well as software related to it in other ways.
 
This page describes the dependencies of AAGRINDER, as well as software related to it in other ways.
  
Line 4: Line 5:
 
The AAGRINDER client runs in a web browser and is written in the language [[wikipedia:Javascript|Javascript]]. To allow shared client-server code, the server is also written in Javascript. The server uses [[wikipedia:Node.js|Node.js]] to run Javascript. However, the [[AAGRINDER terrain generator]] is a separate application and is written in the language [[wikipedia:C%2B%2B|C++]].
 
The AAGRINDER client runs in a web browser and is written in the language [[wikipedia:Javascript|Javascript]]. To allow shared client-server code, the server is also written in Javascript. The server uses [[wikipedia:Node.js|Node.js]] to run Javascript. However, the [[AAGRINDER terrain generator]] is a separate application and is written in the language [[wikipedia:C%2B%2B|C++]].
  
The AAGRINDER server requires a MySQL or MySQL-compatible database for storing account data. This is not required if the server is running in [[Running in insecure mode|insecure mode]].
+
Older versions of AAGRINDER require a MySQL-compatible database for storing account data. As of 8th of July 2022, a database is not needed and a simple JSON file is used instead. Very old versions of AAGRINDER (2017) require a MongoDB database for storing account data.
  
 
== Dependencies ==
 
== Dependencies ==
 
=== Client ===
 
=== Client ===
 
The only dependency of the AAGRINDER client is the library [https://socket.io/ socket.io], which is used for asynchronous communication between the client and the server.
 
The only dependency of the AAGRINDER client is the library [https://socket.io/ socket.io], which is used for asynchronous communication between the client and the server.
 +
 +
There are plans to some day remove the socket.io dependency and directly use the Websocket protocol directly.
  
 
=== Server ===
 
=== Server ===
Line 14: Line 17:
 
* [https://www.npmjs.com/package/bcryptjs bcryptjs] (used for cryptography with account passwords)
 
* [https://www.npmjs.com/package/bcryptjs bcryptjs] (used for cryptography with account passwords)
 
* [https://www.npmjs.com/package/express express] (used for serving web pages)
 
* [https://www.npmjs.com/package/express express] (used for serving web pages)
* [https://www.npmjs.com/package/mysql mysql] (used for connecting to the MySQL database)
 
 
* [https://www.npmjs.com/package/socket.io socket.io] (used for asynchronous communication with the client)
 
* [https://www.npmjs.com/package/socket.io socket.io] (used for asynchronous communication with the client)
 +
* [https://www.npmjs.com/package/js-yaml js-yaml] (optional; used only for Matrix bridge)
 +
* [https://www.npmjs.com/package/uuid uuid] (optional; used only for Matrix bridge)
 +
* [https://www.npmjs.com/package/matrix-bot-sdk matrix-bot-sdk] (optional; used only for Matrix bridge)
 +
* [https://www.npmjs.com/package/sharp sharp] (optional; used only for Matrix bridge)
  
 
=== Terrain generator ===
 
=== Terrain generator ===
The [[AAGRINDER terrain generator]] includes the library [http://libnoise.sourceforge.net/ libnoise], which is used for generating [[wikipedia:Coherence_(signal_processing)|coherent noise]].
+
The [[AAGRINDER terrain generator]] includes parts of the library [http://libnoise.sourceforge.net/ libnoise], which is used for generating [[wikipedia:Coherence_(signal_processing)|coherent noise]].
  
 
== Production software ==
 
== Production software ==
 +
=== Code ===
 
Only text editors were used to write the code for AAGRINDER. As no game engines/frameworks are used, nothing binds it to any particular set of development software. Even though it has only one developer, many different text editors were used over the course of its development:
 
Only text editors were used to write the code for AAGRINDER. As no game engines/frameworks are used, nothing binds it to any particular set of development software. Even though it has only one developer, many different text editors were used over the course of its development:
 
* [[wikipedia:Notepad%2B%2B|Notepad++]]
 
* [[wikipedia:Notepad%2B%2B|Notepad++]]
* [[Visual_Studio_Code|Visual Studio Code]]
+
* [[wikipedia:Visual_Studio_Code|Visual Studio Code]]
* [[Atom_(text_editor)|Atom]]
+
* [[wikipedia:Atom_(text_editor)|Atom]]
* [[Vim_(text_editor)|Vim]]
+
* [[wikipedia:Vim_(text_editor)|Vim]]
 +
* Neovim
 +
 
 +
=== Version control ===
 +
[[wikipedia:Git|Git]] is used for keeping track of changes in code. The repository used to be on [[wikipedia:GitHub|GitHub]], but [[History|was later moved]] to [[wikipedia:GitLab|GitLab]] and can be found at https://gitlab.com/MRAAGH/aagrinder.

Latest revision as of 15:22, 15 May 2024

This page describes the dependencies of AAGRINDER, as well as software related to it in other ways.

Language and environment[edit]

The AAGRINDER client runs in a web browser and is written in the language Javascript. To allow shared client-server code, the server is also written in Javascript. The server uses Node.js to run Javascript. However, the AAGRINDER terrain generator is a separate application and is written in the language C++.

Older versions of AAGRINDER require a MySQL-compatible database for storing account data. As of 8th of July 2022, a database is not needed and a simple JSON file is used instead. Very old versions of AAGRINDER (2017) require a MongoDB database for storing account data.

Dependencies[edit]

Client[edit]

The only dependency of the AAGRINDER client is the library socket.io, which is used for asynchronous communication between the client and the server.

There are plans to some day remove the socket.io dependency and directly use the Websocket protocol directly.

Server[edit]

The AAGRINDER server, running in Node.js, has the following npm packages as dependecies:

  • bcryptjs (used for cryptography with account passwords)
  • express (used for serving web pages)
  • socket.io (used for asynchronous communication with the client)
  • js-yaml (optional; used only for Matrix bridge)
  • uuid (optional; used only for Matrix bridge)
  • matrix-bot-sdk (optional; used only for Matrix bridge)
  • sharp (optional; used only for Matrix bridge)

Terrain generator[edit]

The AAGRINDER terrain generator includes parts of the library libnoise, which is used for generating coherent noise.

Production software[edit]

Code[edit]

Only text editors were used to write the code for AAGRINDER. As no game engines/frameworks are used, nothing binds it to any particular set of development software. Even though it has only one developer, many different text editors were used over the course of its development:

Version control[edit]

Git is used for keeping track of changes in code. The repository used to be on GitHub, but was later moved to GitLab and can be found at https://gitlab.com/MRAAGH/aagrinder.