This piece was written back in 2014 before open sourcing Godot, and while its
intent is to be sarcastic, it leaves ample room for misinterpretation.
The intended meaning of this piece was, and always has been, the following:
Exploitative game mechanics suck. Games are a beautiful and artful medium
which can provide players with a wide range of experiences: entertainment,
enlightenment, joy, sadness... Games can be just for fun or they can bear
a message. They can connect people with each other or open the player's mind.
Make games worth your players' time and their money, and do your best to do so
while running a successful and respectful business. Hugs <3
(cherry picked from commit b872229427)
Casting with either `(Godot.Collections.Dictionary<string,
object>)parsedResult` or `parsedResult as
Godot.Collections.Dictionary<string, object>` fails with an
InvalidCastException (or silently returning null with the `as` keyword).
Instead, a typed constructor using `new` should be used.
Many contributors have opened pull requests to remove it,
but the consensus over the years is that most people are actually fine
with the paragraph in question.
When working on the editor itself, using separate configuration
is sometimes desired to avoid conflicts or accidentally losing
settings.
This closes https://github.com/godotengine/godot/issues/21567.
- Check for common errors and display error messages (node not instanced, missing save function)
- Proper logic for checking there's a line left when iterating through the save file
- Extra comments and different variable names to make the code more clear
- Rewrote the middle sentence of the last paragraph to be less vague.
- Changed structure of sentence explaining order of object loading/saving to improve flow.
Fix some punctuation and grammar in background_loading.
Notes:
"**setup**" (a single [compound] word) is a _noun_ (a name for an object; a signifier [in Ferdinand de Saussure's semiology], a referrer, an identifier);
"**set up**" (two separate words) is an
_idiomatic_ (only makes sense when you take it as it is in its proper context)
_transitive_ (it takes a [direct] object [in a sentence -- grammar])
_phrasal_ (made up of more than one word)
_verb_ (something that expresses an action being done; a process).
Data on which functions are expected to operate:
"**argument(s)**" is the name for what a function takes in when it is being called/invoked/"conjured"/"summoned" [👿 occult language right there 😒];
"**parameter(s)**" is the name for that/those factor(s) that alter[s] what a function is designed to return when one is defining it 📜, usually introduced/"declared" in the function header.
"Low**-**level" is the correct spelling of the adjective.
Improve word choice in encrypting_save_games. Fix subjunctive mood and punctuation.
Notes:
"**everyday**" is the correct spelling of the _adjective_;
"**every day**" is an _adverbial phrase_:
(_what kind of_ ... ?)
"That is an **everyday** occurrence." /
"That happens **every day**."
(_when_?)
Data types ~ parts of speech
The comments are wider than the viewable area in the docs, which makes them hard to read. On Mac, the scrollbars are hidden so you either need an Apple mouse that can scroll sideways, or fumble with scrolling and catching the scroll handle as it appears, so that you can drag it sideways. It's easier for all of us to wrap the comments.
I wouldn't want to mislead people into thinking that encrypting and decrypting a save file locally on the player's computer can prevent editing and sharing of save files. It can't. The only way to prevent unauthorized editing and sharing of save data is to keep the save data on a remote server, and also running the game logic on that server instead of locally on the player's computer.
* Minor Grammar and Naming Fix
Removed an extra "to" in comment.
Renamed var len to var length to avoid name conflict with len() and to make it more clear.
* Fix spelling error on my part
thanks @cbscribe