Skip to content

Commit

Permalink
renamed retro to protean
Browse files Browse the repository at this point in the history
  • Loading branch information
rarebreed committed Feb 27, 2023
1 parent e8ba3c5 commit c75d0fc
Show file tree
Hide file tree
Showing 33 changed files with 442 additions and 169 deletions.
386 changes: 319 additions & 67 deletions Cargo.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[workspace]

members = [
"retro"
"protean"
]

exclude = [
Expand All @@ -16,4 +16,4 @@ serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.9"
rand = "0.8"
num-traits = "0.2"
wgpu = "0.14"
wgpu = "0.15"
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# retro-service
# protean-service

retro-service aims to be a Virtual Table Top Role Playing Game engine powered by bevy. Beyond just a virtual
protean-service aims to be a Virtual Table Top Role Playing Game engine powered by bevy. Beyond just a virtual
table top application, it also aims to help with collaboration, a way to tell a visually and audially enhanced
story.

Expand Down
2 changes: 1 addition & 1 deletion kubernetes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This folder contains files that will setup the entire service for us. We will h

Each of the services will run in their respective pods and will perform the following duties:

- khadga-deploy: backend server written in warp for chatting, to serve up the retro SPA, and as webrtc relay
- khadga-deploy: backend server written in warp for chatting, to serve up the protean SPA, and as webrtc relay
- Uses 2 nodes for availability
- Deployment type
- nginx: load balancer for khadga
Expand Down
2 changes: 1 addition & 1 deletion kubernetes/k8s/es-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ spec:
component: khadga
spec:
containers:
- name: es-retro-v7.8
- name: es-protean-v7.8
image: rarebreed/khadga:0.1.5
resources:
limits:
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion retro/Cargo.toml → protean/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
name = "retro"
name = "protean"
version = "0.1.0"
authors = ["Sean Toner <[email protected]>"]
edition = "2021"
Expand Down
24 changes: 16 additions & 8 deletions retro/README.md → protean/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Welcome to retro
# Welcome to protean

This is the beginning of a RPG that I've had in the back of mind for close to 30 years now. This is a library for
building an RPG game suitable either for CRPG's or PPRPG's. It is far more crunchy and realistic than pretty much any
Expand All @@ -20,8 +20,8 @@ game you will have seen before. Are you tired of:
- Skill systems that do not distinguish between breadth and depth?
- Systems that encourage min-maxing by having cutoffs (eg, a 10 is as good as a 13, because they both give you +2)?

And that's just a few of the pain points that retro is trying to solve. Another point retro is trying to solve may seem
a bit counter intuitive, given that it will stress realism and simulation. Retro is designed to be small and modular,
And that's just a few of the pain points that protean is trying to solve. Another point protean is trying to solve may seem
a bit counter intuitive, given that it will stress realism and simulation. protean is designed to be small and modular,
so that you only need what you need.

Are you tired of reading through a wall of text to find the actual meaning or game functionality that you need? Some
Expand All @@ -47,21 +47,29 @@ If you aren't familiar with those acronyms, the first 2 are probably somewhat co

The last one, CARPG, is probably new because AFAIK, I just made it up. It stands for Computer Assisted Role Playing
Game. In a TTRPG, you don't need anything electronic at all. Just some paper, pens, the rules, dice, and possibly
maps, screens, and other gaming miscellania. Retro isn't really meant for this kind of play style, though in theory,
maps, screens, and other gaming miscellania. protean isn't really meant for this kind of play style, though in theory,
you could print out the rules and character sheets.

In a CRPG, you are playing either a single player RPG, like Skyrim, or a multiplayer RPG, like World of Warcraft. For
CRPG's, retro is designed to be a library that you can use to define your character. It defines things like Attributes,
CRPG's, protean is designed to be a library that you can use to define your character. It defines things like Attributes,
personality traits, damage classes, equipment building, etc, that you can use to help speed up the build of your game.

The primary mode of retro however, is as a CARPG. So what is a CARPG? A CARPG is sort of a hybrid between a CRPG and a
The primary mode of protean however, is as a CARPG. So what is a CARPG? A CARPG is sort of a hybrid between a CRPG and a
PPRPG. You use a web browser or app as your "map and miniatures", and your character sheet and dice rolling can be done
via the app as well. If you have used Roll 20, then it's very much in the same vein. The main difference is that you
the user can design your own game rules, expansions, adventures etc. It's all pluggable and modular.

## Solo playing

Many gamers are not able, or even desire, to play with groups of other gamers. Even in this day and age of virtual table top
systems that allow gamers to play together remotely, there is still a not insignificant niche of players who do solo
playing. The Mythic game system is a great example, and it has been a best seller on drivethrurpg.com for several weeks now.

protean also caters to this crowd by making it easier to do solo playing. This includes tables

## Design

retro will fit into a larger eco system which will include kubernetes services to set up everything needed to play from
protean will fit into a larger eco system which will include kubernetes services to set up everything needed to play from
the web:

- Web server backend for websockets, authentication and WebRTC
Expand All @@ -75,7 +83,7 @@ the web:
- chatbot
- AI enemies and chatbots for single player play

Most likely, I will retrofit the existing khadga app for this. In fact, I may wind up adding this to the multirepo in
Most likely, I will proteanfit the existing khadga app for this. In fact, I may wind up adding this to the multirepo in
the khadga project.

## Programming language consideration
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion retro/docs/book.toml → protean/docs/book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ authors = ["Sean Toner"]
language = "en"
multilingual = false
src = "src"
title = "Retro Game Engine"
title = "protean Game Engine"
24 changes: 12 additions & 12 deletions retro/docs/combat.md → protean/docs/combat.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# Combat in retro
# Combat in protean

Because I have always been fond of simulation style games, combat is a large part of the design of retro. Combat is
Because I have always been fond of simulation style games, combat is a large part of the design of protean. Combat is
really just a specialized and detailed type of Task Resolution. As in all Task Resolutions, it is a contested system.
Even ranged combat is a contested roll.

But what really separates combat in retro is the detail and level of choice in combat compared to other systems.
Almost everything about combat in retro is different compared to mainstream RPG's. I know this system will not be for
But what really separates combat in protean is the detail and level of choice in combat compared to other systems.
Almost everything about combat in protean is different compared to mainstream RPG's. I know this system will not be for
everyone, but for those who are into detail, crunch and simulation, I hope this will feel right at home.

## Aspects of combat

So what makes retro different?
So what makes protean different?

Most games only factor in skill of the adversaries, how fast they are, weapon damage and armor. Most games typically
do combat along these lines:
Expand Down Expand Up @@ -47,7 +47,7 @@ smartly and consistently, I believe that all the above can be factored in with t

## Genre support

Retro is not a super-hero fantasy type system at its heart. While it could model such things, retro is geared towards
protean is not a super-hero fantasy type system at its heart. While it could model such things, protean is geared towards
modelling real-world human level skills. Moreover, player characters do not have any inherent advantages over NPCs.
They do not get to dodge bullets, and most solid gun shots (a decent margin of success) will incapacitate a character no
matter how much experience and training they have.
Expand All @@ -73,7 +73,7 @@ In other words, I want to dispell the myths that
- realism isn't fun or interesting because it doesn't let you do cool things


## Design philosophy of combat in retro
## Design philosophy of combat in protean

Most combat in RPG's are not realistic or even narratively interesting at all. Most games typically allow each
participant in the combat an equal number of actions and reactions. And even games that let characters have more
Expand All @@ -100,7 +100,7 @@ is allow the attacker a shot. Without rules for fatigue or tactical advantage,
meta game perspective for a character to ever hold back attacks. Perhaps in other game systems, there is a special rule
(ala a Feat or Advantage) where if they defend for one round, they gain some kind of tactical advantage. But then you
have to learn the umpteen million special Feat rules, and how they interact with each other in combat. I will argue
that although retro initially looks more complex, in the long run it is actually simpler, because there are less special
that although protean initially looks more complex, in the long run it is actually simpler, because there are less special
rules you need to learn or keep track of.

Going back to the example fight, many fans of other game systems will simply tell you that all of the above _is_
Expand All @@ -125,7 +125,7 @@ The most common argument against such crunchy rules is that it makes combat take
story by focusing too much time on combat. Though combat will take more time due to this level of simulation, I feel it
is a worthwhile trade. As I mentioned earlier, I think it is actually better for storytelling than the too abstracted
combat systems of other games. I also will argue that victory will feel more sweet, because you have put more thought
and effort into it. I will also argue that combat may not take as much time as other systems, because combat in retro
and effort into it. I will also argue that combat may not take as much time as other systems, because combat in protean
will be more lethal or at least render characters hors de combat much faster than most games. While simulating the
action may take longer, successful hits will be more brutal than most games (especially ones using hit points) and thus
combatants will be taken out of combat with fewer hits (often just one).
Expand All @@ -148,15 +148,15 @@ that some games require your opponents to "level up" with your characters in ord
Secondly, from a gaming point of view, it can make combat take longer, because characters have more ability to soak up
damage from "lesser" opponents.
Some game systems have moved away from Hit Points, or at least a single "bag" of HP. In retro, HP is replaced the
Some game systems have moved away from Hit Points, or at least a single "bag" of HP. In protean, HP is replaced the
notion of damage tracks, with different kinds of damage. It also pays a lot of attention to conditions and affects of
damage types.
```

## Combat factors

Considerations of fatigue, distancing, aggressiveness, morale, psychology and looking for openings is almost never
considered in games. Retro is different, and many subtleties of combat are considered. Most games dont factor in:
considered in games. protean is different, and many subtleties of combat are considered. Most games dont factor in:

- What is the attack's reach?
- Distancing between opponents
Expand Down Expand Up @@ -349,7 +349,7 @@ melee combats

### Tactical choices: GRAMS

What makes retro somewhat unique is that it revolves around a tactical pool that must be split among different
What makes protean somewhat unique is that it revolves around a tactical pool that must be split among different
values. Pick 3 out of 5:

- Guard: How open are you leaving yourself?
Expand Down
6 changes: 3 additions & 3 deletions retro/docs/data.md → protean/docs/data.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Data for retro
# Data for protean

Data storage and retrieval for retro will not be your standard web server backed by a database. Instead, a more big
Data storage and retrieval for protean will not be your standard web server backed by a database. Instead, a more big
data approach will be taken.

At a high level we will have the following architecture

![data-flow-architecture](./images/retro.png)
![data-flow-architecture](./images/protean.png)

## Source of truth

Expand Down
File renamed without changes
File renamed without changes.
File renamed without changes.
20 changes: 10 additions & 10 deletions retro/docs/why-retro.md → protean/docs/why-retro.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# An RPG for a more civilized age

So, what's so special about retro? Is this some old-skool OD&D clone? To explain what retro is, and the audience this
So, what's so special about protean? Is this some old-skool OD&D clone? To explain what protean is, and the audience this
game is catering to, I need to tell a little story first.

I actually haven't played a role-playing session in close to 30 years now. My gaming career technically started back
Expand Down Expand Up @@ -185,11 +185,11 @@ capabilities they have at hand. If you think that sounds boring, then you are s
people with amazing abilities, they are people who make tough choices in tough situations to help people in need. It is
in fact, the difficulty of what the hero faces that makes them and their action amazing, not always how they did it.

## Goals of retro
## Goals of protean

Retro has been in the back of my mind for over 25 years. While I don't play as many games as I used to, I am still an
protean has been in the back of my mind for over 25 years. While I don't play as many games as I used to, I am still an
avid reader and buyer of games. I still see the same designs over and over which I have become disillusioned with.
So it might be easiest to describe the things I don't like about many game systems, and how retro improves on it.
So it might be easiest to describe the things I don't like about many game systems, and how protean improves on it.

- Not granular enough in attributes
- Not granular enough in attribute ratings or skill levels
Expand Down Expand Up @@ -218,9 +218,9 @@ what happens when your system is relegated to just a few attributes.

Another disadvantage of having too few attributes is that many characters start to feel the same.

#### How retro solves this
#### How protean solves this

I think that many will balk when they first see how many attributes retro has. But this amount of detail gives more
I think that many will balk when they first see how many attributes protean has. But this amount of detail gives more
flavor and variance between characters. It also makes it clear that a character can be lean but powerful, but lacking
in raw strength, or someone who has a superb memory, but might not be able to think outside of the box.

Expand All @@ -235,9 +235,9 @@ rated in 6 buckets? Having too narrow a range means that your probability of su
there's not enough variance possible when you roll dice. The difference between an "average" rating of 2 and 5 either
becomes too small to make a noticeable difference, or too large.

#### How retro solves this
#### How protean solves this

In retro, both attributes are rated from 1-20 and skills from 0-10. This gives enough variance to make the difference
In protean, both attributes are rated from 1-20 and skills from 0-10. This gives enough variance to make the difference
between a neophyte and a master much more clear.

### Artificial cutoffs
Expand All @@ -247,6 +247,6 @@ the number of dice you can roll to 5. The Hero System makes you divide some att
determine some other value. The consequence of these cutoffs is it creates a min-maxers dream. Why buy a level of 15
when a 13 will give you the same?

#### How retro solves this
#### How protean solves this

Precision is always kept in retro.
Precision is always kept in protean.
1 change: 1 addition & 0 deletions protean/src/character.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
//! Represents a Character in protean
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
//! Tasks define how actions are resolved
//!
//! Die examples:
//!
//! ```
//! use retro::engine::probability::{default_rng, die, DieTraits, DiePool};
//! use protean::engine::probability::{default_rng, die, DieTraits, DiePool};
//!
//! let simpleD6 = die(6);
//! let roll = simpleD6();
Expand Down
8 changes: 4 additions & 4 deletions retro/src/engine/tasks.rs → protean/src/engine/tasks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
//! There's always an advantage if one is skilled, but one's skill is based off of how competent the associated
//! characteristic is. It is thus possible for someone extremely talented but not as skilled, to best someone who is
//! more skilled, but not as talented. Unlike most games which use an additive system where one adds the relevant skill
//! to the appropriate characteristic(s), retro sets the characteristic as a target number, and one's skill as the
//! to the appropriate characteristic(s), protean sets the characteristic as a target number, and one's skill as the
//! number of dice rolled. One counts how many successes are rolled and this count is compared against a competing
//! value.
//!
Expand Down Expand Up @@ -63,13 +63,13 @@
//! | Mythic | | | 14
//! | Impossible | | | 16
//!
//! When a system uses both a number of dice and a moveable target number (as retro does), it can be hard to determine
//! When a system uses both a number of dice and a moveable target number (as protean does), it can be hard to determine
//! how to modify the difficulty of a task.
//!
//! - Do you adjust the number of dice rolled (for the character, the adversary, or both)?
//! - Do you adjust the target number (for the character, the adversary or both)?
//!
//! Since retro always uses an opposed system, there is never a fixed target. Rather, the GM should consider the
//! Since protean always uses an opposed system, there is never a fixed target. Rather, the GM should consider the
//! following:
//!
//! - If there is an inherent or internal modifier, it should adjust that actor's roll
Expand Down Expand Up @@ -146,7 +146,7 @@
//! - Fighting in poor visibility
//! - Chase on rainy roads
//!
//! Because retro uses d20 for rolls, each adjust for a single die is a 5% reduction. However, we roll pools of dice,
//! Because protean uses d20 for rolls, each adjust for a single die is a 5% reduction. However, we roll pools of dice,
//! and not a single die. Also, adjustments to the TN never affect the exploding number. The exploding value is always
//! a _natural_ 19 or 20, never a modified result of 19 or better.
//!
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 0 additions & 1 deletion retro/src/character.rs

This file was deleted.

67 changes: 67 additions & 0 deletions scripts/install-nushell
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/zsh
#
# This script will install some useful rust dev tools for you
# - rustup check
# - starship prompt editor
# - nushell



# Check version OS and install nushell
os=`uname`
echo "os is $os"
#if [ $os == "Darwin" ]; then
# brew install nushell
#elif [ $os == "Linux" ]; then
# Check if apt exists
# packman=`which apt`
# if [ $? != 0 ]; then
# sudo dnf install libxcb openssl-devel libX11-devel
# else
sudo apt install build-essential pkg-config libssl-dev cmake
cargo install nu --features=extra
#fi

# install mononoki nerd font
#if [ $os == "Darwin" ]; then
# brew tap homebrew/cask-fonts && brew install --cask font-mononoki-nerd-font
#else
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Mononoki.zip
unzip Mononoki.zip -e ~/.local/share/fonts
#fi

# install starship rs
cargo install starship --locked
nu ./starship.nu

# install git-delta
cargo install git-delta

# install helix
#git clone https://github.com/helix-editor/helix
#cd helix
#cargo install --path helix-term
#mkdir ~/.config/helix
#ln -s $PWD/runtime ~/.config/helix/runtime
#cd -

# install misc rust tools
cargo install cargo-binstall
cargo install cargo-update
cargo install cargo-udeps
cargo install cargo-bloat
cargo install cargo-audit
cargo install cargo-semver-checks --locked
cargo install topgrade
cargo install ripgrep
cargo install procs
cargo install bottom
cargo install mdbook
cargo install fd-find
cargo install --locked broot
cargo install cargo-wasi
cargo install cargo-editor
cargo install evcxr_jupyter
cargo install evcxr_repl
cargo binstall nextest
cargo install --locked tokio-console
Loading

0 comments on commit c75d0fc

Please sign in to comment.