11-19-2018, 05:42 PM | #1 |
Join Date: Nov 2017
|
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:
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. |
11-19-2018, 07:07 PM | #2 |
Join Date: Feb 2014
|
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. |
11-19-2018, 11:02 PM | #3 |
Join Date: Sep 2006
Location: Luxembourg
|
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. |
11-19-2018, 11:04 PM | #4 | |
Join Date: Aug 2018
|
Re: Programming with GURPS Powers
Quote:
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. |
|
11-20-2018, 12:19 AM | #5 |
Join Date: Jun 2005
Location: Lawrence, KS
|
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. |
11-20-2018, 04:12 AM | #6 |
Join Date: Nov 2017
|
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.
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. |
11-20-2018, 05:05 AM | #7 |
Join Date: Sep 2004
Location: Canada
|
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 |
11-20-2018, 06:03 AM | #8 |
Join Date: Feb 2014
|
Re: Programming with GURPS Powers
“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”
|
11-20-2018, 06:40 AM | #9 |
Join Date: Sep 2007
|
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. |
11-20-2018, 07:42 AM | #10 | |
Join Date: Nov 2017
|
Re: Programming with GURPS Powers
Quote:
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. |
|
Thread Tools | |
Display Modes | |
|
|