MightyPirates / OpenComputers

Home of the OpenComputers mod for Minecraft.
https://oc.cil.li
Other
1.59k stars 432 forks source link

Forget HQM: Here Are Five Suggestions to Make OC *THE* Mod for Adventure Maps #700

Closed Eunomiac closed 9 years ago

Eunomiac commented 9 years ago

EDIT: Lucky number #700! I think we can all agree that's a sign.

I'm (yes, still) working on an adventure map, and OC is playing a bigger and bigger role in its design every day. It finally hit me a few weeks back that OpenComputers is the Minecraft Lua implementation for sophisticated adventure map design. Of the many Lua mods out there, none come close to offering what OC offers for this purpose: computer persistence, the Debug Card, component access via absolute address... the list goes on.

Put simply, OC is a game-changer when it comes to sophisticated adventure map design, with a potential that's hard to overstate.

I have a few ideas to capitalize on this even further, while also serving my own selfish map-designing needs which I happily offer you, free of charge, because I am a giver. (Then, I'll do my part to show everyone out there what a "Powered by OC!" / "OC Inside!"* Adventure Map can do.)

* other stolen slogans are available

(Because this got VERY long, VERY fast, I'll summarize the ideas first before getting into the details; I decided against splitting this into five separate issues because I thought that would border on spamming---but if you think doing so is preferable to this wall of text, just let me know and I'll happily close this and split it up!)

Quick (ish? ish.) Summary:

  1. Remove all Survival-Mode limits from Creative Computers and Creative Servers, going so far as to completely obviate the need for CPU, RAM or hard drive components.
  2. Unshackle Creative gpu, screen and hologram components as much as possible. Give them the highest max resolutions and color depths possible, let them set color palettes larger than 16, etc. (The 125x80 resolution limit on the Remote Terminal is one I'd especially love to increase!)
  3. Allow any (chunk-loaded) component, anywhere in the world, to be invoked and proxied by Creative Computers and Creative Servers, simply by referring to their address string.
  4. Recognize the Debug Card's deserved position as "the single most powerful tool for adventure map designers... ever... in the entire history of modded Minecraft". Then, turn it up past 11 by giving it OpenComponents-style access to a mod like WorldEdit Forge. (If you didn't hear a choir of angels burst through the clouds just now, you've either thought of this idea already, or you need to re-read this bullet and think about it more ;) )
  5. Protect programs from being permanently halted by server hiccups and other unforeseen events, by allowing map authors to control exactly what happens when errors are encountered, perhaps via a "reboot on any error"-type setting. (This might already be a feature that I simply don't know how to code for; apologies if such is the case!)

    The "Oh God, Oh God, That Was The SUMMARY?" Section:

    Recklessly Discriminate: Remove Survivor-Mode Limits from Creative-Mode Blocks
    • I submit that Creative-Mode Computers and Server Racks shouldn't be limited by the same game-balance mechanics that govern standard play. Here are the major "offenders" I could think of, though I'm sure I missed a few:
    • Memory (both hard drive and RAM) --- I've had to up the capacity of top-tier hard drives in the config to fit the XML lookup files I'm using to store data, which has the side effect of increasing the values for Survival Mode drives, as well.
    • Number of Component Connections --- One Creative system that could control everything would be lovely. System Resources? System Schmesources! I'm the map author, let me worry about that ;)
    • Internal Components --- Moving a bit beyond the above, how about a "Creative System" block that has no internal inventory at all? It can simply create "virtual" internal components (like gpu's and network cards) as it needs them, and doesn't require memory or a CPU to operate.
      Embrace the Rainbow! Reduce/Remove Limits on GPU, Screen and Hologram Components
    • To be honest, color in OC still kind of baffles me (mostly because I have only a vague notion of what "color depth" means). But I'd love to be able to create a palette with more than 16 colors, and I'd really love to prevent similar colors from being rendered as the same color.
    • Screen Resolution --- Notwithstanding outside limits imposed on OC, component screens/remote consoles accessed by Creative systems should be able to set the maximum resolution possible. (Did I mention that 125x80 limit on the Remote Terminal? It makes my soul hurt!)
    • ... and later, down the road... perhaps even introduce a "Creative Screen" block: Such a block would permit large multiblock monitors without having to change the Survival Mode limits in the config, and would be unbreakable by survival-mode players (much as Creative Computers/Racks are now). You could even restrict the "unlimited color depth/palette" feature to these Creative Screens, as well.
      Wires in Creative = Infinite Cosmic Power, Itty-Bitty Living Space
    • Since each component receives a unique address whenever it is placed in-world, is it possible to simply remove the need for wires when it comes to Creative Mode computers? It would be fantastic if the Creative Mode Server could be hidden away in the bedrock layer (or the like), and still control an array of monitors in the gameplay area above.
    • This is basically my Wireless Adapter suggestion, turned up to 11: Creative Mode systems can simply access any (chunk loaded) component, anywhere, by invoking its address---Adapters aren't needed at all.
      I For One Welcome Our New Debug-Card Overlords

The undeniable awesomesauce that is OC's Debug Card is... is... our language simply isn't up to the task of finishing that sentence. I mean, its potential for map designers cannot be overstated. As but one example, my map currently includes an entire ruined castle that animates in-world, magically reconstructing itself right before my players' eyes... using currently-available Debug Card methods. (Yes, it's laggy, but I mitigate that by holding my players captive---it's something of an intro movie. Regardless, "block animation" isn't the main aim of this feature, just a fun example. Script-controlled, large-scale world transformation in a Survival adventure map is where it's really at.)

Ack, my ADHD and enthusiasm combined in hyperfocus glory to make this far longer than I intended... and then my OCD compelled me to spend another hour editing it... and then my histrionic narcissism forced me to go and make all the headlines witty... BUT I'm glad I finally got this all down, as it's been percolating for quite a while!

I really, really think this is a niche OC has in the bag---not to mention, I'd promise my firstborn child in exchange for implementing almost any one of the suggestions above :)

Techokami commented 9 years ago

Well... it IS open source. Fork the repo, learn Scala, and get to it! ;)

Sent from my Windows Phone


From: Eunomiacmailto:notifications@github.com Sent: ‎11/‎28/‎2014 4:17 AM To: MightyPirates/OpenComputersmailto:OpenComputers@noreply.github.com Subject: [OpenComputers] Forget HQM: Here Are Five Suggestions to Make OC THE Mod for Adventure Maps (#700)

I'm (yes, still) working on an adventure map, and OC is playing a bigger and bigger role in its design every day. It finally hit me a few weeks back that OpenComputers is the Minecraft Lua implementation for sophisticated adventure map design. Of the many Lua mods out there, none come close to offering what OC offers for this purpose: computer persistence, the Debug Card, component access via absolute address... the list goes on.

Put simply, OC is a game-changer when it comes to sophisticated adventure map design, with a potential that's hard to overstate.

I have a few ideas to capitalize on this even further, while also serving my own selfish map-designing needs which I happily offer you, free of charge, because I am a giver. (Then, I'll do my part to show everyone out there what a "Powered by OC!" / "OC Inside!"* Adventure Map can do.)

* other stolen slogans are available

(Because this got VERY long, VERY fast, I'll summarize the ideas first before getting into the details; I decided against splitting this into five separate issues because I thought that would border on spamming---but if you think doing so would be worthwhile, please let me know and I'll happily comply!)

Quick Summary:

  1. Remove all Survival-Mode limits from Creative Computers and Creative Servers, going so far as to completely obviate the need for CPU, RAM or hard drive components.
  2. Unshackle Creative gpu, screen and hologram components as much as possible. Give them the highest max resolutions and color depths possible, let them set color palettes larger than 16, etc. (The 125x80 resolution limit on the Remote Terminal is one I'd especially love to increase!)
  3. Allow any (chunk-loaded) component, anywhere in the world, to be invoked and proxied by Creative Computers and Creative Servers, simply by referring to their address string.
  4. Recognize the Debug Card's deserved position as "the single most powerful tool for adventure map designers... ever... in the entire history of modded Minecraft". Then, turn it up past 11 by giving it OpenComponents-style access to a mod like WorldEdit Forge. (If you didn't hear a choir of angels burst through the clouds just now, you've either thought of this idea already, or you need to re-read this bullet and think about it more ;) )
  5. Protect programs from being permanently halted by server hiccups and other unforeseen events, by allowing map authors to control exactly what happens when errors are encountered, perhaps via a "reboot on any error"-type setting. (This might already be a feature that I simply don't know how to code for; apologies if such is the case!)

The "Oh God, Oh God, That Was The SUMMARY?" Section:

Recklessly Discriminate: Remove Survivor-Mode Limits from Creative-Mode Blocks
Embrace the Rainbow! Reduce/Remove Limits on GPU, Screen and Hologram Components
Wires in Creative = Infinite Cosmic Power, Itty-Bitty Living Space
I For One Welcome Our New Debug-Card Overlords

The undeniable awesomesauce that is OC's Debug Card is... is... our language simply isn't up to the task of finishing that sentence. I mean, its potential for map designers cannot be overstated. As but one example, my map currently includes an entire ruined castle that animates in-world, magically reconstructing itself right before my players' eyes... using currently-available Debug Card methods.

Auto-Rebooting: the Solution to All of Life's Problems

A setting to automatically reboot the computer if it encounters any form of error; pretty much what I said in the summary. I don't want to belabor this in case I'm just being dumb and it's already a feature. (Apparently, I was more than happy to belabor everything else, though! :D )

Ack, my ADHD and enthusiasm combined in hyperfocus glory to make this far longer than I intended... and then my OCD compelled me to spend another hour editing it... and then my histrionic narcissism forced me to go and make all the headlines witty... BUT I'm glad I finally got this all down, as it's been percolating for quite a while!

I really, really think this is a niche OC has in the bag---not to mention, I'd promise my firstborn child in exchange for implementing almost any one of the suggestions above :)


Reply to this email directly or view it on GitHub: https://github.com/MightyPirates/OpenComputers/issues/700

Kubuxu commented 9 years ago

@Techokami Sorry BUT I hate when people say that. It is like shouting "There is the door. We do not want you here!".

Eunomiac commented 9 years ago

I actually did give it a go, heh, and got as far as connecting this part with this part (for the purposes of upping the remote terminal's resolution)... while feeling like a toddler staring pensively at the control rods of a nuclear reactor: Sure, they look simple enough... but I'm sure as hell not gonna start fiddling with 'em ;)

Techokami commented 9 years ago

In this part the part you want is "screenResolutionsByTier(1)" - note that internally, Tiers are of index 0. So changing this to "screenResolutionsByTier(2)" will make remote terminals have a Tier 3 screen.

As for most of your requests, they seem to be pretty overpowered and go beyond the scope of OpenComputers. But, if you want a WorldEdit driver for insane gamebreaking chaos, take a look at this example mod, which shows how to make a driver. So your driver mod would add a block, and when interfaced with a computer, it'd give you control over WorldEdit like you so crave.

And as for lifting limits on Creative Tier things only, you can do that in your own mod as well. Just add a new CPU/RAM/HDD item, and give them the capacity levels you want. Though, you really don't need to do that for HDDs. Did you know that if you manually add files into the HDD's folder in the world save, it won't care if it holds more than the max capacity? And since you're using Creative Tier cases, you can have one drive with all your read-only XML data and a boot drive with the OS and other writable spaces.

And finally, for increasing graphical limits, I asked this loooong ago when I was a newbie here and @fnuecke said no. I don't think that's going to change.

Eunomiac commented 9 years ago

As for most of your requests, they seem to be pretty overpowered and go beyond the scope of OpenComputers. But, if you want a WorldEdit driver for insane gamebreaking chaos ...

I suspect you're missing the central thrust of these suggestions. Each and every one of them is meant solely for use in Creative Mode, with an eye towards map authorship. Criticisms of "overpowered" or "game-breaking" are completely irrelevant when you're the omnipotent designer of the game world. I'd further argue that "scope"---on its own, without attendant concerns of complexity creep, diluting key themes, etc.---is a vague, arbitrary, and unnecessary restriction that does little but damage OC's potential in an area where it is already the top performer.

Finally, with respect, I agree with @Kubuxu: Idly suggesting that I "learn how to mod and do it myself" is unfairly dismissive, not to mention contrary to the spirit of an issue tracker that welcomes feature suggestions.

Now, considering the time and effort I put into the initial post, I would please ask that we don't further distract the discussion away from the merits of the features I suggested---what could work, what couldn't, and why.

fnuecke commented 9 years ago

Allright. So. First of all: wow. Second of all: wow. That's a lot of text ;-) I only read the summary so far, I plan to read the rest later, but wanted to give some initial feedback and clarify some things. If I'm making an argument you already dismantled later in the text, please forgive me for that ;-)

One thing up front: I appreciate your enthusiasm, but I'm not quite sure yet whether some of these things might be better served by a dedicated addon mod. That said, some of this may well be feasible.

  1. From what I understand you want a computer that can just be plopped down and works, yes? I'm pretty sure I won't add something like that, even if it's creative, simply because it deviates too far from how OC behaves otherwise. I'm open to creative "workaround" solutions, though, such as automatically "preconfiguring" creative cases if they're placed while sneaking or some such thing.
  2. The current upper limits are pretty much technical, so upping those any further won't happen. Adding higher/creative tiers of the remote terminals/tablets is something I might consider, but I'm not sure they'd make very much sense - there are comparatively few people who have screens with a resolution that can display T3 screen GUIs without downsampling the text, making it pretty much unreadable.
  3. Addressing components from "anywhere" would require some kind of global registry, which, again, isn't something I'll add. There is still your ticket for a component that allows bridging networks directly, which would probably serve as a sufficient workaround for this? (#475)
  4. I'm assuming here you can expect WorldEdit or such to be present, yes? In that case, the recently added debug.runCommand should be sufficient, no? Since it basically allows interfacing it, just via commands - sure, there are some things that need clicking in the world, but AFAICT those are usually comfortability stuff?
  5. Since we're talking "maps", I guess editing the config is out of the question? (for increasing timeout values, i.e.) I suppose a "reboot on error" option might be useful in general. It'd perform the reboot after some delay, to avoid this being a problem when the computer itself crashed because it timeouted, though. I'll have to think about that.
Eunomiac commented 9 years ago

EDIT: Ugh, sorry, I know: I'm incapable of saying anything without a wall of text! I'd much rather you code than wade through my rambling, so here's a TL;DR that should cover all the bases; only read ahead if you need more info about something :)

  1. re: "Plop & Play Computers: I'm mainly campaigning for removing the Survival-mode restrictions (i.e. memory, color depth, etc.) from Creative-mode systems, so that only technical limits govern their maximum capabilities.
  2. re: Remote Terminal Resolution & Color Depth: T2 (80x25) to T3 (160x50) is a 400% increase in screen size, which is quite a leap. If T2 is too small for Remote Terminals and T3 is too big, maybe an intermediate tier---perhaps only for Remote Terminals, say 128x40---would work? As for color depth, is anything preventing 8-bit depth for Remote Terminals?
  3. re: Universal Wireless: I thought there already was a global registry; since there isn't, I withdraw this suggestion (and yes, that Wireless Adapter would be wonderful---not to rush you!)
  4. re: WorldEdit: Did not know about debug.runCommand, and that solves absolutely everything---I think I offered you my firstborn child in thanks. I also give several examples of the awesome potential you've unlocked for map designers, and plead with you to rename "Debug Card" to something sexier.
  5. re: Reboot on Error: By "map", I meant Agrarian Skies/Crash Landing-style "adventure modpack"---so a config setting would work. Something that will let me release to the public a map with a bunch of running programs with the confidence that they'll handle their own errors as much as possible (by automatically rebooting, at least a few times, and only displaying error messages to my players as a last resort).

And here is the original response, in all of its wordy glory.

I'm not quite sure yet whether some of these things might be better served by a dedicated addon mod.

I did consider that, but taking a second look, I started to see most of these suggestions as tweaks/extensions/removals of existing mechanics, rather than entirely "new" features, and I assumed the former would be easier to implement from inside OC (i.e. I intuited that it would be easier to, say, remove the memory limits on Creative Computers from within OC, rather than create a separate mod to do it). But I'm certainly no expert at coding; this is all just speculation on my part.

... you want a computer that can just be plopped down and works, yes? ... I'm open to creative "workaround" solutions, though, such as automatically "preconfiguring" creative cases if they're placed while sneaking or some such thing.

That was where I landed, but the main thrust of the suggestion was to eliminate any limits that are imposed for balance reasons and the like. Technical constraints, I'd argue, are what should govern the upper limits of Creative Mode systems.

Adding higher/creative tiers of the remote terminals/tablets is something I might consider, but I'm not sure they'd make very much sense - there are comparatively few people who have screens with a resolution that can display T3 screen GUIs without downsampling the text, making it pretty much unreadable.

I think the huge difference in the resolutions of T2 and T3 screens (a fourfold increase in screen area) puts the Remote Terminal in the unenviable position of Goldilocks---T2 is too small, but T3 is too big. Perhaps an intermediate tier for Remote Terminals---say, 128x40---would be "just right"? (Monitors can already do this, of course, by upgrading to a T3 and then reducing their resolution from the maximum, but Remote Terminals are unable to expand beyond 80x25.)

Addressing components from "anywhere" would require some kind of global registry, which, again, isn't something I'll add. There is still your ticket for a component that allows bridging networks directly, which would probably serve as a sufficient workaround for this?

Absolutely. I assumed (well, "hoped" would be more accurate) that the long address strings of components meant that they already were being stored globally, and that "free wireless" would just be a matter of looking up those addresses in some master directory. So scratch that idea ;)

I'm assuming here you can expect WorldEdit or such to be present, yes? In that case, the recently added debug.runCommand should be sufficient, no? Since it basically allows interfacing it, just via commands - sure, there are some things that need clicking in the world, but AFAICT those are usually comfortability stuff?

You just won the Internet. Now you absolutely must give the Debug Card a sexier name: It is now the single most powerful item in all of modded Minecraft, and should become the poster child for exalting OpenComputers as "THE Adventure Map Mod". The ability to run WorldEdit craftscripts via Lua control... do you fully appreciate how awesome this is?

OC + WorldEdit is probably the most exciting thing to hit Minecraft since the Crafting Bench. Would I want this power in the hands of my players? Hell no... but this is the dawn of a new age for map designers!

Since we're talking "maps", I guess editing the config is out of the question? (for increasing timeout values, i.e.) I suppose a "reboot on error" option might be useful in general. It'd perform the reboot after some delay, to avoid this being a problem when the computer itself crashed because it timeouted, though. I'll have to think about that.

Sorry, I talk words sloppy. By "map" I meant "adventure modpack", in the style of Agrarian Skies or Crash Landing---so config options are certainly on the table. And yeah, I considered the potential problem of an infinite cycle of rebooting and crashing as well (I considered looking at os.time() to ensure the computer wasn't restarting too frequently, but I've no idea if that's feasible, let alone the best way to handle it).

You've made my year with debug.runCommand. As promised, my firstborn child is yours.

lordjoda commented 9 years ago

To go slightly offtopic here ;) but if you are finished with this MAOAM (Maximal Awesome Opencomputers Advendture Map) you have to tell us, because we definitly have to let's play it ;)

Eunomiac commented 9 years ago

(I edited in a "TL;DR" to my previous reply; I can't say anything without a wall of text! As for this response, it's an admittedly off-topic reply to @lordjoda; keep reading only if you're interested in more info on the map I'm working on!)

To go slightly offtopic here ;) but if you are finished with this MAOAM (Maximal Awesome Opencomputers Advendture Map) you have to tell as, because we definitly have to let's play it ;)

Don't get too excited, I don't want to disappoint :) Those WorldEdit examples were just off the top of my head, I'm not planning to implement anything nearly as dramatic. I am really pushing the graphical capabilities of the Remote Terminal, though: It's the primary tool players will use to plan their designs---since world-building, creativity and aesthetics are as much a part of the gameplay, as the survival and technical hurdles you're used to from other adventure map-packs.

The Challenge: Rebuild "Hex"---a giant hexagonal city divided into six triangular "Districts"---from the ruins of its previous incarnation. You can design each District however you like... almost. The challenge arises from several (often competing) constraints that you must adhere to. My goal is to inspire creativity even in people who claim not to have any, by invoking the (scientific!) notion that the imagination is in fact stimulated when limitations are placed on it.

The Constraints: There are several of them, but the most important have to do with the Districts. First, each District must be as distinct from the others as possible (i.e. if you're using BC pipes in one District, find different ways to transport items in the other five). Second, each District must express a combination of two elements (i.e. Earth, Air, Fire, Water, Order, Chaos)---and you have to decide what each combination means:

Mmmm, no, this post doesn't quite live up to my wall-of-text reputation. So here's a thousand more words (and yes, ThaumCraft's Thaumometer was indeed my inspiration):

map

lordjoda commented 9 years ago

Well now I'm REALLY excited!

fnuecke commented 9 years ago

I think with this (wake-on-redstone/LAN) this should be pretty much covered.