Make garden tracked via git
This commit is contained in:
parent
6bdaf0294e
commit
fe175090d3
48 changed files with 1226 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,5 @@
|
||||||
node_modules
|
node_modules
|
||||||
site/.vitepress/dist
|
site/.vitepress/dist
|
||||||
site/.vitepress/cache
|
site/.vitepress/cache
|
||||||
site/garden/
|
|
||||||
site/public/garden/
|
site/public/garden/
|
||||||
garden-output/
|
garden-output/
|
13
site/garden/activitypub/index.md
Normal file
13
site/garden/activitypub/index.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "activitypub"
|
||||||
|
tags: [Decentralized]
|
||||||
|
title: "ActivityPub"
|
||||||
|
---
|
||||||
|
# ActivityPub
|
||||||
|
|
||||||
|
> Referenced by: [Fediverse](/garden/fediverse/index.md)
|
||||||
|
|
||||||
|
> Tags: [Decentralized](/garden/decentralized/index.md)
|
||||||
|
|
||||||
|
[ActivityPub](https://activitypub.rocks) is a protocol for [Federated Social Media](/garden/fediverse/index.md)
|
21
site/garden/advent-incremental/index.md
Normal file
21
site/garden/advent-incremental/index.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "advent-incremental"
|
||||||
|
tags: [My Projects, Profectus]
|
||||||
|
title: "Advent Incremental"
|
||||||
|
---
|
||||||
|
# Advent Incremental
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md), [Profectus](/garden/profectus/index.md)
|
||||||
|
|
||||||
|
Play it [here](https://thepaperpilot.org/advent)!
|
||||||
|
|
||||||
|
An [Open Source](/garden/open-source/index.md) game made in [Profectus](/garden/profectus/index.md) over the course of 1 month by myself and other devs I know in the Incremental Games community!
|
||||||
|
|
||||||
|
I had the idea of an advent-style game that unlocked new pieces of content every real-life day a couple days before December started.
|
||||||
|
|
||||||
|
This was one of the most hectic months of my life!
|
||||||
|
|
||||||
|
I'm super happy with how it turned out. It ended up being way more ambitious than I anticipated but the end result is super large and awesome!
|
||||||
|
|
||||||
|
The [TV Tropes](https://tvtropes.org/pmwiki/pmwiki.php/VideoGame/AdventIncremental) page on this game mentions some of the cool things about this game
|
18
site/garden/atproto/index.md
Normal file
18
site/garden/atproto/index.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
alias: "The AT Protocol"
|
||||||
|
public: "true"
|
||||||
|
slug: "atproto"
|
||||||
|
tags: [Decentralized]
|
||||||
|
title: "ATProto"
|
||||||
|
---
|
||||||
|
# ATProto
|
||||||
|
|
||||||
|
> Referenced by: [Fediverse](/garden/fediverse/index.md)
|
||||||
|
|
||||||
|
> Tags: [Decentralized](/garden/decentralized/index.md)
|
||||||
|
|
||||||
|
The [AT Protocol](https://atproto.com) is a protocol for [Federated Social Media](/garden/fediverse/index.md)
|
||||||
|
|
||||||
|
Currently only used by [Bluesky](https://bsky.app)
|
||||||
|
|
||||||
|
In comparison to other [Fediverse](/garden/fediverse/index.md) protocols, ATProto is designed for a small number of large instances
|
22
site/garden/babble-buds/index.md
Normal file
22
site/garden/babble-buds/index.md
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "babble-buds"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "Babble Buds"
|
||||||
|
---
|
||||||
|
# Babble Buds
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
[Babble Buds](http://babblebuds.xyz) is a tool for creating puppets and interacting with puppets controlled by others on a shared stage
|
||||||
|
|
||||||
|
> Note: I need to move the website off replit because of their monetization strategy changing. In the meantime, you can check it out from its [github repository](https://github.com/thepaperpilot/babble-buds)
|
||||||
|
|
||||||
|
Inspired by Puppet Pals by Robert Moran
|
||||||
|
|
||||||
|
Intended for use in RPG Campaigns
|
||||||
|
|
||||||
|
The renderer was separated into its own project, [babble.js](https://github.com/thepaperpilot/babble.js), so it could be used for stuff like cutscenes
|
||||||
|
|
||||||
|
I ported the engine to C# and used it for the cutscenes in [Dice Armor](/garden/dice-armor/index.md)
|
||||||
|
- I don't believe I ever separated it out into its own project, but you can find the code [here](https://github.com/sreynoldsdesign/dice_armor/tree/master/Assets/Scripts/babble.cs)
|
15
site/garden/capture-the-citadel/index.md
Normal file
15
site/garden/capture-the-citadel/index.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "capture-the-citadel"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "Capture the Citadel"
|
||||||
|
---
|
||||||
|
# Capture the Citadel
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
A 3D VR re-envisioning of a Slay the Spire-style game by Anthony Lawn and Grant Barbee for their VR class in college's final project.
|
||||||
|
|
||||||
|
For more details, visit [Grant's page on the game](https://grantcbarbee.github.io/conquer-the-citadel.html).
|
||||||
|
|
||||||
|
![screenshot.png](/garden/screenshot_1717381273245_0.png)
|
12
site/garden/chat-glue/index.md
Normal file
12
site/garden/chat-glue/index.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "chat-glue"
|
||||||
|
title: "Chat Glue"
|
||||||
|
---
|
||||||
|
# Chat Glue
|
||||||
|
|
||||||
|
> Referenced by: [Commune](/garden/commune/index.md), [My Personal Website](/garden/my-personal-website/index.md), [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
A theoretical chat system designed to solve the problems of transcribing branching conversations into linear timelines.
|
||||||
|
|
||||||
|
Defined by the [Chatting with Glue](https://a9.io/glue-comic/) comic.
|
21
site/garden/chronological/index.md
Normal file
21
site/garden/chronological/index.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "chronological"
|
||||||
|
title: "Chronological"
|
||||||
|
---
|
||||||
|
# Chronological
|
||||||
|
|
||||||
|
> Referenced by: [Digital Gardens](/garden/digital-gardens/index.md), [Freeform vs Chronological Dichotomy](/garden/freeform-vs-chronological-dichotomy/index.md), [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
A collection of information that is tied to its creation or edit date
|
||||||
|
|
||||||
|
Part of the [Freeform vs Chronological Dichotomy](/garden/freeform-vs-chronological-dichotomy/index.md)
|
||||||
|
|
||||||
|
Anything with a "timeline" or "feed" is considered chronological
|
||||||
|
- Even if there's algorithmic sortings that take things other than creation or edit date into account!
|
||||||
|
|
||||||
|
Chronological displays are less suitable as stores of knowledge ([Digital Gardens](/garden/digital-gardens/index.md))
|
||||||
|
|
||||||
|
Social media overuses timelines and feeds
|
||||||
|
|
||||||
|
RSS feeds work really well with this form of content
|
10
site/garden/cinny/index.md
Normal file
10
site/garden/cinny/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "cinny"
|
||||||
|
title: "Cinny"
|
||||||
|
---
|
||||||
|
# Cinny
|
||||||
|
|
||||||
|
> Referenced by: [Incremental Social](/garden/incremental-social/index.md)
|
||||||
|
|
||||||
|
[Cinny](https://cinny.in) is an [Open Source](/garden/open-source/index.md) web client for the [Matrix](/garden/matrix/index.md) messaging protocol
|
33
site/garden/commune/index.md
Normal file
33
site/garden/commune/index.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "commune"
|
||||||
|
title: "Commune"
|
||||||
|
---
|
||||||
|
# Commune
|
||||||
|
|
||||||
|
> Referenced by: [Federated Identity](/garden/federated-identity/index.md), [Fedi v2](/garden/fedi-v2/index.md), [My Personal Website](/garden/my-personal-website/index.md), [Webrings](/garden/webrings/index.md), [Weird](/garden/weird/index.md)
|
||||||
|
|
||||||
|
An [Open Source](/garden/open-source/index.md) [Matrix](/garden/matrix/index.md) web client built to be better for communities than anything else out there
|
||||||
|
- Currently in development
|
||||||
|
- Exposes certain channels such that they are web indexable
|
||||||
|
- Will include features like [Chat Glue](/garden/chat-glue/index.md) and communal [Digital Gardens](/garden/digital-gardens/index.md)
|
||||||
|
|
||||||
|
Created by [Erlend Sogge Heggen](https://writing.exchange/@erlend), a ex-employee from Discourse
|
||||||
|
- Maintains the [Commune Blog](https://blog.commune.sh) with great write ups on the issues of the modern web, social media, etc. and how they can be improved (by Commune or related projects)
|
||||||
|
- Also maintains a [Personal Blog](https://blog.erlend.sh) about similar topics
|
||||||
|
|
||||||
|
The Commune community is very interested in various topics and how they can relate together:
|
||||||
|
- [Federated Identity](/garden/federated-identity/index.md)
|
||||||
|
- [Personal Web](/garden/the-small-web/index.md)
|
||||||
|
- [Digital Gardens](/garden/digital-gardens/index.md)
|
||||||
|
- [Social Media](/garden/social-media/index.md)
|
||||||
|
- The common themes here are they want these things [Decentralized](/garden/decentralized/index.md) and [Freeform](/garden/freeform/index.md)
|
||||||
|
- They're also building [Weird](/garden/weird/index.md) to make several of these more accessible
|
||||||
|
|
||||||
|
Related projects:
|
||||||
|
- [@laxla@tech.lgbt](https://tech.lgbt/@laxla) is creating Gimli, a federated discord alternative
|
||||||
|
- Built on ActivityPub
|
||||||
|
- "Guild-based" in ways matrix is not?
|
||||||
|
- Will integrate with F3 as well
|
||||||
|
- Wants to handle blogging as well
|
||||||
|
- Certainly seems similar to Commune's message gardening concept
|
28
site/garden/decentralized/index.md
Normal file
28
site/garden/decentralized/index.md
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
alias: "Federated"
|
||||||
|
public: "true"
|
||||||
|
slug: "decentralized"
|
||||||
|
title: "Decentralized"
|
||||||
|
---
|
||||||
|
# Decentralized
|
||||||
|
|
||||||
|
> Referenced by: [Commune](/garden/commune/index.md), [Fedi v2](/garden/fedi-v2/index.md), [Matrix](/garden/matrix/index.md), [Social Media](/garden/social-media/index.md)
|
||||||
|
|
||||||
|
> Tagged by: [ActivityPub](/garden/activitypub/index.md), [ATProto](/garden/atproto/index.md), [Federated Identity](/garden/federated-identity/index.md), [Fediverse](/garden/fediverse/index.md), [Nostr](/garden/nostr/index.md)
|
||||||
|
|
||||||
|
Something with no central source of authority
|
||||||
|
|
||||||
|
Common examples:
|
||||||
|
- RSS
|
||||||
|
- Email
|
||||||
|
- The [Fediverse](/garden/fediverse/index.md)
|
||||||
|
|
||||||
|
In practice, the "pick a server" problem causes email and the fediverse to trend towards a handful of large servers that still suffer from some of the issues of centralization
|
||||||
|
|
||||||
|
Advantages over centralization:
|
||||||
|
- Data ownership
|
||||||
|
- Increased privacy
|
||||||
|
- No rules to follow
|
||||||
|
- Can fully customize your experience
|
||||||
|
- No single entity can make the experience worse for everyone
|
||||||
|
- Anyone and everyone can try their hand at improving the ecosystem
|
55
site/garden/dice-armor/index.md
Normal file
55
site/garden/dice-armor/index.md
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "dice-armor"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "Dice Armor"
|
||||||
|
---
|
||||||
|
# Dice Armor
|
||||||
|
|
||||||
|
> Referenced by: [Babble Buds](/garden/babble-buds/index.md)
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
Download it [here](https://drive.google.com/open?id=18rwqEIdMChdGtB-9LdI4wiqeM5C5ViOL)
|
||||||
|
|
||||||
|
Dice Armor is a game that started development as a semester-long project by a team of nine: a producer, a creative director, a narrative writer, an artist, two programmers, and 3 game designers. The information here is about my contributions as the lead programmer over the semester because I can show off stuff like the editor scripts I wrote. I was doing everything from interface coding, editor scripts, integrating Babble Buds, and of course, everything related to the gameplay itself. To date I'm still the lead programmer for the game; for more up-to-date information on the current state of the game please visit the official site.
|
||||||
|
|
||||||
|
The build available here was created for showing off at the end of the semester, and as such has some buttons present to make the game easier to skip parts of the game to see all the content: You start with all the dice in the game already in the shop, there's a button to give yourself free money to buy these dice with, and in the duel, there are buttons to force a win or a loss, which can be used to skip the tutorial (not recommended for first-time players).
|
||||||
|
|
||||||
|
![Tutorial](/garden/da2_1717378483173_0.png)
|
||||||
|
|
||||||
|
Dice Armor is a dice dueling game. Players can use abilities, flip dice, and attack each other to win in a dice game that puts chance into the hands of the players. This is what the dueling scene looks like, with a tutorial cutscene happening on top to guide the player through the basics. Also, all the dice are constructed dynamically, using quaternion math to figure out the placement of each component relative to the face it is going on. The die in the middle has one of the player' and opponents' portraits on each of its sides.
|
||||||
|
|
||||||
|
![Editors](/garden/editors_1717378509527_0.png)
|
||||||
|
|
||||||
|
For many of the objects I've created, I've made scriptable objects so that game designers can add and modify them easily. Additionally, I would create custom inspectors for the objects to help make them as easy to understand and edit as possible. The opponent's artificial intelligence is made up of many strategies, in a prioritized list. When it is the opponents' turn they go through each strategy and check if they can be run, and if so then the opponent performs the strategy and starts back over at the top of the list of strategies. The + sign under the list of strategies opens an organized dropdown of all the various strategies.
|
||||||
|
|
||||||
|
![Simulator](/garden/simulator_1717378525890_0.jpg)
|
||||||
|
|
||||||
|
In addition to custom inspector code, I've created new tools for the editor for our game designers to use. This is a duel simulator that will take two opponents and simulate an arbitrary number of duels between them, and output the results and summarize them for you, much much quicker than manually going through the duels, even with an absurdly high timeScale. This will become incredibly useful in making balance changes and testing new dice against existing sets. This is a screenshot of it in edit mode, but in play mode it removes the "Dueling Managers" field and will use whatever the current duel balance settings are, allowing for the GDs to test freely in play mode without worrying about undoing all their changes afterward.
|
||||||
|
|
||||||
|
![da1.png](/garden/da1_1717378469912_0.png)
|
||||||
|
|
||||||
|
I created the Babble Buds puppet editor and ported the rendering library I wrote for it to C# so it could be used in Unity. Dice Armor has a full campaign using cutscenes made using the Babble Buds cutscene editor, taking advantage of its support for custom commands and fields to control things like talking, giving the player dice and money, starting duels, and controlling player progression through the story.
|
||||||
|
|
||||||
|
![Action Wheel](/garden/da6_1717379962786_0.png)
|
||||||
|
|
||||||
|
When a cutscene ends, its final command is to either start a duel or set the next cutscene in the story. In the latter case, there is an additional field for what to call the next cutscene, and what location it takes place. The cutscene is then added to the player's save file, and when they visit the city locations are greyed out until they have at least one action to do there. Each location has a dynamically populated action wheel with a custom range of acceptable angles.
|
||||||
|
|
||||||
|
![Shop](/garden/da7_1717379991458_0.png)
|
||||||
|
|
||||||
|
The dice shop is dynamically populated by a list of dice available to the player, which can be changed during cutscenes, and is checked against the dice owned by the player to generate sold-out indicators. On the left, the player can choose to filter the options down to a single dice effect, which also updates the "Buy All" button to buy only all the dice in the current filter.
|
||||||
|
|
||||||
|
![Inventory](/garden/da8_1717380011914_0.png)
|
||||||
|
|
||||||
|
The inventory works most the same as the shop, but for equipping dice. It also allows you to drag individual dice or entire sets to the equipped dice glyph. While dragging it will highlight all the slots the new dice will be equipped into.
|
||||||
|
|
||||||
|
![Dice Rolling](/garden/da3_1717380046653_0.png)
|
||||||
|
|
||||||
|
The dice rolling uses the physics engine and detects once the dice have stopped moving, then determines which side is face up based on which of the normals is closest to straight up. It flags the die as cocked if that smallest angle is above a threshold. The dice sink into the table when not rolling to not interfere with any dice that are rolling.
|
||||||
|
|
||||||
|
![Missile Storm](/garden/da9_1717380177060_0.png)
|
||||||
|
|
||||||
|
During certain events like winning the game or having the face of a die broken, the players' portraits will flash an emotion for a second. After winning, a random living die from the winning player is chosen to play their "finisher move", a flashy and dramatic effect to end the game. Shown is the arcane mechana's finisher, "Missile Storm".
|
||||||
|
|
||||||
|
After development stopped, the project became [Open Source](/garden/open-source/index.md) - check it out [here](https://github.com/sreynoldsdesign/dice_armor/tree/master/Assets/Scripts/babble.cs)
|
20
site/garden/digital-gardens/index.md
Normal file
20
site/garden/digital-gardens/index.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
alias: "Digital Garden, Second Brain, Personal Knowledge Management, The Zettelkasten Method"
|
||||||
|
public: "true"
|
||||||
|
slug: "digital-gardens"
|
||||||
|
title: "Digital Gardens"
|
||||||
|
---
|
||||||
|
# Digital Gardens
|
||||||
|
|
||||||
|
> Referenced by: [Chronological](/garden/chronological/index.md), [Commune](/garden/commune/index.md), [Garden-RSS](/garden/garden-rss/index.md), [The Cozy Web](/garden/the-cozy-web/index.md)
|
||||||
|
|
||||||
|
Digital Gardens are [Freeform](/garden/freeform/index.md) collections of information made by an individual or community
|
||||||
|
- Alternatives to [Chronological](/garden/chronological/index.md) personal blogs
|
||||||
|
- Exist in a middleground between the dark forest and [The Cozy Web](/garden/the-cozy-web/index.md)
|
||||||
|
|
||||||
|
[This Knowledge Hub](/garden/this-knowledge-hub/index.md)
|
||||||
|
|
||||||
|
Collections of digital gardens and resources for creating them:
|
||||||
|
- **[https://github.com/MaggieAppleton/digital-gardeners](https://github.com/MaggieAppleton/digital-gardeners)**
|
||||||
|
- https://github.com/lyz-code/best-of-digital-gardens
|
||||||
|
- https://github.com/KasperZutterman/Second-Brain
|
23
site/garden/federated-identity/index.md
Normal file
23
site/garden/federated-identity/index.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "federated-identity"
|
||||||
|
tags: [Decentralized]
|
||||||
|
title: "Federated Identity"
|
||||||
|
---
|
||||||
|
# Federated Identity
|
||||||
|
|
||||||
|
> Referenced by: [Commune](/garden/commune/index.md), [Fedi v2](/garden/fedi-v2/index.md), [Weird](/garden/weird/index.md)
|
||||||
|
|
||||||
|
> Tags: [Decentralized](/garden/decentralized/index.md)
|
||||||
|
|
||||||
|
Allow for validating one's identity without relying on a specific centralized server
|
||||||
|
|
||||||
|
Implementations:
|
||||||
|
- Private and public keypairs
|
||||||
|
- [IndieAuth](https://indieweb.org/IndieAuth) by [The IndieWeb](/garden/the-small-web/index.md)
|
||||||
|
- Supported by [Rauthy](https://github.com/sebadob/rauthy) which the [Commune](/garden/commune/index.md) community endorses
|
||||||
|
|
||||||
|
Self hosted identity providers are NOT enough to be considered federated identity
|
||||||
|
- OIDC and OAuth require the service owner to have pre-configured with explicitly allowed identity providers
|
||||||
|
|
||||||
|
[Incremental Social](/garden/incremental-social/index.md) uses Zitadel which does NOT support IndieAuth and probably won't
|
95
site/garden/fedi-v2/index.md
Normal file
95
site/garden/fedi-v2/index.md
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "fedi-v2"
|
||||||
|
title: "Fedi v2"
|
||||||
|
---
|
||||||
|
# Fedi v2
|
||||||
|
|
||||||
|
> Referenced by: [Social Media](/garden/social-media/index.md)
|
||||||
|
|
||||||
|
My take on a theoretical successor to federated [Social Media](/garden/social-media/index.md)
|
||||||
|
|
||||||
|
Inspiration:
|
||||||
|
- [A Plan for Social Media - Rethinking Federation](https://raphael.lullis.net/a-plan-for-social-media-less-fedi-more-webby/)
|
||||||
|
- This article doesn't address many implementation details:
|
||||||
|
- If the server is a relay, can content not be viewed anonymously?
|
||||||
|
- How to handle storing large amounts of data on every client?
|
||||||
|
- Don't you still need to associate with a server for people to direct their messages to?
|
||||||
|
- [Single-user Mastodon Instance is a Bad Idea](https://mull.net/mastodon)
|
||||||
|
- Focuses on the non-feasibility of self hosting, contributing to [Federated Social Media](/garden/fediverse/index.md) not actually having all the upsides it should theoretically have by virtue of being [Decentralized](/garden/decentralized/index.md)
|
||||||
|
- The [Commune](/garden/commune/index.md) community
|
||||||
|
- Existing protocols:
|
||||||
|
- [Nostr](https://nostr.com)
|
||||||
|
- [ATProto](https://atproto.com)
|
||||||
|
- A lot of these ideas are learned lessons from the usenet days
|
||||||
|
|
||||||
|
[Weird](/garden/weird/index.md) may eventually move in the direction of implementing something like this
|
||||||
|
- [Next Gen Federation on Iroh: Graph Data & Linked Documents Layers](https://github.com/commune-os/weird/discussions/32)
|
||||||
|
|
||||||
|
[Federated Identity](/garden/federated-identity/index.md)
|
||||||
|
- Private and public keys anyone can create and store how they want
|
||||||
|
- Fully free to create and store with no server dependencies
|
||||||
|
- Profile information
|
||||||
|
- Sent as a signed message through all the relays
|
||||||
|
- How would you trust a username?
|
||||||
|
- [Petnames](https://spritely.institute/static/papers/petnames.html) could be used to display human readable names via contacts or decentralized "naming hubs"
|
||||||
|
- I believe [Iroh](https://iroh.computer) works this way
|
||||||
|
|
||||||
|
Servers
|
||||||
|
- Act as relays, merely storing messages and sending them to any clients or servers that have subscribed
|
||||||
|
- May decide to publicly display messages its received
|
||||||
|
- These servers are how discovery would work
|
||||||
|
- Different servers may offer unique displays, filters, etc.
|
||||||
|
- Users can send their content to any server - no authentication or account required, as the identity suffices
|
||||||
|
- Even replies can work this way - no need to know from where a given message originated
|
||||||
|
- Private servers could require some password when sending messages or subscribing to things
|
||||||
|
- Useful for a school or other entity that wants an internal social network
|
||||||
|
- Different ways to subscribe to a server's messages
|
||||||
|
- All messages the relay hears about (new relays essentially subscribe like this to some existing relay)
|
||||||
|
- All messages from a specific poster ID
|
||||||
|
- Any replies to a message created with a specific poster ID
|
||||||
|
- Shallow subscriptions, to lighten the load when subscribing to communities
|
||||||
|
|
||||||
|
Content
|
||||||
|
- Protocol should dictate how to convey text, image, audio, video, and binary content
|
||||||
|
- Protocol should include reacting to content with arbitrary text, including a URL
|
||||||
|
- Upvotes and downvotes are implemented with this system
|
||||||
|
- Each message contains fields for the poster's ID (public key) and a signature that verifies the content was made by that poster
|
||||||
|
- That signature serves as an ID for the message itself
|
||||||
|
- Anything can be replied to using the ID as the "parent" property in a new post
|
||||||
|
- Edits are handled as replies with some flag to indicate it's updating the parent messages' content
|
||||||
|
- Naturally, this reply would only be respected if it matches the same creator ID
|
||||||
|
- Servers should replace the original message entirely with this one and indicate its an edited message
|
||||||
|
- Some servers will inevitably keep a full history though
|
||||||
|
- Groups/communities are just specially flagged messages
|
||||||
|
- Posting to a community is just replying to that message
|
||||||
|
- Subscribing to a community is just subscribing to that message
|
||||||
|
- The original message creator effectively owns the group
|
||||||
|
|
||||||
|
Moderation
|
||||||
|
- In general, edits and delete requests are made by replying with a specially flagged message
|
||||||
|
- Edit and deletion messages are ignored unless they have the correct public key and signature
|
||||||
|
- Parent messages form a hierarchy of permission - if someone replies to your message, you can send a delete request for that message
|
||||||
|
- Relay owners cannot fully delete messages, but can choose to stop relaying replies etc. of messages as the server owner wishes
|
||||||
|
- Posts can be publicly reported with a specially flagged reply
|
||||||
|
- How to make anonymous reports?
|
||||||
|
- Users can send deletion or edit messages even without a matching public key, and clients (or relays) can choose to respect those messages if that public key is whitelisted as a moderator
|
||||||
|
- Messages (and by extension, groups) can have replies granting or removing permission to other public IDs at that hierarchy level
|
||||||
|
- People can setup accounts with their desired heuristic for sending delete messages, such as looking at public reports or analyzing the content with AI
|
||||||
|
- This way clients can effectively customize their preferred moderation
|
||||||
|
- Clients can also choose to add additional rules for hiding content, such as any reports by followed users
|
||||||
|
- Perhaps delete messages pull double duty as public reports in and of themselves?
|
||||||
|
|
||||||
|
Problems to solve
|
||||||
|
- No anonymity
|
||||||
|
- All upvotes, downvotes, etc. are linked to your public key
|
||||||
|
- Perhaps a client could generate new keypairs for every action for anonymity, but then it'd be hard to determine if such an account and action was a genuine user or a bot
|
||||||
|
- Servers could probably determine the identity of clients sending their messages to them
|
||||||
|
- A client that only ever sends messages with a specific public key is unlikely to be a server
|
||||||
|
- A client that doesn't subscribe to all messages is unlikely to be a server
|
||||||
|
- Illegal material will likely be placed on the hard drive at least temporarily
|
||||||
|
- Messages will be downloaded and, even if you follow a moderator bot that looks for illegal material, there's likely to be a delay between receiving the initial message and receiving the bots delete message
|
||||||
|
- You have to download all spam messages
|
||||||
|
- For redundancy, you'd likely subscribe to multiple relay servers
|
||||||
|
- You cannot trust several relay servers to have identical rules on not relaying messages that don't pass whatever moderation heuristic
|
||||||
|
- Therefore, the filtering out of spam has to be done by the client, after downloading it all
|
21
site/garden/fediverse/index.md
Normal file
21
site/garden/fediverse/index.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
alias: "Federated Social Media"
|
||||||
|
public: "true"
|
||||||
|
slug: "fediverse"
|
||||||
|
tags: [Decentralized]
|
||||||
|
title: "Fediverse"
|
||||||
|
---
|
||||||
|
# Fediverse
|
||||||
|
|
||||||
|
> Referenced by: [ATProto](/garden/atproto/index.md), [Decentralized](/garden/decentralized/index.md), [Incremental Social](/garden/incremental-social/index.md), [Mbin](/garden/mbin/index.md), [Weird](/garden/weird/index.md)
|
||||||
|
|
||||||
|
> Tags: [Decentralized](/garden/decentralized/index.md)
|
||||||
|
|
||||||
|
A collection of [Social Media](/garden/social-media/index.md) websites that can all talk to each other by virtue of a shared protocol
|
||||||
|
|
||||||
|
Typically refers to sites implementing [ActivityPub](/garden/activitypub/index.md)
|
||||||
|
|
||||||
|
Implementations:
|
||||||
|
- [ActivityPub](/garden/activitypub/index.md)
|
||||||
|
- [ATProto](/garden/atproto/index.md)
|
||||||
|
- [Nostr](/garden/nostr/index.md)
|
10
site/garden/forgejo/index.md
Normal file
10
site/garden/forgejo/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "forgejo"
|
||||||
|
title: "Forgejo"
|
||||||
|
---
|
||||||
|
# Forgejo
|
||||||
|
|
||||||
|
> Referenced by: [Incremental Social](/garden/incremental-social/index.md)
|
||||||
|
|
||||||
|
[Forgejo](https://forgejo.org) is an [Open Source](/garden/open-source/index.md) code repository hosting software
|
10
site/garden/freeform-vs-chronological-dichotomy/index.md
Normal file
10
site/garden/freeform-vs-chronological-dichotomy/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "freeform-vs-chronological-dichotomy"
|
||||||
|
title: "Freeform vs Chronological Dichotomy"
|
||||||
|
---
|
||||||
|
# Freeform vs Chronological Dichotomy
|
||||||
|
|
||||||
|
> Referenced by: [Chronological](/garden/chronological/index.md), [Freeform](/garden/freeform/index.md)
|
||||||
|
|
||||||
|
Describes a dichotomy between displaying information in a [Freeform](/garden/freeform/index.md) vs [Chronological](/garden/chronological/index.md) manner
|
17
site/garden/freeform/index.md
Normal file
17
site/garden/freeform/index.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "freeform"
|
||||||
|
title: "Freeform"
|
||||||
|
---
|
||||||
|
# Freeform
|
||||||
|
|
||||||
|
> Referenced by: [Commune](/garden/commune/index.md), [Digital Gardens](/garden/digital-gardens/index.md), [Freeform vs Chronological Dichotomy](/garden/freeform-vs-chronological-dichotomy/index.md), [Garden-RSS](/garden/garden-rss/index.md), [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
A collection of information that is not tied to when it was created or edited
|
||||||
|
|
||||||
|
Part of the [Freeform vs Chronological Dichotomy](/garden/freeform-vs-chronological-dichotomy/index.md)
|
||||||
|
|
||||||
|
Anything wiki-style is considered freeform
|
||||||
|
- A collection of living documents
|
||||||
|
|
||||||
|
[Garden-RSS](/garden/garden-rss/index.md), a theoretical alternative to RSS that's better for freeform content
|
17
site/garden/game-dev-tree/index.md
Normal file
17
site/garden/game-dev-tree/index.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "game-dev-tree"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "Game Dev Tree"
|
||||||
|
---
|
||||||
|
# Game Dev Tree
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
Play it [here](https://thepaperpilot.org/gamedevtree)!
|
||||||
|
|
||||||
|
My first (good) incremental game! (My actual first was [Shape Tycoon](https://thepaperpilot.itch.io/shape-tycoon) - I don't recommend it!)
|
||||||
|
|
||||||
|
It's [Open Source](/garden/open-source/index.md)!
|
||||||
|
|
||||||
|
The [TV Tropes](https://tvtropes.org/pmwiki/pmwiki.php/VideoGame/TheGameDevTree) page on this game mentions some of the cool things about this game
|
22
site/garden/garden-rss/index.md
Normal file
22
site/garden/garden-rss/index.md
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "garden-rss"
|
||||||
|
title: "Garden-RSS"
|
||||||
|
---
|
||||||
|
# Garden-RSS
|
||||||
|
|
||||||
|
> Referenced by: [Freeform](/garden/freeform/index.md), [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
A theoretical alternative to RSS that's better for [Freeform](/garden/freeform/index.md) websites (and [Digital Gardens](/garden/digital-gardens/index.md) specifically )
|
||||||
|
|
||||||
|
Why is it useful?
|
||||||
|
- [Feeds are not fit for gardening](https://v5.chriskrycho.com/essays/feeds-are-not-fit-for-gardening/)
|
||||||
|
- Describes the issues with RSS for [Digital Gardens](/garden/digital-gardens/index.md)
|
||||||
|
- Proposes creating an alternative, which they call `grdn`
|
||||||
|
|
||||||
|
How should it work?
|
||||||
|
- Could display changes similar to git diffs
|
||||||
|
|
||||||
|
Existing Work
|
||||||
|
- [`grdn` Specification](https://github.com/chriskrycho/grdn/blob/main/SPEC.md)
|
||||||
|
- [Proposal to build set of extensions to RSS](https://forum.summerofprotocols.com/t/pig-rss-all-the-things/383)
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "guide-to-incrementals/appeal-to-developers"
|
||||||
|
title: "Guide to Incrementals/Appeal to Developers"
|
||||||
|
---
|
||||||
|
# Guide to Incrementals/Appeal to Developers
|
||||||
|
|
||||||
|
There are a lot of developers in the incremental games community - the genre seems to draw them in, and convert a lot of players _into_ developers. Let's explore the reasons why this genre appeals to developers.
|
||||||
|
|
||||||
|
## Incrementals are Easy to Make
|
||||||
|
|
||||||
|
Compared to other genres, incrementals have quite low expectations. You don't need to make fancy art, or music, or lay things out nicely. If you can make a button and learn the few lines of code necessary to make a number go up, you can make an incremental. This low threshold makes the genre perfect for those who are actively learning to code and haven't developed any gamedev-related skills yet.
|
||||||
|
|
||||||
|
Additionally, unlike other genres incrementals are uniquely easy to implement in a normal web page - no need to worry about rendering sprites, moving them around, implementing physics, etc. New developers can just use HTML to add a button, and the game is now available in your browser. You don't need to choose an engine, have admin privileges, or hell for the dedicated you don't even need a _computer_ - there are tools for web development that run in the browser itself, so you can technically use your phone if that's all you have.
|
||||||
|
|
||||||
|
Javascript is a perfectly viable language for making web games, whereas other genres are typically going to require using other more difficult languages to learn. There are countless javascript tutorials that start from 0 knowledge of programming, making it incredibly accessible to beginners.
|
||||||
|
|
||||||
|
## Players are Easy to Find
|
||||||
|
|
||||||
|
Once you've finished your game and uploaded it on github pages or itch or just copied the link if you're using glitch or replit (all of which are easy to do), anyone can now play the game in their browser. This low barrier to entry has shown tremendous success in getting completely unknown developers to have thousands of plays.
|
||||||
|
|
||||||
|
The incremental games community, which mostly centers around [r/incremental_games](https://www.reddit.com/r/incremental_games), is always looking for new games and tends to flood any new ones posted with initial players.
|
||||||
|
|
||||||
|
Having your games be played can be incredibly motivating, and the community makes it quite clear that you can expect players to play your game. These communities - both for incremental games in general as well as game-specific communities - tend to be very developer friendly as well. A lot of the developers know each other, and welcome new developers with open arms, often with dedicated channels for programming help and discussions.
|
||||||
|
|
||||||
|
## Monetization
|
||||||
|
|
||||||
|
I'd like to clarify that everything I've said above mainly applies to _web-based incrementals_. Incremental games are also _incredibly_ popular on mobile, but with a much different culture and community. Many mobile gamers will still participate in the web-focused community _for_ the culture. This web-focused community has a culture that has been criticized for being "anti-monetization". Ads, IAPs, and similar forms of monetization are often criticized, mainly due to the abundance of completely non-monetized games available from hobbyist developers. There are exceptions, like paid games often being considered fine, like Increlution or Stuck in Time, or donation ware games like kittens game, but even popular games that have IAP see some level of regular criticism, like NGU Idle, Idle Skilling, or Idle Pins. A large part of this can be explained by the community being hyper-aware of the [addictive](/garden/guide-to-incrementals/appeal-to-players/index.md#665ceed1-72a9-49f2-9215-dd690f89aee3)) nature of this genre and its susceptibility to exploiting players.
|
||||||
|
|
||||||
|
On mobile, however, monetization is the norm and expected. If an incremental game is available on mobile, it almost _certainly_ will be monetized, and mobile players are aware and accepting of that. Mobile incremental games, due to their addictive nature, tend to make a _lot_ of money. It's very lucrative, and therefore these games are quite abundant on mobile storefronts.
|
60
site/garden/guide-to-incrementals/appeal-to-players/index.md
Normal file
60
site/garden/guide-to-incrementals/appeal-to-players/index.md
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "guide-to-incrementals/appeal-to-players"
|
||||||
|
title: "Guide to Incrementals/Appeal to Players"
|
||||||
|
---
|
||||||
|
# Guide to Incrementals/Appeal to Players
|
||||||
|
|
||||||
|
This is something that has been discussed and analyzed by many people, and to some extent, I feel like everything that can be said on the topic already has. However, a lot of these analyses are from the perspective of those with not as much experience and involvement within the genre as I'd argue would be necessary for a fully contextualized answer. I recently watched a video about Vampire Survivors, which has since been taken down due to drawing negative attention, which made me think about some interesting arguments about what games _are_, and what makes them _good_. The video's argument that "Vampire Survivors is not a video game" mirrors a claim by the developer of Cookie Clicker that his games are ["non-games"](https://www.polygon.com/2013/9/30/4786780/the-cult-of-the-cookie-clicker-when-is-a-game-not-a-game). Using Vampire Survivors and the video made on it as a framework, I'll be answering why incremental games appeal to players. Since the video has been taken down, I'll do my best to contextualize and generalize the arguments of the video without requiring the reader to watch it. For what it's worth, while I disagreed with the video I actually liked a lot of the way it went about thinking about games, and I consider this a continuation of that discussion.
|
||||||
|
|
||||||
|
## Numbers Going Up
|
||||||
|
|
||||||
|
This is a very common response to why people enjoy incremental games, although it's not one I find compels me personally, and I suspect it might be a stand-in for [progression](/garden/guide-to-incrementals/appeal-to-players/index.md#665ceed1-704e-4cd0-8263-9a1756b09f4a)) or [Guide to Incrementals/What is Content?](/garden/guide-to-incrementals/what-is-content/index.md). But reportedly, some people do just like _seeing_ big numbers. I must reiterate I suspect the actual cause is seeing big numbers _in context_ though - if you start at 1e1000 of a currency and get to 1e1001, that isn't going to feel as satisfying as going from 1e10 to 1e100, and in any case, I don't think a button that just adds a zero to your number will feel quite satisfying - I believe its the sense of having made progress, and comparing where you are to where you started and feeling like you've earned your way here that is enjoyable.
|
||||||
|
|
||||||
|
<span id="665ceed1-704e-4cd0-8263-9a1756b09f4a">## Progression</span>
|
||||||
|
|
||||||
|
Vampire Survivors can be argued to have a comparatively low depth to its combat compared to many other games. I'd argue it has _sufficient_ depth and more than someone might expect who has only played the game for a short while, but it still definitely gets beat out by many other combat-focused games. Instead, a lot of the progression in Vampire Survivors comes from a meta-progression system by which base stats are increased by spending a currency that persists between runs. While it is technically possible to win without this meta-progression system, and indeed in many roguelikes players like to challenge themselves by beating the game without any meta-progression, the criticism can be made that meta-progression de-emphasizes player skill by making it less important to have to beat the game. Certainly, in incremental games, it is often literally impossible to complete a game without taking advantage of the meta-progression systems. I'd argue this does not detract from the game, however, and is actually a part of what makes incremental games, and roguelikes, enjoyable to many players: meta-progression _augments_ the increases in skill the player is naturally gaining as they play. In effect, it's not _replacing_ the skill increase, but _exaggerating_ it to make it feel more real to the player.
|
||||||
|
|
||||||
|
> Note: There is also a lot of progression from exploring the mechanics and discovering synergies, unlocking new weapons or playable characters, etc. That just isn't as relevant to this discussion, but it does make up a lot of the appeal of the game.
|
||||||
|
|
||||||
|
## Effortlessness
|
||||||
|
|
||||||
|
Incremental games are so easy, a lot of them even have you progress while you're not playing! Part of the appeal is being able to feel like you're making progress while doing something _actually_ productive - [multitasking](https://www.youtube.com/watch?v=g-LziX2HynI), in a way. In this sense, the game is more of a fidget toy - not something to think hard about and play actively, but something to click a few buttons every so often while you're paying attention to a lecture or studying or working. Of course, not _all_ incremental games lend themselves to being played this way - it's specifically "idle" games that work like this. These are games that take an incredibly long amount of time to see all the content, stretching it as thin as possible, but they aren't expecting you to be sitting at your device playing it the entire time. They expect you to leave and come back later to make a bit of progress and repeat the cycle.
|
||||||
|
|
||||||
|
If you look at the higher-level play of most games, you'll see them perform difficult feats with ease and speed. They'll achieve a "flow state" that takes all their knowledge and experience of the game and uses it to play the game as instinctively as possible. It's incredible to watch things like Slay the Spire speed runs or competitive DDR-likes. I'd argue the _goal_ of a lot of games with a competitive scene is to get so good that the game _becomes_ effortless. In that sense, a game that allows you to reach that point earlier isn't any less legitimate, but rather lowers the barrier to entry by allowing more people to get "really good" at the game. And to be clear, Vampire Survivors and (most) incremental games aren't _trivially_ easy - they, and to an extent, every game will have _some_ level of learning and improvement over time.
|
||||||
|
|
||||||
|
<span id="665ceed1-72a9-49f2-9215-dd690f89aee3">## Addiction</span>
|
||||||
|
|
||||||
|
A lot of these reasons for why incremental games appeal may have reminded you of why _gambling_ appeals to people, particularly those prone to addiction. Indeed, incremental games are quite often criticized for their similarity to a [skinner box](https://www.youtube.com/watch?v=tWtvrPTbQ_c). Some have gone as far as to say incremental games as a genre are commenting that [all games are skinner boxes](/garden/guide-to-incrementals/defining-the-genre/index.md#665cea25-b1e5-40bc-8c82-2296982ce1d1)). The argument goes that some games are not fun, but rather condition players into continuing to play without actually getting anything from the experience. When tied to real-world money this is seen as predatory, and to a lesser extent, even free games may be feeding the addictive sides of people and making them more prone to seek out gambling or micro-transaction heavy games.
|
||||||
|
|
||||||
|
> While incremental games can be fun and even healthy in certain contexts, they can exacerbate video game addiction more than other genres. If you feel like playing incremental games is taking priority over other things in your life, or manipulating your sleep schedule, it may be prudent to seek help. See [r/StopGaming](https://www.reddit.com/r/StopGaming) for resources.
|
||||||
|
|
||||||
|
Since incremental games are often built on extrinsic motivations in the form of progression systems, it's hard to argue whether players continue to play because they are enjoying the gameplay, or if they are just conditioned to keep doing it because the game keeps rewarding them. Unfortunately, it can often feel like it's the latter, as there isn't typically anything compelling about the "gameplay" of clicking a button and waiting. There may be a significant overlap between those who enjoy incremental games and those who are most prone to addiction, and there are often posts on [r/incremental_games](https://www.reddit.com/r/incremental_games) about someone either [struggling with or overcoming video game addiction](https://www.reddit.com/r/incremental_games/search?q=addictive+%28flair%3A%22none%22+OR+flair%3A%22meta%22%29&restrict_sr=on&sort=relevance&t=all).
|
||||||
|
|
||||||
|
## Strategy
|
||||||
|
|
||||||
|
Incremental games could be considered a subset of [strategy games](/garden/guide-to-incrementals/defining-the-genre/index.md#665cea25-437a-49a4-8445-00422fb9ded1)), and inherit the appeals of strategy games. This includes the appeal of feeling like you've found a good solution to a puzzle, or that you're learning more about the game and are improving at making decisions within it. This applies to Vampire Survivors specifically, where you're learning about evolutions and synergies and what kinds of enemies can spawn under what conditions, and how best to handle them.
|
||||||
|
|
||||||
|
Note that strategy games are not all the same difficulty, as well. Vampire Survivors is still easier to play than Starcraft 2, and Cookie Clicker is probably somewhere in between (once you progress sufficiently). Vampire Survivors being so successful may indicate that "easier" strategies may have their separate appeal to harder strategy games - players like to feel smart and that they figured the game out and have optimized or mastered it, and the game being easier doesn't detract from that sense of accomplishment as much as it allows more and more users to be able to reach the point where they gain that sense.
|
||||||
|
|
||||||
|
## Avoiding Staleness
|
||||||
|
|
||||||
|
Incremental games tend to have "paradigm shifts", where the gameplay changes in a meaningful way at various times throughout the progression of the game. These upset and change the gameplay loop, which helps keep them from stagnating. This constant "freshness" to the gameplay can keep players engaged for longer, compared to a game with a repetitive and static gameplay loop.
|
||||||
|
|
||||||
|
## Good Game Design
|
||||||
|
|
||||||
|
Incremental games tend to show their game design "plainly", so it's more readily apparent if a game has good game design while playing, even if you're not looking for it. While different players have different preferences and might enjoy different types of games more than others, there are underlying good and bad game design principles that players _will_ notice the effects of. To be clear, this isn't talking about stuff like big numbers being enjoyable, where I can comfortably agree to disagree with other players. They don't intrinsically make my experience better, but I'm aware of those for whom it does and I won't argue against their feelings. However, the game designer in me _does_ feel like there are some extremely clear-cut examples of good and bad game design philosophies.
|
||||||
|
|
||||||
|
Let's start by giving an example of a mechanic I think can be easily and strongly argued is _good_ game design. There are of course many examples, but a personal favorite of mine is how DOOM encourages aggressive gameplay by linking health drops to melee attacks. It has an intended experience it's trying to give the player - immersing themselves as DOOM guy, who would not hide behind cover when low on health - and this mechanic does a great job at encouraging and effectively teaching players to behave properly. This is in sharp contrast to shooters like Call of Duty, which have you regen health passively, encouraging players to hide behind cover and wait after getting hit. Note that I'm not arguing CoD is poorly designed, as the games have different intended experiences. I'm specifically praising DOOM for having a mechanic that does a good job at ensuring the player has that intended experience.
|
||||||
|
|
||||||
|
To contrast with an example I think is _bad_ game design, let's talk about shields in souls-likes. This is a bit of a famous example, and I highly recommend [this video essay](https://www.youtube.com/watch?v=AC3OuLU5XCw) which spends quite a good bit of time on this topic. Essentially, the argument boils down to players of earlier games in the souls games using shields too much - playing slowly, conservatively, and ultimately having less fun. Players wanted to feel safe, so they ended up playing in a way that ruined the experience for them. The developers solved this by removing shields, apart from an intentionally bad one effectively mocking the playstyle, and it did its job at getting players to play more aggressively, and often have more fun.
|
||||||
|
|
||||||
|
To bring the conversation back to incrementals, I'm _incredibly_ opinionated on what makes a _good_ incremental game, which I'll discuss in the game design section. Suffice it to say, incremental games rely more on good game design than other genres, due to not having much to distract from bad game design. This helps (although imperfectly - gamers are a bit too tolerant of bad game design!) well-designed games rise to the top within the genre.
|
||||||
|
|
||||||
|
## Artistic Merit
|
||||||
|
|
||||||
|
The Vampire Survivors video made me think back to the old arguments about whether games are art, and whether they ought to be. The video seems preoccupied with attaching value to games solely based on their mechanics and the depth thereof, to the point of arguing Vampire Survivors is a waste of time due to its lack of depth. However, even setting aside the fact that if players are having fun then it's not time wasted, I think games can have artistic merit that supersedes the necessity of having (any / engaging / "deep") gameplay. I think the consensus online is that games are definitively art, although I could see the argument that some genres, like incremental games, might be a bit in a grey area. Let's talk about Vampire Survivors first though - It has a story to tell, with lore and many characters, that drive the player and encourage them to continue exploring the game and discovering things within it. Like any walking simulator, it is no less legitimate of a game or the "art" label because of any lack perceived lack of depth. For what it's worth, most art can be consumed with more ease than VS - any painting, movie, sculpture, etc.
|
||||||
|
|
||||||
|
A lot of incrementals have a narrative context that can similarly qualify them as art. Cookie Clicker is, as has been pointed out numerous times before, commenting on excess and increasing production beyond any reasonable limits - devolving into increasing production for its own sake. Indeed, a lot of incremental games are written to comment upon various concepts like capitalism or tropes in games, as discussed when [defining Incrementals](/garden/guide-to-incrementals/defining-the-genre/index.md#665cea25-b1e5-40bc-8c82-2296982ce1d1)). However, I'd like to argue _most_ incremental games are still art, even without any narrative context. "Art" as a concept is pretty nebulous already, but I personally like those who define it as an act of expression more than any physical result. The creator and the context within which they created the art, and any meaning they put into it, are all relevant and a part of the art itself. Most incremental games have artistic merit from things like _why_ the creator made it, why they chose to make it an incremental game, and why they made any particular design decision. Hell, even if you play through an entire incremental game without a single thought or feeling, that very fact it elicited nothing can itself be artistic merit!
|
||||||
|
|
||||||
|
I'm not an art major, and I may be taking a somewhat extreme take on what is art and what has artistic merit, but I'd argue the overall point stands that games, and incremental games specifically, _can_ have artistic merit, which appeals to many gamers.
|
141
site/garden/guide-to-incrementals/defining-the-genre/index.md
Normal file
141
site/garden/guide-to-incrementals/defining-the-genre/index.md
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "guide-to-incrementals/defining-the-genre"
|
||||||
|
title: "Guide to Incrementals/Defining the Genre"
|
||||||
|
---
|
||||||
|
# Guide to Incrementals/Defining the Genre
|
||||||
|
|
||||||
|
Video games are placed into genres for a variety of reasons. They can give a mental shorthand to set the player's expectations up, they can help a game market itself by its similarities to other, already popular games, and honestly, people just love categorization for its own sake. For this guide, it's important to define the genre so it is clear what games it's even talking about.
|
||||||
|
|
||||||
|
This poses a problem. "Incremental" is a _horribly_ vague way to define games. _Most_ games have numbers going up in some form or another. We need a more specific definition - similar to how "strategy" can't just mean any game with _any_ amount of strategy because that would be _most_ games. What specifically differentiates incremental games from the rest?
|
||||||
|
|
||||||
|
"Incremental" implies it's a genre defined by a game mechanic, but all those game mechanics it could imply exist in many other games. Having a skill tree or upgrades doesn't make you incremental, and if a reset mechanic is all it takes then every roguelite would be an incremental as well. So clearly there's more to it than that - what makes an incremental an incremental?
|
||||||
|
|
||||||
|
I'd like to go over a couple of popular suggestions I've seen on defining the genre here. I have my personal preferences and will state them here, but I don't think there's a truly perfect answer here.
|
||||||
|
|
||||||
|
> Disclaimer: I mostly play incremental games on my computer, and my definitions will be heavily biased towards the games I'm familiar with.
|
||||||
|
|
||||||
|
## Incrementals vs Idlers vs Clickers
|
||||||
|
|
||||||
|
Oftentimes people refer to this genre as idle games and/or clicker games. You'll even find a trend of oxymoronic game titles that contain both terms. "Incremental games" is the umbrella term both those terms fall under. However, I'd like to argue that not only is it better to just use the term "incremental games", but calling them "idle games" or "clicker games" is _wrong_. Almost universally, these terms are used interchangeably to refer to the _same kind of game_, where you start the game click spamming and eventually automate the process. Frankly, that kind of game deserves neither title, and the genre of incremental games has trended away from ever requiring click spamming, as it's a bad mechanic, anyways.
|
||||||
|
|
||||||
|
While these games do span a spectrum of how active it requires you to be, and sorting games by that metric can be useful for those looking for a particular experience, the borders of when an incremental game counts as an "idler" is too blurry for the term to be useful. "Incremental games" may not be a great descriptive term for the genre (hence this many thousands of words long page on defining what the genre even is), but it's strictly better than calling them "idler" or "clicker" games. This guide will always use the term "incremental games" unless quoting someone else, as it is the term you typically see on all modern games in the genre.
|
||||||
|
|
||||||
|
<span id="665cea25-b1e5-40bc-8c82-2296982ce1d1">## Incrementals as Parodies</span>
|
||||||
|
|
||||||
|
Let's start with one of the most _interesting_ definitions of incremental games. Incremental games appear to be distilled versions of games or genres, "revealing" the naked game design at the core of these games or genres not unlike how parodies comment upon their source material.
|
||||||
|
|
||||||
|
To understand what that means, think of how a casino uses skinner boxes to emotionally manipulate its customers to keep playing, but "dressing" up the skinner box with tons of stimuli to hide that ultimately the goal is to condition you into coming back compulsively. The idea that incremental games are parodies means taking the stance that at some level _all_ games are similarly manipulating you, giving dopamine rewards in a way that manipulates you to keep playing while not necessarily giving you any value or fulfillment. Incremental games, then, are any games that plainly display the skinner box, and the manipulative core of the game, at the forefront of the experience.
|
||||||
|
|
||||||
|
> While incremental games can be fun and even healthy in certain contexts, they can exacerbate video game addiction more than other genres. If you feel like playing incremental games is taking priority over other things in your life, or manipulating your sleep schedule, it may be prudent to seek help. See [r/StopGaming](https://www.reddit.com/r/StopGaming) for resources.
|
||||||
|
|
||||||
|
This "undressing" tends to go hand in hand with a reduced focus on aesthetics, often just printing the game state directly to the screen as text. This makes incremental games much easier to develop, particularly for those with programming skills but not art skills, but that's a tangent for why Incremental Games [Guide to Incrementals/Appeal to Developers](/garden/guide-to-incrementals/appeal-to-developers/index.md).
|
||||||
|
|
||||||
|
Before I continue, I'd like to make my stance clear that I love games and incremental games, and do not think they should be considered inherently bad or manipulative with the above logic. Skinner boxes are just a way of manipulating behavior _via rewards_. The games are still fun - that's the reward! I'd believe the real criticism here is that it is "empty fun", or "empty dopamine", that doesn't offer any additional value or sense of fulfillment. I don't think that's inherently bad in moderation, although it can become a problem if the game is manipulating you for profit-seeking, or if you play the game to the detriment of the other parts of your life.
|
||||||
|
|
||||||
|
Another interpretation of incremental games as parodies comes from several mainstream incremental games that are also parodies of capitalism, such as [cookie clicker](http://orteil.dashnet.org/cookieclicker/) and [adventure capitalist](https://store.steampowered.com/app/346900/adventure_capitalist). It's a very common framework for incremental games to portray the ever-increasing numbers as an insatiable hunger for resources, like the ones observed within capitalism. Therefore, these games are used as evidence that the genre as a whole is about parody and commentary.
|
||||||
|
|
||||||
|
Popular videos on incremental games that portray the genre as parodies are [Why Idle games make good satire, and how it was ruined.](https://www.youtube.com/watch?v=7khbIR-WQIw) and [Bad Game Design - Clicker Games](https://www.youtube.com/watch?v=C-9ASzBErjo). You may also be interested in this response to the latter video from a fan of incremental games: [~~Bad~~Good Game Design - Clicker Games](https://www.youtube.com/watch?v=vBuYzLUzPqw).
|
||||||
|
|
||||||
|
I think that this definition ultimately ascribes a motive to the genre as a whole that only happens to apply to some of the more mainstream titles. There certainly _are_ incremental games commenting on different things, including the genre itself as in the case of [The Prestige Tree Classic](https://jacorb90.me/Prestige-Tree-Classic/), [The Ascension Tree](https://ascensiontree.semenar.ru/), or [Omega Layers](https://veprogames.github.io/omega-layers/), but certainly not all. And of course, not all games that comment on something or parody something are incremental games! Additionally, a very large majority of incremental games are mobile games using these manipulative strategies to get players to spend as much money as possible - hell, Adventure Capitalist is ostensibly a critique on capitalism but features microtransactions and gameplay that manipulates you into buying them! These profit-seeking incremental games certainly belong within the genre but are hardly parodies when they too use manipulation to serve their interests. Also, from my own anecdotal experience, those who use this definition seem to do so from a fairly surface-level familiarity with the genre, and often in the context of criticizing the genre or the fans thereof.
|
||||||
|
|
||||||
|
## Incrementals as NGU
|
||||||
|
|
||||||
|
Another broad definition often used is that incremental games are games where the _focus_ of the game is "numbers going up". This definition proposes that other genres simply use increasing numbers as a means to an end, but incremental games uniquely _only_ care about the numbers themselves going up. Put another way, it implies there should be no narrative justification for the numbers going up other than "why _shouldn't_ they be going up?"
|
||||||
|
|
||||||
|
While this definition is common because it _feels_ easy to understand, it is difficult to formally define. Often phrases are used to describe games using this framework, such as having an "exaggerated sense of progression" or "big" numbers. These terms are vague and don't demonstrate an actual threshold between non-incrementals and incrementals. Most games have a sense of progression, so when is it "exaggerated"? How big are "big" numbers? Most notably, RPGs that are typically not considered incrementals will often pass this definition.
|
||||||
|
|
||||||
|
Additionally, a lot of incrementals tend to have _some_ theme guiding the gameplay, or at least the names of mechanics. This makes the line blurred between when numbers are going up for their own sake versus for a contextual reason. I believe this point is best illustrated that, while _most_ RPGs are not considered incremental games, there _is_ a sub-genre of "incremental RPGs" that typically relates to RPGs that perform combat automatically. This definition of incremental games does not support RPGs and "incremental RPGs" being on distinct sides of the line if the only difference between them is manual vs automatic combat.
|
||||||
|
|
||||||
|
<span id="665cea25-437a-49a4-8445-00422fb9ded1">## Incrementals as Strategies</span>
|
||||||
|
|
||||||
|
This is a rarer interpretation, but there are similarities between incremental games and strategy games, implying incrementals might just be a sub-genre of strategy games. By this approach, incremental games would be defined by their relation to strategy games, and how they involve player strategy. Incremental games are often large optimization problems - above all else, the actual gameplay the player is performing is deciding what to do next. The consequences of wrong decisions are typically more lenient in incremental games - such as just not making optimal progress - but they _certainly_ get complex.
|
||||||
|
|
||||||
|
So if we accept the premise that incrementals could fall under strategy, we still need to define what makes a strategy game an incremental versus some other strategy sub-genre. This is a bit tricky due to one particular sub-genre of strategy games: Factory Builders.
|
||||||
|
|
||||||
|
Factory builders, such as Factorio or Satisfactory, are games about gaining ever increasing resources, optimizing production, and expanding more and more. That... sounds pretty similar, doesn't it? In fact, there's been some debate on whether factory builders would fall under the "incremental" umbrella. I think it's safe to say the two are certainly related, and probably have quite a bit of overlap in playerbase.
|
||||||
|
|
||||||
|
## Roguelites as Incrementals?
|
||||||
|
|
||||||
|
Earlier on, I mentioned reset mechanics shouldn't be used in the definition because that could make all roguelites incrementals... But what if it does? A _lot_ of incrementals can be described as games with a strong sense of progression, often with layers of meta-progression. Roguelites fit that bill to a T. What would make roguelites _not_ incremental? I honestly don't think there's a good explanation here, but many fans of incremental games will state they do believe the two genres to be unrelated, even if there's a significant overlap between their player bases due to having similar appealing traits.
|
||||||
|
|
||||||
|
At this point, it'd be appropriate to consider what part of the definition of roguelites precludes them from also being incrementals, but that reveals a new problem: What are roguelites? They're usually defined as rogue_likes with meta-progression, but that just pushes the problem back a step: Incrementals aren't the only genre to have difficulties defining themselves, it seems! Roguelikes are another genre where the community argues over the formal definition of their genre, although that means we can borrow from their process of coming to a consensus, and maybe come across a viable definition for incremental games.
|
||||||
|
|
||||||
|
### The Berlin Interpretation
|
||||||
|
|
||||||
|
By far the most popular way of defining roguelikes is the "[Berlin Interpretation](http://www.roguebasin.com/index.php?title=Berlin_Interpretation)", which acknowledged the diversity of games within the genre and argued the definition should not be based on any ideals about what the genre _ought_ to be, but rather defined by "its canon". They argued there are a handful of games that can be used to define the canon for roguelikes, and from those games, a list of factors can be derived to determine a game's "roguelikeness". The more factors a game has, the more of a roguelike it is. This strategy is very lenient, allowing a game to not present any specific factor so long as it shows _enough_, and accounts for the blurriness of any genre definition by not explicitly stating how many factors a game must have to qualify as a definite roguelike.
|
||||||
|
|
||||||
|
I believe this strategy for defining genres can be applied to other genres as well. A handful of games can be argued to be the incremental games canon, and a list of factors derived from them can be used to judge any game based on its "incrementalness". I'll propose such a canon and list of factors here, but by no means should it be considered the end-all-be-all.
|
||||||
|
|
||||||
|
> Note: The "Temple of the roguelike", an authority within the genre, has since replaced the Berlin Interpretation with a new set of factors here: https://blog.roguetemple.com/what-is-a-traditional-roguelike/
|
||||||
|
|
||||||
|
### The Incremental Games Canon
|
||||||
|
|
||||||
|
Alright, time to get controversial. Up til now, I've been trying my best to stay objective and analytical, but now it's time to start making some _opinionated decisions_. Here is a list of games I think could justifiably make up an Incremental Games Canon:
|
||||||
|
- [A Dark Room](https://adarkroom.doublespeakgames.com)
|
||||||
|
- [Clicker Heroes](https://www.clickerheroes.com)
|
||||||
|
- [Crank](https://faedine.com/games/crank/b39/)
|
||||||
|
- [Increlution](https://store.steampowered.com/app/1593350/Increlution/)
|
||||||
|
- [Kitten's Game](https://kittensgame.com/web/)
|
||||||
|
- [NGU Idle](https://store.steampowered.com/app/1147690/NGU_IDLE/)
|
||||||
|
- [Realm Grinder](https://store.steampowered.com/app/610080/Realm_Grinder/)
|
||||||
|
- [Synergism](https://pseudo-corp.github.io/SynergismOfficial/)
|
||||||
|
- [Universal Paperclips](https://www.decisionproblem.com/paperclips/)
|
||||||
|
- [Learn to Fly](https://www.coolmathgames.com/0-learn-to-fly)
|
||||||
|
- ~~Hades~~ _Just Kidding!_
|
||||||
|
|
||||||
|
I chose a variety of games here, biasing towards newer games, purposefully to avoid making a narrow or "traditional" definition. The genre is growing and shouldn't be constrained by the traits of the early popular titles. A lot of these could easily be replaced with other games that are mechanically congruent, so ultimately I'm sure if you asked 10 people for their canon list you'd just get 10 different answers, but I think this should sufficiently allow us to determine what factors make a game have higher "incrementalness".
|
||||||
|
|
||||||
|
### The Paradigm Shift
|
||||||
|
|
||||||
|
The Paradigm Shift is probably the _highest_ possible value factor for an incremental. It's so common that for a while people referred to incrementals that exhibit this trait as "unfolding" games, to the point of trying to _replace_ the term incremental due to their popularity. Paradigm shifts refer to when the gameplay significantly changes. There are too many examples to list here, but notably, every single reset mechanic is typically going to be a paradigm shift. Examples of games with paradigm shifts that _aren't_ tied to reset mechanics include [Universal Paperclips](https://www.decisionproblem.com/paperclips/) and [A Dark Room](http://adarkroom.doublespeakgames.com/).
|
||||||
|
|
||||||
|
There are many reasons for the appeal of paradigm shifts. Oftentimes each mechanic builds on top of the existing mechanics, increasing the complexity of the game in steps so the player can follow along. They provide a sense of mystery, with the player anticipating what will happen next. They shake up the gameplay before it gets too stale - allowing the game to entertain for longer before the sense of [Guide to Incrementals/What is Content?](/garden/guide-to-incrementals/what-is-content/index.md) dissipates. Of the canon games selected above, I would argue _every single one_ contains a paradigm shift (although I could see someone disagreeing with that statement wrt Increlution).
|
||||||
|
|
||||||
|
I should take a moment to say that while I'm hyping up this specific factor, we cannot just reduce the genre definition to "does it have paradigm shifts". Many games have paradigm shifts that are not incremental, so it's just an _indicator_ of incrementalness. Additionally, it can become quite hard to determine how large of a shift is a "paradigm" shift. Take, for example, any game with a skill tree. In some games, each skill node might have a large impact on how you play with the game, and qualify as a paradigm shift for some players. In other games, each skill node might just be a small percentage modifier on some stat that doesn't really impact much more than a slight bias towards an already established mechanic that's newly buffed. Every single canon game may show that it's common amongst incremental games, but could just as easily indicate that they're common in games in general.
|
||||||
|
|
||||||
|
### High-Value Factors
|
||||||
|
|
||||||
|
I won't take as long to discuss the high and low-value factors, as you've already seen most of them brought up earlier on this page. As a reminder, a game does NOT need all of these to be an incremental game, but these are factors that each indicate a strong possibility the game is an incremental, so having several of these means they probably are. These factors apply to most of the canon incremental games.
|
||||||
|
|
||||||
|
**"Pure UI" Display**. Incrementals typically have a textual presentation of the game state - there isn't a visual representation of the entities within the game. The interface is closer to what would be just the UI of a game in another genre or the control panel of a plane. If there _is_ a visual representation, the player is often still interacting with non-diegetic game elements.
|
||||||
|
|
||||||
|
**Reduced Consequences**. Incrementals tend to have reduced repurcussions for misplaying. They very rarely have fail states, where often the largest consequence is simply _not_ progressing - never _losing_ progress.
|
||||||
|
|
||||||
|
**Optimization Problems**. The _predominant gameplay_ of incrementals is typically solving optimization problems, from deciding which purchase to save up for to reasoning and deciding between different mutually exclusive options the game presents.
|
||||||
|
|
||||||
|
**Resource Management**. Incrementals tend to have a lot of resources within the game to keep track of.
|
||||||
|
|
||||||
|
### Low-Value Factors
|
||||||
|
|
||||||
|
These are low-value factors, meaning they aren't as strongly correlated with incremental games. Incremental games may have none of these, and non-incrementals may have several of these - if a game _only_ has low-value factors, they're probably not an incremental.
|
||||||
|
|
||||||
|
**Fast Numeric Growth**. Numbers in incremental games tend to grow faster than in other genres. There are more instances of superlinear growth. The larger the numbers get, the stronger of a signal this factor is.
|
||||||
|
|
||||||
|
**Automation**. As an incremental game progresses, the player often no longer has to deal with earlier mechanics, by having them either happen automatically or otherwise be replaced with an alternative that requires less player interaction.
|
||||||
|
|
||||||
|
**Goal-Oriented**. Incrementals are often heavily reliant on extrinsic motivation to guide the player. Typically this is through some sort of in-game goal to work towards, such as a certain amount of a resource being required to unlock or purchase something new.
|
||||||
|
|
||||||
|
**Waiting is a Mechanic**. In incremental games, the player may come across times where there is no action they can take, and the game will progress automatically instead. The player must wait for some amount of this automatic progress to occur before they can resume interaction with the game.
|
||||||
|
|
||||||
|
### Are Roguelites Incrementals?
|
||||||
|
|
||||||
|
Having made our variation of the Berlin Interpretation for incremental games, we can compare it to the Berlin Interpretation to determine if there's enough overlap that any game that "passes" the Berlin Interpretation would also pass the incremental variant. That is to say, whether any roguelite would also be considered an incremental game.
|
||||||
|
|
||||||
|
The meta-progression of an incremental game could arguably be considered a paradigm shift, and certainly adds some resource management. Goal-oriented would probably also apply. I think anything other than those would be a stretch, and in my opinion that just isn't enough to qualify. To be totally honest, I was never expecting to conclude otherwise though ;)
|
||||||
|
|
||||||
|
## Sub-Genres
|
||||||
|
|
||||||
|
There are some trends in incremental games that go beyond just being a commonly used mechanic, such that they deeply affect the rest of the game design. These trends can be used to determine sub-genres within the incremental games umbrella:
|
||||||
|
|
||||||
|
**Loops** games are a sub-genre defined by having a core mechanic related to a loop, where the player is deciding the actions taken per loop. Notable examples include [Idle Loops](https://omsi6.github.io/loops), [Stuck in Time](https://store.steampowered.com/app/1814010/Stuck_In_Time/), [Cavernous II](https://nucaranlaeg.github.io/incremental/CavernousII/), and [Increlution](https://store.steampowered.com/app/1593350/Increlution/). You may also argue [Groundhog Life](https://mogron.itch.io/groundhog-life) and [Progress Knight](https://ihtasham42.github.io/progress-knight/) fall into this sub-genre.
|
||||||
|
|
||||||
|
**ITRTG-like** games are a sub-genre defined by having a core mechanic based on clearing increasingly difficult battles and often tend to have a lot of different mechanics to become progressively stronger. Notable examples include [Idling to Rule the Gods](https://store.steampowered.com/app/466170/Idling_to_Rule_the_Gods/), [NGU Idle](https://store.steampowered.com/app/1147690/NGU_IDLE/), and [Wizard and Minion Idle](https://store.steampowered.com/app/1011510/Wizard_And_Minion_Idle/).
|
||||||
|
|
||||||
|
**Polynomial Growth** games are a sub-genre defined by having a core mechanic related to a higher degree polynomial. Notable examples include the base layer of [Antimatter Dimensions](https://ivark.github.io) and [Swarm Simulator](https://www.swarmsim.com).
|
||||||
|
|
||||||
|
**Upgrades Games** is a category popular on flash games websites that featured games focused on buying upgrades that would allow you to attain more currency in some sort of minigame that would earn you more money to buy more upgrades, which I'd argue now belong under the fold of incremental games. Notable examples include the [Learn to Fly](https://www.coolmathgames.com/0-learn-to-fly) series and [Upgrade Complete](https://www.kongregate.com/games/armorgames/upgrade-complete).
|
||||||
|
|
||||||
|
## Other Related Genres
|
||||||
|
|
||||||
|
**Cultivation RPGs** are a genre of games, books, and anime popular in China that center around being in a fantasy world with characters getting stronger over time. While few of them get translated into English, a fan of incremental games may find the available games interesting.
|
27
site/garden/guide-to-incrementals/index.md
Normal file
27
site/garden/guide-to-incrementals/index.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "guide-to-incrementals"
|
||||||
|
title: "Guide to Incrementals"
|
||||||
|
---
|
||||||
|
# Guide to Incrementals
|
||||||
|
|
||||||
|
This is a comprehensive guide to Incremental Games, a genre of video games. It will explore defining the genre, why it's appealing, and how to design and build your own incremental game. Along the way will be ~~interactive examples~~, snippets from other creators, and relevant material to contextualize everything.
|
||||||
|
|
||||||
|
> Note: This is an incomplete document. I want to keep adding opinions and opposing views from other incremental games developers, and add interactive examples to illustrate various points regarding game design and balancing. Consider this a living document - and see the changelog at the end.
|
||||||
|
|
||||||
|
> Note: This was made before my switch to a digital garden, and is written as prose. Hope you don't mind!
|
||||||
|
|
||||||
|
## Why am I making this?
|
||||||
|
|
||||||
|
That's a good question! What authority do I have to be making this guide? I haven't made the best incremental games, nor the most incremental games, certainly not the most popular ones either. But I do have some formal education in game development, know a lot of incremental game devs (as well as other game devs), and have a passionate interest in ludology, classifying genres, etc. I've also made [a couple of incremental games](/garden/my-projects/index.md)) myself.
|
||||||
|
|
||||||
|
If you have any additional questions about my credentials or anything on this site, feel free to reach out!
|
||||||
|
|
||||||
|
## Ludology
|
||||||
|
- [Guide to Incrementals/Defining the Genre](/garden/guide-to-incrementals/defining-the-genre/index.md)
|
||||||
|
- [Guide to Incrementals/Appeal to Players](/garden/guide-to-incrementals/appeal-to-players/index.md)
|
||||||
|
- [Guide to Incrementals/Appeal to Developers](/garden/guide-to-incrementals/appeal-to-developers/index.md)
|
||||||
|
- [Guide to Incrementals/What is Content?](/garden/guide-to-incrementals/what-is-content/index.md)
|
||||||
|
|
||||||
|
## Making an Incremental
|
||||||
|
- [Guide to Incrementals/Navigating Criticism](/garden/guide-to-incrementals/navigating-criticism/index.md)
|
|
@ -0,0 +1,26 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "guide-to-incrementals/navigating-criticism"
|
||||||
|
title: "Guide to Incrementals/Navigating Criticism"
|
||||||
|
---
|
||||||
|
# Guide to Incrementals/Navigating Criticism
|
||||||
|
|
||||||
|
Developing games is fun and exciting and teaches a lot of wonderful skills - I enthusiastically encourage anyone with an interest in game development to try it out - and incremental games are a wonderful way to get started. However, there are many challenges young and inexperienced developers have to face, and I think the hardest one - harder than coding, debugging, balancing, etc. - is handling criticism. When you put your heart and soul into a game it is natural to feel very vulnerable. While I think there's a lot communities can do to ensure they're welcoming, positive and constructive with their criticisms, inevitably you will eventually read some, and potentially a lot, of comments that can deeply affect you. No one is immune to this, from young incremental game developers to the largest content creators you can think of. That's why it's important to be able to process and navigate criticism, because ultimately collecting feedback is essential to the journey to becoming a better developer. On this page, we'll explore how to embrace criticism, grow from it, and continue to post your games publicly with confidence.
|
||||||
|
|
||||||
|
## Reading Feedback
|
||||||
|
|
||||||
|
Game development is a skill that takes time and practice to get truly great at. Criticism and other constructive feedback are vital to continually improving. It's useful to look at the criticism as solely a tool for improving this game and future games - that is to say, it should never be used against you as a person. Insults towards the developer(s) themselves are never okay and should not be allowed within whatever community you're sharing your works in. If you do come across a comment you interpret as an attack upon your person, you should report it. For other negative comments, try not to internalize them; instead, focus on improving the game. By distancing your own identity from your work emotionally, you can better analyze the game and use the feedback to your advantage.
|
||||||
|
|
||||||
|
Not all feedback is made equal, and you don't need to feel compelled to read and obey every piece of feedback you receive. Learn to distinguish between constructive feedback and unhelpful comments. Constructive feedback typically offers specific suggestions for improvement, while unhelpful comments are often vague or hurtful. Prioritize the former and disregard the latter. That said, most feedback you get will not be from game developers, so take specific suggestions with a grain of salt. Determine the actual problem they're experiencing, and design what you believe the best solution to that problem would be, regardless if that's the specific solution the player asked for. And keep in mind, due to different player preferences you'll never satisfy everyone, and you don't need to. Ultimately if even just you find the game fun, then that's a success.
|
||||||
|
|
||||||
|
## Seeking Feedback
|
||||||
|
|
||||||
|
When deciding where to share your game, consider the type of players you anticipate getting, and the kind of feedback you can anticipate receiving. Different communities will have different levels of support for learning developers, and certain communities may prefer certain types of games or mechanics. It's important to get a diverse set of feedback focused on players you think will enjoy the specific game you're making.
|
||||||
|
|
||||||
|
Collecting feedback from other game developers is incredibly helpful. They've trained themselves to recognize good and bad game design and how to articulate the differences, and from my experience are much more likely to leave positive and constructive comments since they've been in your shoes before! They understand the struggles and can offer guidance and emotional support.
|
||||||
|
|
||||||
|
## Responding to Feedback
|
||||||
|
|
||||||
|
Negative feedback can naturally feel like an attack, and it's okay to get angry. However, lashing back is never the appropriate response. It's best to cool off IRL, and keep in mind all the positive comments you've received. There's a concept in Psychology called negative bias that explains how negative feedback tends to stick with us much more prominently than positive feedback, so it's useful to regularly remind yourself of all the positive feedback you've received. Celebrate your successes, no matter how small they may seem - getting a game to a state you can publicly share it with people is an accomplishment in and of itself!
|
||||||
|
|
||||||
|
Remember your passion and your initial reasons for getting into game development. The journey will have its ups and downs, but staying true to your vision and passion will keep you motivated.
|
52
site/garden/guide-to-incrementals/what-is-content/index.md
Normal file
52
site/garden/guide-to-incrementals/what-is-content/index.md
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "guide-to-incrementals/what-is-content-"
|
||||||
|
title: "Guide to Incrementals/What is Content?"
|
||||||
|
---
|
||||||
|
# Guide to Incrementals/What is Content?
|
||||||
|
|
||||||
|
If you've been in the incremental games community for any amount of time, you'll quickly find the number one thing players want is _content_. They want as much of it as possible! The most popular incremental games have tons of content, so they just keep stretching on and on and on, introducing mechanic after mechanic, and players love it. In fact, players seem to value the _amount_ of content over the quality of any _specific_ content. However, there's a bit of a lack of understanding concerning _what_ content is, and I'd like to explore what counts as content, and how we measure it. As a baseline definition, I think "content" can just be described as the parts of the game that engage the player, but to truly understand it we need to contextualize what that means and how it affects the gameplay experience.
|
||||||
|
|
||||||
|
To clarify the purpose of this page, my goal is not to get (too) nitpicky or to attack games with "low content". There's nothing wrong with short / low-content games - I'm quite a big fan of those games myself! This is mostly targeted toward those who _ask_ for content and settle for "long" games, and those who _want_ to provide content but want to make sure they're not just artificially inflating the game. Ultimately, I suppose the goal is to just reduce the amount of artificially inflated content for the sake of having a "longer" game.
|
||||||
|
|
||||||
|
## Interaction
|
||||||
|
|
||||||
|
I think it should be a fairly non-controversial opinion that time spent _solely_ waiting should not count towards content. That is not including the time reading various effects or making decisions in your head, but rather time spent waiting for a condition to be met so you can re-engage with the game.
|
||||||
|
|
||||||
|
That is not to say games should necessarily try to minimize this time. Plenty of games lead towards more infrequent interaction and still get popular. In fact, these games appeal to many gamers who want to have something to check up on in between bursts of working on some other activity. These games seem to have fallen slightly out of fashion amongst modern incremental games, but they're still fully valid. The point I'm trying to make here is just that this time is not content. As an extreme example, a game with no interactions and just a counter that goes up every second could safely be said to have 0 content beyond the time it takes to understand what's going on. If it has a list of "goals" to hit, then the time understanding those goals and a short time after achieving each one could be considered content, but not the idle times in between.
|
||||||
|
|
||||||
|
Let's take a look at the opposite end of the spectrum - interaction that is so frequent as to become mindless. This is any mechanic where you need to spam-click something to progress. This may be a more controversial take, but I do not believe this constitutes content either. It does not engage the player, because each consecutive click blends together and they do not individually change the gameplay experience. That is to say, a single click and 100 clicks are not meaningfully different in terms of engaging the player. I'd go as far as to say clicking 100 times would be actively _worse_, as it's artificially delaying the next piece of actual content, alongside the issues of accessibility and potentially causing RSI.
|
||||||
|
|
||||||
|
### Repeatable Purchases
|
||||||
|
|
||||||
|
Imagine an entity in a game that you can purchase multiple times, each time it performs the same thing but for a higher cost. These are incredibly common, from the buildings in [cookie clicker](https://orteil.dashnet.org/cookieclicker/) to the units in [swarm sim](https://www.swarmsim.com/) to the IP and EP multipliers in [antimatter dimensions](https://ivark.github.io/). However, how much content is each specific purchase? Is it content beyond the first purchase? Does it have diminishing returns? What if you are oscillating between two different repeatable purchases? How much content is lost when you [automate](/garden/guide-to-incrementals/what-is-content/index.md#665cf570-e3d3-48f6-9fde-aa94e68a8682)) away a repeatable purchase?
|
||||||
|
|
||||||
|
I don't want to take too harsh a stance against repeatable purchases. They're useful tools and can be used in a myriad of interesting ways. I feel they do become "stale" or less meaningful content over time, and this happens exponentially quickly the more frequently it can be purchased. A classic example that I believe goes too far is the IP/EP multipliers in Antimatter Dimensions. I would go as far as to say they are a chore and do not provide any meaningful content after you've bought them a couple of times. It's a method for inflating numbers (effectively making every OOM a 5x step instead of 10x), that punishes the player progression-wise whenever they forget to max it again, and eventually gets automated away as a _reward_ to the player for making enough progress.
|
||||||
|
|
||||||
|
Just to voice the other side of this argument, Acamaeda defended the IP multiplier as giving the player a "good" upgrade every OOM. I can understand that to a point and need to clarify I'm mainly criticizing IP/EP multipliers after they've been introduced for a while. In fact, I would defend the multipliers for a short while after they're introduced using the same logic I would use to defend normal dimensions as repeatable purchases, at least pre-infinity. There's "content" to be had in looking at what dimensions will become affordable next, and then choosing which to buy amongst those. The IP/EP multipliers, early into infinity or eternity respectively, provide another option that gets put into that mental queue of things to buy with each OOM reached - although the optimal order is often quite trivial and not particularly engaging.
|
||||||
|
|
||||||
|
The IP/EP multipliers are not the only repeatable purchase in antimatter dimensions I take offense to. The time dimensions are also a series of repeatable purchases, that are all so similar and static that it doesn't take long before you never need to put any thought into buying them, how much you're buying at once, or the order you buy them in - you just press max all and move on. The entire tab could've been just the max all button and it would not have made a difference beyond the start of the eternity layer. The normal dimensions technically have this problem as well, but since you're constantly getting antimatter the order feels like it has a larger impact and it's more meaningful content, right up until they're automated away. Infinity dimensions are a compromise between the two, so I'm highlighting time dimensions here as the _most_ egregious.
|
||||||
|
|
||||||
|
## Following Instructions
|
||||||
|
|
||||||
|
We're getting more and more controversial as we go along! Let's talk about how linear content is not content now (in some circumstances). A trend in incremental games is adding difficulty by adding a web of effects that abstract the true change you can expect from any specific purchase or decision you make. If a game is both linear and sufficiently abstracts the effect of player decisions, then the player will no longer be engaging with the content - they'll simply be clicking on things as they become available. This isn't necessarily a _bad_ thing, as plenty of players don't mind this style of gameplay, but I'd argue once you reach a point where players _don't bother reading the effects_, those interactions are no longer truly content. Note that unlike the previous qualifiers mentioned, this qualifier is based on the player, and therefore subjective. In effect, it's a spectrum where the more complicated the web of effects becomes, the more likely it is to disengage the player.
|
||||||
|
|
||||||
|
This over-complicatedness leading to disengaging the player can _also_ happen from non-linear gameplay. If the web of effects becomes sufficiently complicated and finding the optimal progression route too time-consuming to discover, players will seek out guides from other players who've completed the game. The _second_ they do this, the game effectively becomes linearly following the instructions of the guide and all the above criticisms apply. Similarly to as before, though, this is a spectrum and not everyone will seek out a guide at the same level of difficulty.
|
||||||
|
|
||||||
|
<span id="665cf570-e3d3-48f6-9fde-aa94e68a8682">## Automation</span>
|
||||||
|
|
||||||
|
Automation is a staple of the genre, but it has certain implications for the design of the game. Why, when new content is introduced, must the older content be automated away - why is it a chore and it feels rewarding to not have to do it again? Why does the new mechanic have such appeal if we know it too will just be automated away later on, and we'll be happy when that happens? It honestly begs the question of why this framework of introducing content and automating the old content is even enjoyable - and nearly nonexistent in other genres. You're not going to reach a point in a platformer game where they just automate the jumping part - _that's the core mechanic!_ Instead, platformers either add new mechanics that _build_ on the core mechanic or at least re-contextualize the core mechanic. However, in incremental games new content very frequently means _replacing_ older content, as opposed to augmenting it.
|
||||||
|
|
||||||
|
Admittedly, the above paragraph ignores the obvious answer that separates incremental games in this regard. These mechanics _become_ chores as their frequency increases. The frequency increases to give a sense of progression, and automation is seen as a reward because it now manages what was becoming unmanageable. The new content then comes in and continues the loop to give a stronger sense of progression. That's all good and a fine justification for automating content instead of building upon the base mechanic. It's also _much_ easier to design, as each layer essentially lets you start over instead of needing to think of ideas that conform to the original core mechanic.
|
||||||
|
|
||||||
|
So, what's the problem? Even if this trend is justified and easy to implement, there are some other effects it has on the game design. First off, and this is probably a neutral point, incremental games with this cycle of replacing old mechanics with new ones trend towards more and more abstract and further away from any narrative throughline as they add layers. There are only so many justifications for resetting progress, so if a game wants to have several of these layers they're inevitably going to become generic or increasingly loosely associated with the original content. It's most unfortunate, in my opinion when an interesting or innovative core mechanic gets fully automated once a generic "prestige" layer is unlocked.
|
||||||
|
|
||||||
|
A recent example is [Really Grass Cutting Incremental](https://mrredshark77.github.io/Really-Grass-Cutting-Incremental/), an incremental game about cutting grass (although I'm really criticizing the Roblox game it's based on). Except, it doesn't _continue_ to be about cutting grass. After you buy enough upgrades to increase your grass cutting and level up sufficiently you "prestige", an abstract term that in this case means you reset all your progress to get some currency to buy upgrades that do the same things as the original upgrades, but these won't reset on future prestiges. You'll eventually be able to "crystallize", which means you reset all your progress to get some currency to buy upgrades that do the same things as the original upgrades (and a couple of new ones) and won't reset on future crystallizes. Fine. You'll progress a bit, complete some challenges, and finally get to... grasshop? Grasshopping is this mechanic where you reset all your progress to get some resource that _isn't_ for buying upgrades - this time you just unlock different modifiers on everything based on their amount. You may have gotten the point by now, but there are also "steelie" resets which give you steel for some reason, before unlocking a factory with various machines - none of which are directly tied to cutting grass, and start gathering things like oil and reset for rocket parts and reset to go to space and so on and so on. Throughout all of this there is absolutely no narrative justification or throughline for the direction the game is going, or why cutting grass is still relevant when we're collecting things like rocket parts. I may be going a little hard on GCI, but it is far from alone.
|
||||||
|
|
||||||
|
## Tips for Developers
|
||||||
|
|
||||||
|
If you're a developer, by this point you should have a pretty decent idea of how to create "true" content in your game. Here are some other specific tips I'd suggest:
|
||||||
|
|
||||||
|
An upgrade that simply unlocks another upgrade trivially isn't content. However, many games have an upgrade that just unlocks a feature, which then has a wait or other requirements before it can be used. Try to make sure when you unlock a feature, there is immediately something to do with the feature - for example, perhaps give them a small amount of the new currency it unlocks, if applicable.
|
||||||
|
|
||||||
|
If you don't have a large web of effects, and can definitively say the impact of a purchase is to multiply the gain of the cost currency by N, and the _next_ purchase costs N times the amount of that same currency, then this purchase effectively made no difference and it may have made more sense to just go directly to the next upgrade. That said, having effects based on things like the number of purchases made will quickly invalidate this tip.
|
16
site/garden/incremental-social/index.md
Normal file
16
site/garden/incremental-social/index.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
public: "tags:: My Projects"
|
||||||
|
slug: "incremental-social"
|
||||||
|
title: "Incremental Social"
|
||||||
|
---
|
||||||
|
# Incremental Social
|
||||||
|
|
||||||
|
> Referenced by: [Federated Identity](/garden/federated-identity/index.md), [My Personal Website](/garden/my-personal-website/index.md), [Webrings](/garden/webrings/index.md)
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
[Incremental Social](https://incremental.social/) is a [Fediverse](/garden/fediverse/index.md) website hosted by me!
|
||||||
|
|
||||||
|
Made explicitly for the incremental games community
|
||||||
|
|
||||||
|
Most notably hosts an instance of [Mbin](/garden/mbin/index.md), [Forgejo](/garden/forgejo/index.md), and [Synapse](/garden/synapse/index.md) (and [Cinny](/garden/cinny/index.md))
|
18
site/garden/kronos/index.md
Normal file
18
site/garden/kronos/index.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "kronos"
|
||||||
|
tags: [My Projects, Profectus]
|
||||||
|
title: "Kronos"
|
||||||
|
---
|
||||||
|
# Kronos
|
||||||
|
|
||||||
|
> Referenced by: [V-ecs](/garden/v-ecs/index.md)
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md), [Profectus](/garden/profectus/index.md)
|
||||||
|
|
||||||
|
My largest and most ambitious incremental game I've ever made
|
||||||
|
- A magnum opus, of sorts ;P
|
||||||
|
|
||||||
|
Still in development, and will be for a long time. I have full intention of completing it, however
|
||||||
|
|
||||||
|
An older version, that is built in The Modding Tree, only has the gameplay, and only goes up to Chapter 2, can be played [here](https://thepaperpilot.org/kronos/)
|
10
site/garden/logseq/index.md
Normal file
10
site/garden/logseq/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "logseq"
|
||||||
|
title: "Logseq"
|
||||||
|
---
|
||||||
|
# Logseq
|
||||||
|
|
||||||
|
> Referenced by: [This Knowledge Hub](/garden/this-knowledge-hub/index.md)
|
||||||
|
|
||||||
|
[Logseq](https://logseq.com) is an [Open Source](/garden/open-source/index.md) outlining software
|
10
site/garden/matrix/index.md
Normal file
10
site/garden/matrix/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "matrix"
|
||||||
|
title: "Matrix"
|
||||||
|
---
|
||||||
|
# Matrix
|
||||||
|
|
||||||
|
> Referenced by: [Cinny](/garden/cinny/index.md), [Commune](/garden/commune/index.md), [Synapse](/garden/synapse/index.md)
|
||||||
|
|
||||||
|
[Matrix](https://matrix.org) is a protocol for [Decentralized](/garden/decentralized/index.md) messaging
|
12
site/garden/mbin/index.md
Normal file
12
site/garden/mbin/index.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "mbin"
|
||||||
|
title: "Mbin"
|
||||||
|
---
|
||||||
|
# Mbin
|
||||||
|
|
||||||
|
> Referenced by: [Incremental Social](/garden/incremental-social/index.md)
|
||||||
|
|
||||||
|
[Mbin](https://github.com/MbinOrg/mbin) is an [Open Source](/garden/open-source/index.md) [Fediverse](/garden/fediverse/index.md) software
|
||||||
|
|
||||||
|
Can show both twitter-style posts and reddit-style threads
|
10
site/garden/my-personal-website/index.md
Normal file
10
site/garden/my-personal-website/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "my-personal-website"
|
||||||
|
title: "My Personal Website"
|
||||||
|
---
|
||||||
|
# My Personal Website
|
||||||
|
|
||||||
|
> Referenced by: [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
A [Personal Websites](/garden/the-small-web/index.md) for me, available at https://thepaperpilot.org
|
27
site/garden/my-projects/index.md
Normal file
27
site/garden/my-projects/index.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
index: "true"
|
||||||
|
public: "true"
|
||||||
|
slug: "my-projects"
|
||||||
|
title: "My Projects"
|
||||||
|
---
|
||||||
|
# My Projects
|
||||||
|
|
||||||
|
> Tagged by: [Advent Incremental](/garden/advent-incremental/index.md), [Babble Buds](/garden/babble-buds/index.md), [Capture the Citadel](/garden/capture-the-citadel/index.md), [Dice Armor](/garden/dice-armor/index.md), [Game Dev Tree](/garden/game-dev-tree/index.md), [Incremental Social](/garden/incremental-social/index.md), [Kronos](/garden/kronos/index.md), [Opti-Speech](/garden/opti-speech/index.md), [Planar Pioneers](/garden/planar-pioneers/index.md), [Profectus](/garden/profectus/index.md), [V-ecs](/garden/v-ecs/index.md)
|
||||||
|
|
||||||
|
I like making games and tools!
|
||||||
|
|
||||||
|
## Games
|
||||||
|
- [Planar Pioneers](/garden/planar-pioneers/index.md) ([play](https://thepaperpilot.org/planar))
|
||||||
|
- [Advent Incremental](/garden/advent-incremental/index.md) ([play](https://thepaperpilot.org/advent))
|
||||||
|
- [Game Dev Tree](/garden/game-dev-tree/index.md) ([play](https://thepaperpilot.org/gamedevtree))
|
||||||
|
- [Dice Armor](/garden/dice-armor/index.md)
|
||||||
|
- [Capture the Citadel](/garden/capture-the-citadel/index.md)
|
||||||
|
- I have more you can find on [my Itch.io page](https://thepaperpilot.itch.io/)
|
||||||
|
- ... And several more in development! Most aren't going to have their own pages on here, but a long-term project of mine called [Kronos](/garden/kronos/index.md) is the exception!
|
||||||
|
|
||||||
|
## Tools (and other non-games)
|
||||||
|
- [Profectus](/garden/profectus/index.md)
|
||||||
|
- [Incremental Social](/garden/incremental-social/index.md)
|
||||||
|
- [Babble Buds](/garden/babble-buds/index.md)
|
||||||
|
- [V-ecs](/garden/v-ecs/index.md)
|
||||||
|
- [Opti-Speech](/garden/opti-speech/index.md)
|
13
site/garden/nostr/index.md
Normal file
13
site/garden/nostr/index.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "nostr"
|
||||||
|
tags: [Decentralized]
|
||||||
|
title: "Nostr"
|
||||||
|
---
|
||||||
|
# Nostr
|
||||||
|
|
||||||
|
> Referenced by: [Fediverse](/garden/fediverse/index.md)
|
||||||
|
|
||||||
|
> Tags: [Decentralized](/garden/decentralized/index.md)
|
||||||
|
|
||||||
|
[Nostr](https://nostr.com) is a protocol for [Federated Social Media](/garden/fediverse/index.md)
|
12
site/garden/open-source/index.md
Normal file
12
site/garden/open-source/index.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "open-source"
|
||||||
|
title: "Open Source"
|
||||||
|
---
|
||||||
|
# Open Source
|
||||||
|
|
||||||
|
> Referenced by: [Advent Incremental](/garden/advent-incremental/index.md), [Cinny](/garden/cinny/index.md), [Commune](/garden/commune/index.md), [Dice Armor](/garden/dice-armor/index.md), [Forgejo](/garden/forgejo/index.md), [Game Dev Tree](/garden/game-dev-tree/index.md), [Logseq](/garden/logseq/index.md), [Mbin](/garden/mbin/index.md), [Planar Pioneers](/garden/planar-pioneers/index.md), [Profectus](/garden/profectus/index.md), [Synapse](/garden/synapse/index.md), [Vitepress](/garden/vitepress/index.md), [Weird](/garden/weird/index.md)
|
||||||
|
|
||||||
|
Projects with the source code publicly accessible
|
||||||
|
|
||||||
|
Typically also grants users the right to modify the code and redistribute those changes, depending on the license
|
37
site/garden/opti-speech/index.md
Normal file
37
site/garden/opti-speech/index.md
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "opti-speech"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "Opti-Speech"
|
||||||
|
---
|
||||||
|
# Opti-Speech
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
In college I continued development on the Opti-Speech project, originally built alongside the scientific paper [Opti-speech: a real-time, 3d visual feedback system for speech training](https://www.researchgate.net/profile/Thomas-Campbell-11/publication/354182612_Opti-speech_a_real-time_3d_visual_feedback_system_for_speech_training/links/6424679ca1b72772e4360fa2/Opti-speech-a-real-time-3d-visual-feedback-system-for-speech-training.pdf)
|
||||||
|
|
||||||
|
## The Original Project
|
||||||
|
|
||||||
|
The Optispeech project involves designing and testing a real-time tongue model that can be viewed in a transparent head while a subject talks — for the purposes of treating speech errors and teaching foreign language sounds. This work has been conducted in partnership with Vulintus and with support from the National Institutes of Health (NIH).
|
||||||
|
|
||||||
|
![system-architecture-600.jpg](/garden/system-architecture-600_1717384793933_0.jpg)
|
||||||
|
|
||||||
|
<iframe width="560" height="315" src="https://www.youtube.com/embed/9uHqIRs7ZjM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen style="display: block; margin: auto;"></iframe>
|
||||||
|
|
||||||
|
This video shows a talker with WAVE sensors placed on the tongue hitting a virtual target sphere located at the alveolar ridge. When an alveolar consonant is hit (e.g., /s/, /n/, /d/) the sphere changes color from red to green.
|
||||||
|
|
||||||
|
<iframe width="560" height="315" src="https://www.youtube.com/embed/Oz42mKvlzqI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen style="display: block; margin: auto;"></iframe>
|
||||||
|
|
||||||
|
This video shows an American talker learning a novel sound not found in English. When the post-alveolar consonant is hit, the target sphere changes color from red to green. Here, the NDI WAVE system serves as input.
|
||||||
|
|
||||||
|
## My Work
|
||||||
|
|
||||||
|
As the sole programmer at UT Dallas Speech Production Lab at the time, my changes involved updating to a more modern version of Unity, improving the interface, in general cleaning up tech debt so it can more easily support new features, and added support for additional EMA systems, namely the Carstens AG501.
|
||||||
|
|
||||||
|
![new-interface.png](/garden/new-interface_1717384734845_0.png)
|
||||||
|
|
||||||
|
In addition, the program now includes documentation and unit tests to improve program stability and maintainability going forward.
|
||||||
|
|
||||||
|
![documentation.png](/garden/documentation_1717384823218_0.png)
|
||||||
|
|
||||||
|
![unittests.png](/garden/unittests_1717384825666_0.png)
|
15
site/garden/planar-pioneers/index.md
Normal file
15
site/garden/planar-pioneers/index.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "planar-pioneers"
|
||||||
|
tags: [My Projects, Profectus]
|
||||||
|
title: "Planar Pioneers"
|
||||||
|
---
|
||||||
|
# Planar Pioneers
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md), [Profectus](/garden/profectus/index.md)
|
||||||
|
|
||||||
|
Play it [here](https://thepaperpilot.org/planar)!
|
||||||
|
|
||||||
|
An [Open Source](/garden/open-source/index.md) game designed to show off [Profectus](/garden/profectus/index.md)' dynamic layer system!
|
||||||
|
|
||||||
|
The [TV Tropes](https://tvtropes.org/pmwiki/pmwiki.php/VideoGame/PlanarPioneers) page on this game mentions some of the cool things about this game
|
24
site/garden/profectus/index.md
Normal file
24
site/garden/profectus/index.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "profectus"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "Profectus"
|
||||||
|
---
|
||||||
|
# Profectus
|
||||||
|
|
||||||
|
> Referenced by: [Advent Incremental](/garden/advent-incremental/index.md), [Planar Pioneers](/garden/planar-pioneers/index.md)
|
||||||
|
|
||||||
|
> Tagged by: [Advent Incremental](/garden/advent-incremental/index.md), [Kronos](/garden/kronos/index.md), [Planar Pioneers](/garden/planar-pioneers/index.md)
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
[Profectus](https://moddingtree.com) is an [Open Source](/garden/open-source/index.md) game engine I made, loosely based on The Modding Tree by Acamaeda
|
||||||
|
|
||||||
|
Technically it's more of a template for making web games
|
||||||
|
|
||||||
|
It centers around using Vue's reactivity and is designed with the intent to not restrain developers into making games that only look or behave "one way"
|
||||||
|
|
||||||
|
Games made with Profectus:
|
||||||
|
- Everything in this garden tagged with this page!
|
||||||
|
- The [entries](https://itch.io/jam/profectus-creation-jam/entries) to the Profectus Creation Jam
|
||||||
|
- [Primordia](https://jacorb90.me/Primordial-Tree/) by Jacorb
|
25
site/garden/social-media/index.md
Normal file
25
site/garden/social-media/index.md
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
alias: "Social Web"
|
||||||
|
public: "true"
|
||||||
|
slug: "social-media"
|
||||||
|
title: "Social Media"
|
||||||
|
---
|
||||||
|
# Social Media
|
||||||
|
|
||||||
|
> Referenced by: [Commune](/garden/commune/index.md), [Fedi v2](/garden/fedi-v2/index.md), [Fediverse](/garden/fediverse/index.md)
|
||||||
|
|
||||||
|
Traditional social media
|
||||||
|
- Not [Decentralized](/garden/decentralized/index.md)
|
||||||
|
- Can't choose your own rules, sorting methods, data queries, etc.
|
||||||
|
- Overrun by scams and ads and influencers
|
||||||
|
|
||||||
|
[Federated Social Media](/garden/fediverse/index.md)
|
||||||
|
- Partially [Decentralized](/garden/decentralized/index.md)
|
||||||
|
- Self hosting is too hard for everyone to do
|
||||||
|
- Still subject to instance's moderation, limitations, etc.
|
||||||
|
- Users need to pick an instance, associating their identity with one specific group
|
||||||
|
- People belong to many groups
|
||||||
|
- The person is permanently associated with that one group
|
||||||
|
- You have to pick before getting a "trial period" to ensure you actually like that group/instance
|
||||||
|
|
||||||
|
My take on an ideal social media [Fedi v2](/garden/fedi-v2/index.md)
|
10
site/garden/synapse/index.md
Normal file
10
site/garden/synapse/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "synapse"
|
||||||
|
title: "Synapse"
|
||||||
|
---
|
||||||
|
# Synapse
|
||||||
|
|
||||||
|
> Referenced by: [Incremental Social](/garden/incremental-social/index.md)
|
||||||
|
|
||||||
|
[Synapse](https://github.com/element-hq/synapse) is an [Open Source](/garden/open-source/index.md) server software for the [Matrix](/garden/matrix/index.md) protocol
|
16
site/garden/the-cozy-web/index.md
Normal file
16
site/garden/the-cozy-web/index.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "the-cozy-web"
|
||||||
|
title: "The Cozy Web"
|
||||||
|
---
|
||||||
|
# The Cozy Web
|
||||||
|
|
||||||
|
> Referenced by: [Digital Gardens](/garden/digital-gardens/index.md), [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
The Cozy Web is an extension of the dark forest theory of the Internet
|
||||||
|
|
||||||
|
It refers to the part of the web that is not web indexable
|
||||||
|
|
||||||
|
This part of the web is known for not typically having ads or marketers
|
||||||
|
|
||||||
|
Popularized by [this article](https://maggieappleton.com/cozy-web) written by Maggie Appleton, who has also written a lot about [Digital Gardens](/garden/digital-gardens/index.md)
|
58
site/garden/the-small-web/index.md
Normal file
58
site/garden/the-small-web/index.md
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
---
|
||||||
|
alias: "The IndieWeb, Personal Web, Personal Websites"
|
||||||
|
public: "true"
|
||||||
|
slug: "the-small-web"
|
||||||
|
title: "The Small Web"
|
||||||
|
---
|
||||||
|
# The Small Web
|
||||||
|
|
||||||
|
> Referenced by: [This Knowledge Hub](/garden/this-knowledge-hub/index.md)
|
||||||
|
|
||||||
|
Small personal websites created by individuals
|
||||||
|
- A callback to how the web was before social media, which homogenized content
|
||||||
|
- These pages are diverse and typically won't have ads or marketers
|
||||||
|
- Comparable to [The Cozy Web](/garden/the-cozy-web/index.md) in that way
|
||||||
|
- <iframe width="560" height="315" src="https://www.youtube.com/embed/00qwzmMrtok" title="" frameBorder="0" allowFullScreen />
|
||||||
|
|
||||||
|
[My Personal Website](/garden/my-personal-website/index.md)
|
||||||
|
|
||||||
|
The small web as a whole is [Freeform](/garden/freeform/index.md)
|
||||||
|
- Individual sites may be [Chronological](/garden/chronological/index.md) still
|
||||||
|
- Individual sites link between each other in ways similar to wikis
|
||||||
|
- These can form [Webrings](/garden/webrings/index.md)
|
||||||
|
|
||||||
|
Building personal websites
|
||||||
|
- [IndieWeb](https://indieweb.org/) contains various resources
|
||||||
|
- Their [building blocks](https://indieweb.org/Category:building-blocks) are standards people can use to help the small web connect with each other consistently
|
||||||
|
- They discourage the use of site builders or templates that end up making sites look too homogenized
|
||||||
|
<span id="665b6ac0-d3ca-41d8-9534-929ac2907c2e">- Free hosting for static websites:</span>
|
||||||
|
- [Neocities](https://neocities.org)
|
||||||
|
- [Codeberg pages](https://codeberg.page) (and any other [pages-server](https://codeberg.org/Codeberg/pages-server) instance)
|
||||||
|
- Like on [Incremental Social](https://incremental.social/pages)!
|
||||||
|
- [Github pages](https://pages.github.com)
|
||||||
|
- [Weird](/garden/weird/index.md) (in development)
|
||||||
|
|
||||||
|
Personal websites (or part of them) may be structured as [streams](https://indieweb.org/stream)
|
||||||
|
- [Microsub](https://indieweb.org/Microsub) is a proposed protocol to support this
|
||||||
|
- That way, people could use microsub clients to subscribe to multiple streams and get them in one feed
|
||||||
|
- Effectively a [Federated Social Media](/garden/fediverse/index.md) that works through personal websites
|
||||||
|
- Those stream may also announce their posts using [WebSub](https://indieweb.org/WebSub)
|
||||||
|
- This also allows your personal website to be the one source of truth for your posted content
|
||||||
|
- Effectively solves the problems described in [Hey Creators, Please Make Firehoses!](https://jonbell.medium.com/hey-creators-please-make-firehoses-8d0c48c075e4)
|
||||||
|
- Multiple streams can be hosted by one site/person so people can subscribe to the kind of content they're interested in
|
||||||
|
- How viable would it be to include chat messages in a stream as well?
|
||||||
|
- Perhaps with [Chat Glue](/garden/chat-glue/index.md) you could link to specific branches I chatted in
|
||||||
|
|
||||||
|
Personal websites (or part of them) may be structured as a [Digital Garden](/garden/digital-gardens/index.md) rather than a stream
|
||||||
|
- These sites may be useful to occasionally check up on rather than get notifications from on every post/change
|
||||||
|
- Although [Garden-RSS](/garden/garden-rss/index.md) could allow those who want to receive notifications to do so
|
||||||
|
|
||||||
|
The small web is viable and can feasibly have a resurgence
|
||||||
|
- There are tools these days that make making websites incredibly easy
|
||||||
|
- Back in the day geocities was pretty complicated but a lot of people managed to make pages there
|
||||||
|
- Neocities has an extensive page on [Learn How to Make Websites!](https://neocities.org/tutorials)
|
||||||
|
- Hosting can be expensive, but static websites are cheap
|
||||||
|
- There are plenty of free options out there for hosting static websites
|
||||||
|
- Ideally you'd use some sort of system that is easily transferrable to other servers, and possibly even supports nomadic identities
|
||||||
|
- [- Free hosting for static websites:](/garden/the-small-web/index.md#665b6ac0-d3ca-41d8-9534-929ac2907c2e)
|
||||||
|
- People are creative and love creating things
|
22
site/garden/this-knowledge-hub/index.md
Normal file
22
site/garden/this-knowledge-hub/index.md
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "this-knowledge-hub"
|
||||||
|
title: "This Knowledge Hub"
|
||||||
|
---
|
||||||
|
# This Knowledge Hub
|
||||||
|
|
||||||
|
> Referenced by: [Digital Gardens](/garden/digital-gardens/index.md)
|
||||||
|
|
||||||
|
This is my knowledge hub!
|
||||||
|
- It's a [Digital Garden](/garden/digital-gardens/index.md) collecting my thoughts in varying levels of completeness on basically anything I have interest in
|
||||||
|
|
||||||
|
This is not Wikipedia. My thoughts are biased and argumentative, but to the best of my ability based on fact and expertise
|
||||||
|
|
||||||
|
<span id="6637b86a-3603-45ef-a21e-b33c7d96c529">I'm writing on _something_ essentially every day</span>
|
||||||
|
- Most of my pages are private, especially the journal pages
|
||||||
|
- I'll only push updates to this site every so often (not an automatic process)
|
||||||
|
|
||||||
|
Written in [Logseq](/garden/logseq/index.md) and rendered with [Vitepress](/garden/vitepress/index.md)
|
||||||
|
|
||||||
|
Suggested pages:
|
||||||
|
- [The Small Web](/garden/the-small-web/index.md)
|
25
site/garden/v-ecs/index.md
Normal file
25
site/garden/v-ecs/index.md
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "v-ecs"
|
||||||
|
tags: [My Projects]
|
||||||
|
title: "V-ecs"
|
||||||
|
---
|
||||||
|
# V-ecs
|
||||||
|
|
||||||
|
> Tags: [My Projects](/garden/my-projects/index.md)
|
||||||
|
|
||||||
|
![screenshot.png](/garden/screenshot_1717383987886_0.png)
|
||||||
|
|
||||||
|
V-ecs (pronounced "Vex") is a Vulkan-based engine I made for making highly moddable games and tools in Lua centered around the ECS design pattern and a work-stealing job system.
|
||||||
|
|
||||||
|
The engine works with "worlds", which are collections of systems and renderers. The engine comes with several worlds using systems and renderers I made, including a voxel world, an incremental game, and some test scenes. All of these include systems to render the fps as well as show a debug console by typing the grave key (\`). The default world is a title screen that detects any worlds in the "worlds" folder and displays a button for each of them.
|
||||||
|
|
||||||
|
![debug.png](/garden/debug_1717384018620_0.png)
|
||||||
|
|
||||||
|
The original plans were to eventually put it on the steam workshop so people could more easily share their creations amongst each other, but I never became happy enough with the performance of the engine - the parallelization of the lua code involved a lot of overhead that severely limited performance.
|
||||||
|
|
||||||
|
Instead, I made a couple of worlds by myself - an infinite procedurally generated voxel world, a simple incremental game, and a more complex incremental game I call "[Sands of Time](https://thepaperpilot.itch.io/sands-of-time)".
|
||||||
|
|
||||||
|
![sandsoftime.png](/garden/sandsoftime_1717383994964_0.png)
|
||||||
|
|
||||||
|
The gameplay of Sands of Time was replicated in [Kronos](/garden/kronos/index.md) Chapter 2!
|
10
site/garden/vitepress/index.md
Normal file
10
site/garden/vitepress/index.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "vitepress"
|
||||||
|
title: "Vitepress"
|
||||||
|
---
|
||||||
|
# Vitepress
|
||||||
|
|
||||||
|
> Referenced by: [This Knowledge Hub](/garden/this-knowledge-hub/index.md)
|
||||||
|
|
||||||
|
[Vitepress](https://vitepress.dev) is an [Open Source](/garden/open-source/index.md) static site generator
|
25
site/garden/webrings/index.md
Normal file
25
site/garden/webrings/index.md
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "webrings"
|
||||||
|
title: "Webrings"
|
||||||
|
---
|
||||||
|
# Webrings
|
||||||
|
|
||||||
|
> Referenced by: [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
A collection of [Personal Websites](/garden/the-small-web/index.md) that link to each other
|
||||||
|
- These websites are all endorsing each other
|
||||||
|
- They form a network of related sites readers might be interested in
|
||||||
|
- Built on human trust rather than algorithms
|
||||||
|
|
||||||
|
[Commune](/garden/commune/index.md) has a vision for modern webrings
|
||||||
|
- Have communities set up matrix spaces for chatting
|
||||||
|
- Multiple spaces can contain the same room
|
||||||
|
- Related communities can share a room about a relevant topic
|
||||||
|
- e.g. a bunch of game development libraries shared a "Game Design" room
|
||||||
|
- This allows smaller communities to grow from cross-pollinating with other related communities
|
||||||
|
- Could [Incremental Social](/garden/incremental-social/index.md) host a shared "Incremental Games" room?
|
||||||
|
- How to bridge one channel to multiple discord servers, since that's where most incremental games communities are
|
||||||
|
- Would this be appealing to already large communities?
|
||||||
|
- Would this be overwhelming to smaller communities?
|
||||||
|
- Who would moderate?
|
12
site/garden/weird/index.md
Normal file
12
site/garden/weird/index.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
public: "true"
|
||||||
|
slug: "weird"
|
||||||
|
title: "Weird"
|
||||||
|
---
|
||||||
|
# Weird
|
||||||
|
|
||||||
|
> Referenced by: [Commune](/garden/commune/index.md), [Fedi v2](/garden/fedi-v2/index.md), [The Small Web](/garden/the-small-web/index.md)
|
||||||
|
|
||||||
|
[Weird](https://weird.one) is an [Open Source](/garden/open-source/index.md) project by the [Commune](/garden/commune/index.md) team currently in development
|
||||||
|
- Aims to make creating [Personal Websites](/garden/the-small-web/index.md) with [Federated Identity](/garden/federated-identity/index.md) available to everyone
|
||||||
|
- Also plans on having paid tiers for giving people access to single user instances of various [Fediverse](/garden/fediverse/index.md) tools
|
Loading…
Reference in a new issue