=== Future CW wishlist === Curating [ideas] into a consolidated list here[...] might be a good idea. Of course, [...] not all ideas will find their way into the next game. Comment format suggestion: Comments on suggestions can go in the next level of indenting, prefixed by your name. We have several styles ongoing on currently, this is the most readable for me (GM). Maybe try to keep the comment indent flat, as nested comments damage readability. ---- == Scripting (4RPL ) == "4RPL", pronounced "Forple"((Provisionary name, Virgil liked that)) * Defined execution order. In PF, detecting a custom menu click can take a full three frames. * Global variables. * A command console and stack visualiser. Good for learning and quickly changing global params in maps. * Fiddling with tech/upgrades. Use case: Upgrade pickup that automatically gives tech. * Selection detection, selectability. Good for custom units. Possible (user-triggered) event functions :select, :multiselect, :deselect. If not user-triggered, then the scripts should take care of it. * Expose to nRPL all quantitative aspects of the game, analogous to Aether in CW3, energy levels, etc. *Default unit properties (Build cost, fire multiple) *Energy levels, build fraction *Movement speed, sight/fire range * Alternate control mode. Mouse/keyboard controls lockable independently, and UI show/hide. * Supposing the signature connection graph, a native RoutePacket command. * Sorro: would love to know more: Can you clarify? * GM: Pass two UIDs (Current node, target node), run C# A* pathfinding over the network, return either a list or UID. Probably needs GetConnected to check if two nodes are still linked. * GM: SetConnectionLength [ UID UID Length - ]. Set to 0 to destroy the connection. Normal length would be the Euclidian distance, but Relays or "gates" could use this. * GM: Also GetConnectedToCommand, so that custom techs don't need to link to a Shield Key. * DamageCreeper that works on AC * Can't this be done with a negative damage on the same command? * GetNearestGroundEnemy or similar has an option to prefer same terrain level (a la pulse cannon) * native mortar style targeting (deepest creeper in range - inefficient and tedious to do manually in xRPL) * Set upgrade levels even for disabled upgrades (if upgrades will be a thing) * Suggested: SetTechLevel, SetMaxTechLevel. The former overriding the latter, but both being visible. -1 for Disabled/invisible. * Integrate custom upgrades to default list * GM: Tricky, like all UI. An OWP Core with GetTechUIShowing can do this. Assuming tech isn't, say, beacon-based. * systems in place for custom units. UnitPlayerControlled, UnitIsDisarmed, UnitCanMove, UnitCanTarget, etc. perhaps some way to create integrated custom UI. * GM: Best custom UI is IsSelected and a blank UI panel, save for the standard four buttons. Hooks for standard unit commands might be nice. SetUnitIsSelectable and SetUnitIsSelected (base as well as Guppy, say) would be good, too. * SetUnitCreeperDamages. Possibly better script-implemented. * Create new spatial hashes for custom weapons. Add units to a hash, auto update on move. * Better (more efficient) unit querying. GetAllUnits, GetAllEnemyUnits, GetAllLandedUnits, GetAllFlyingUnits, GetAllUnitsOfType, etc. Each stored as global lists updated when a unit is created or changes state (or upon map load). * GM: Suggesting GetUnitsWithScript..., list wrapped in array. * QueueTrajectory (object moves in a 3D parabola with specified height) * GM: Easy boilerplate, which perhaps could come as a "sample script"? * later statement (like "else" but for "once") * Data storage for custom campaigns where one map affects the rest * How would you control for who writes to what part? Interesting, but needs careful thought. * :destroyed could have a friend called first, :deleted, for player deletions. * Set/GetUnitIsEnemy - allow player type units to be enemy (or neutral) without heavy scripting (aka enemy mortars and cannons) * As for neutral units - units cannot be selected until connected to power grid or the likes. * GM: Scriptable in CW3 for pre-placed units (linked to a Shield Key) or all units (requires packet to activate). * Features from the [[https://knucklecracker.com/forums/index.php?topic=22809|PRPL+ compiler]] built-in, so that a 3rd party application isn't needed for compilation: * Local variables: eigter implemented by simply renaming on compilation, or preferably have each function invocation have it's own variable heap, so that recursive functions are possible. * Code including: easily reuse the same code in multiple scripts, without copy-pasting * QoL improvements such as multiline comments and %blockstart, %blockend nothing-doing keywords that can be used for block folding in Notepad++ * GM: Or use #block and #endblock, perhaps? * 4RPL debugger: a build-in debugger for code inspection, which would be faster and easier to use than a 3rd party program. * GM: Your PRPL debugger is the kind of thing you meant, kajacx? * stdout: Consider allowing map maker to create custom units like ParticleFleet. Units would have modules that can be placed. Blaster, Mortar, AC Sprayer, shield, etc. Example unit might carry 3 blasters, one mortar, and a beam. A energy storing module would be super handy. * No more pixel/cell coordinates madness, just use the cell coordinates for everything, 1 cell = 1 field tile. *TLFP: Opening power/energy to be produced in 4RPL ---- == Non-scripting == * Custom character names and images * Perhaps incl. unused PFE characters, or a character creator thingy that makes character images in the style of the game, so that people don't just do the "grab random copyrighted photo" thing * Shield Keys. (Inter-map pickup) * Map Editor grid, ruler. * Import PNG to create map. PNG image automatically converted by game into terrain for easier map creation. * "Flattened"/"Vertical" view for easy terrain editing. * Visible connection between unit(s) and the relevant spawner. (Probably on mouseover or selection) * Unit waypoint movement (May already exist) * Distinct edit mode. This will save on the accidental commands which the PF panel-on-map arrangement is prone to. Trying to type something with a P in it is an egregious case. Also, perhaps, tabbing through inputs? * Possible mechanic: Fog of war. Maybe LOS based, maybe with "Light level" and "Fog level"-s modifiable with scripting. * In-game rendering for custom 3D units * Simultaneous landing option: Once everything has flown to the correct spot, then everything lands at once. Not sure how to do UI, and 3D terrain would affect this too. (I love this idea-stdout) * Additional Game Modes : * Endurance Mode - Increasing creeper spawn rate with time, survive as long as possible. * Earthquake/Meteor Storm mode. * PaC and Sleeper are probably coming. * No-rebuild mode? Possibly intermixed with normal units. * All emitters/nests/spore towers should have much more details on mouseover, perhaps in a popup box like the ships in the left-hand build menu of PF. Show ANY information, including delays until initial emission, runner health/speed/max amount, spore building, spore power/health, etc. * Deal with stacks by what means? * If game has spores, allow spore health. Very strong or very weak spores. * Different terrain brushes. Square, circle, diamond, scatter, others? * Smooth terrain tool * Change cliff side texture * Naval units???? *GM: I'd like to see fishing in an AC lake. * Stun creeper momentum weapon * things to take advantage of the more-3Dness, eg. Tunnels? * GM: Lag factory. Might still happen, but the last video still had the Creeper sim in 2D-grid, just shown differently. (AFAIK) * Erodible terrain. Like the terrain in CW2. * zero-sum terping? * Settable, but I like it. How to specify source? Avalanches possible? * Buried artifacts * GM: Scriptable * If using PFE style conversations, a way to copy/paste/export an entire conversation. * copy/paste/export unit formations, terrain structures. * Different "thickness" of creeper. Allow emitters to have a setting to indicate a scale of 1 to 100 for viscosity of the emitted creeper. 1 is fast like water, 100 is as thick as molasses. * Sorro: I'm assuming you mean possible settings - 1 setting for all creeper map wide. Having different pools of different viscosity on a single map would be cool too, but that would increase complexity, no? * GM: If you allow mixing, it might not be so bad. But I'm not the one trying to write code. * Creeper rain. Would be caused if too much creeper get evaporated by weapons or if creeper is too thin. Air units would also take damage if flying into a "Creeper storm". There would also be a setting in the map editor to enable/disable this. * Weather station, atmosphere setting. Or just GetTotalDestroyedCreeper. * Sorro: If we're going to go with weather - water spouts that pull creepr up and rain it back down * From an old CW3 suggestion: Tech points for unit unlocking. * C&C style tech tree: Need a CN to get a Collector, a Collector to get a Relay/Reactor, and so on. * Variable counts for unlocking, 10 collectors unlocks Relay building, or one more Relay per three Collectors. * Or, push it off to scripting-land, with functions to g/set the number of X built, alive, destroyed, deleted, building. * Possible Enemies: * Unit that shoots creeper a-la plasma bugs (Starship Troopers) * Thumper enemy. If there is any creeper near the thumper when it thumps, then the creeper will move away from the thumper as a wave. * Phantoms from CW2. Goes through terrain. A good enemy for underground maps (If that ever becomes a thing) * stdout: cool end-game CW1 style graphs showing creeper generation, energy usage, etc. * stdout: Game saves all actions player takes, allows to save and export a "Instant Reply" movie that can be watched. Domonik, EA and AK could share their playthroughs via the forums. * Suggestions for new player units * Packet Factory/Packet Lathe: Uses Energy (Not Packets) and creates packets from the energy. Expensive to build and cannot move. ---- == General User Interface == * Having lived with limited Internet access, I think there's much in the games score submission, etc. that can be improved. My thoughts are a "personal log" of played games and on this an indicator if best score on that map has been submitted to not. Also makes it easy to revisit maps played recently that one might want to replay. * I see regular freezes of seconds or more when opening some CW3 menus. Maybe just-in-time metadata lookups, and an option for a non-blocking server query? * Map rating system * Maybe set a minimum # of ratings before the rating is displayed on the map - lowers the effects of early bad ratings affecting people's expectations. * Rate-after-beating-map panel. * Ratings for difficulty and quality, or a different rating group for "won map" * Any large menu panel with exactly one option (as the PF menu) to react to image clicks. [[http://knucklecracker.com/forums/index.php?topic=21706.0|Topic]] * Better map search, integrating author, date, etc. as separate search fields rather than blah:thing, etc * I still like the current system, how often do you use more than one? * Map tagging system, users may vote to add new tags to a map or remove tags that are inaccurate. * Complex, is it worthwhile for the effort? * Original mapper able to come back and edit the map description/tags if he realizes he forgot something. * Also thumbnail, in case it was uploaded with invisible units shown, custom UI visible, etc * Menu/Advanced/Extract Map Resources - this would create an editor folder with the relevant map, images, and scripts. * Separate the text overlay for stacked enemy structures so they can all be seen (like when an emitter and a spore tower occupy the same place. In CW3 you can not read all the different texts.) Suggested by Domonik. * A way to check what counts for victory in the editor. Maybe a red/yellow/green floating icon in edit mode - red counts, yellow doesn't, green is friendly. ---- == Questions to Virgil == * Will CW4 continue the tradition of Energy, Ore, Aether? Or will you increase the # of resources to manage for new units? * Will fly units be damaged if they fly through high altitude creeper? * Will players be able to set flight height of units? * How will custom unit graphics be specified w/o bloating save files. * Is the Creeper sim running on a GPU? * A: No, push delays make it worse rather than better. * Talking about game file sizes. * How large can we expect the files for customs map to be? * Is it big enough to matter to most of us for up/download? * Game requirements? I oddly remember you saying similar to PF.