Steve Jackson Games - Site Navigation
Home General Info Follow Us Search Illuminator Store Forums What's New Other Games Ogre GURPS Munchkin Our Games: Home

Go Back   Steve Jackson Games Forums > Roleplaying > GURPS

Reply
 
Thread Tools Display Modes
Old 11-19-2018, 05:42 PM   #1
mindbound
 
Join Date: Nov 2017
Default Programming with GURPS Powers

While creating some rather complex multi-part powers for my campaign, I stumbled upon an interesting, if perhaps fanciful, thought: what would it take to emulate the bare minimum of functionality to get Turing completeness using only GURPS power system.

Specifically, I'd be interested in solutions for:
  1. Branching (on a trigger X, have effect Y, optionally else have effect Z)
  2. Loops (have effect Y after repeating action X for N times)
  3. State variables ("boxes" or "slots" holding numerical values)
I'd love to see your ideas. Perhaps someone has already explored this but I can't seem to find anything.

This is purely an experiment with the flexibility and expressiveness of the GURPS power system and I'm not sure how much of this can be done (triggers exist but seem limited; no idea about the rest), although, if possible, it would open up some pretty interesting possibilities. Inspired by lists of things [1][2] that one wouldn't expect to be Turing-complete but are.
mindbound is offline   Reply With Quote
Old 11-19-2018, 07:07 PM   #2
Culture20
 
Join Date: Feb 2014
Default Re: Programming with GURPS Powers

Modular Ability pools are perfect variables, with an added benefit of holding other abilities, so they’d be much more like higher-language variables that can hold objects or function pointers. To use the turing machine example, a MA pool of infinite points could be the infinite tape.
Loops can be constructed from branches and goto-like statements too, so a repetative ability/enhancement isn’t absolutely necessary.
Culture20 is offline   Reply With Quote
Old 11-19-2018, 11:02 PM   #3
Celjabba
 
Join Date: Sep 2006
Location: Luxembourg
Default Re: Programming with GURPS Powers

Jumper(time) should handle branches and loops with a mix of reflexive, links, triggers and accessibility.

For full automation with little user input, permanent self-afflicting of advantages/negated advantages could handle state variables by adding/removing advantages with arbitrary conditions for ending the afflictions.

Otherwise MA are perfect for variable, but harder to automate.

Last edited by Celjabba; 11-19-2018 at 11:52 PM.
Celjabba is online now   Reply With Quote
Old 11-19-2018, 11:04 PM   #4
Plane
 
Join Date: Aug 2018
Default Re: Programming with GURPS Powers

Quote:
Originally Posted by mindbound View Post
[*]Branching (on a trigger X, have effect Y, optionally else have effect Z)[*]Loops (have effect Y after repeating action X for N times)[*]State variables ("boxes" or "slots" holding numerical values)
B105 "Triggered Delay" allows you to specify a trigger for Branching.

Loop's "after X for N times" also seems like it could be designed as a Trigged Delay.

I don't really understand what is meant by the 3rd option, sorry.
Plane is offline   Reply With Quote
Old 11-20-2018, 12:19 AM   #5
whswhs
 
Join Date: Jun 2005
Location: Lawrence, KS
Default Re: Programming with GURPS Powers

Who are you envisioning as carrying out the program? The GURPS character, the player who runs that character, the GURPS GM, or maybe some actual computer running GURPS as its programming language?
__________________
Bill Stoddard

I don't think we're in Oz any more.
whswhs is online now   Reply With Quote
Old 11-20-2018, 04:12 AM   #6
mindbound
 
Join Date: Nov 2017
Default Re: Programming with GURPS Powers

This is brilliant, especially regarding Modular Abilities! Not sure how to automate them, at the moment, but that definitely got me thinking. I'll have to investigate further about Triggered Delay, too.

Quote:
Originally Posted by Plane View Post
I don't really understand what is meant by the 3rd option, sorry.
By variables I mean virtual "slots" holding numbers, e.g., a counter or a Boolean (true/false), that can be "read" and preferably (but not necessarily) "written" by other running parts of the power. If you'll think variables in elementary maths (x + 2 = 7) or a limited version of variables in programming, you'd have the right idea.

My idea about the potential practicality of this exploration into programmability of GURPS powers is about ways of constructing "smart" powers that can act differently when activated based on some condition, run in background and react to situations, etc.

On the level of the character, this would likely represent complex subconscious routines, subliminal programming of the more literal kind, or perhaps actual subroutines in an AI that run independently of its conscious core, if any. On the level of the player, the aim is for maximum "fire and forget" functionality, where the power "executes" upon activation with preferably little to no required input from the player (the option to cancel it upon command would be a nice bonus but is considered optional).

Last edited by mindbound; 11-20-2018 at 04:19 AM.
mindbound is offline   Reply With Quote
Old 11-20-2018, 05:05 AM   #7
Bruno
 
Bruno's Avatar
 
Join Date: Sep 2004
Location: Canada
Default Re: Programming with GURPS Powers

Clearly Duplication is threading, which isn't required for turing completeness but is a nice feature for any language :)
__________________
All about Size Modifier; Unified Hit Location Table
A Wiki for my F2F Group
A neglected GURPS blog
Bruno is offline   Reply With Quote
Old 11-20-2018, 06:03 AM   #8
Culture20
 
Join Date: Feb 2014
Default Re: Programming with GURPS Powers

Quote:
Originally Posted by Bruno View Post
Clearly Duplication is threading, which isn't required for turing completeness but is a nice feature for any language :)
“The server has a duplication limit of 1024 to prevent dupe-bombs; if you require more parallel processing, consider levels of compartmentalized mind per duplicate or contact the on-call sysadmin at 555-GURPS”
Culture20 is offline   Reply With Quote
Old 11-20-2018, 06:40 AM   #9
Anaraxes
 
Join Date: Sep 2007
Default Re: Programming with GURPS Powers

Triggered Delay is a favorite of mine as well, since you can specify a "rule" at least as complicated as "a metal object passing within a yard". Trigger does say "substance or condition", which leaves the door open as to exactly what sort of condition. But a condition to Trigger some trait probably is intended to be something more like "wounded" or "stunned", not arbitrary states of the external universe.

Accessibility is the king of condition-sensing. Even canonically, we have examples like "Only While Playing Trumpet", which means that the programming language can sense trumpets in the game world, can distinguish trumpets from other instruments (and maybe from coronets), and so on. The language's testing primitives are much more powerful than most programming languages support.

Also worthy of note is Environmental. Kromm's said this is the way to activate abilities that are part of a complex ability, rather than Link. So, you can use the state of an always-on ability as your program state, and use Environmental to activate and deactivate other conditions accordingly. Whether or not the ability is active is a bit, and any bit can set or unset according to any or all other bits.

Since we're talking about sensing true/false conditions in the world and setting other states, the high-level view of this computational model is actually much closer to a declarative language like Prolog than it is to a Turing machine or an imperative language (like most of the well-known ones). All you have to do is write down what's true about your problem when other things are true; then push the start button. Activating that start ability will probably take one turn (unless you buy Reduced Time for it), but all the rest of the ability activation has no delay, so the computation will complete instantly. (Take that, quantum computers!)

Snatcher allows you to "physically" implement the state and results of your computation in the game world. You can implement your UI displays and output this way. You might, for instance, Snatch giant colored letters and numbers from Sesame Street to spell out "Hello, world" or other text.

Just for fun, you can use Payload to hold your state objects in a pocket dimension. Then you Snatch other pocket-dimension-containing objects inside the first one, for a physical implementation of recursion. Make sure your Accessibility conditions respect the boundaries of those pocket dimensions, and you get a new set of local state variables with every push into a new pocket.

Last edited by Anaraxes; 11-20-2018 at 06:45 AM.
Anaraxes is online now   Reply With Quote
Old 11-20-2018, 07:42 AM   #10
mindbound
 
Join Date: Nov 2017
Default Re: Programming with GURPS Powers

Quote:
Originally Posted by Anaraxes View Post
Since we're talking about sensing true/false conditions in the world and setting other states, the high-level view of this computational model is actually much closer to a declarative language like Prolog than it is to a Turing machine or an imperative language (like most of the well-known ones).
Declarative style is more than fine! The goal is, after all, achieving some sort of "programmable" powers instead of trying to build a Turing machine after the exact mathematical specification (which would be perhaps an interesting exercise on its own but I'm also trying to aim for practical use at the table).

What I'm liking most so far, is that most of the proposed building blocks "have GURPS nature", i.e., are generic, flexible, and not tied to a particular setting or idea about the world. I'll think some more about these options and will try to build some example powers out of them to share here.
mindbound is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Fnords are Off
[IMG] code is Off
HTML code is Off

Forum Jump


All times are GMT -6. The time now is 07:25 PM.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.