[an error occurred while processing this directive] [an error occurred while processing this directive]

New Year's Day 2001 MindRover Wishlist:

NOTE: The following describes some suggested features for a new MindRover with the fictitious version of "Q" - but as though they already existed. This is an illusion, but makes for nice copy. :-)


New General Game Features

Unlimited Simultaneous Rovers

MindRoverQ allows the player to put as many rovers together in one environment as he (or she) has the hardware to support, based on the precept that some end users are more interested in having a lot of units than they are in the framerate, and may be running on far better hardware than that on which the game was developed. This also open the door to serious experimentation with inter-rover radio components.

If running 371 of the little buggers together seems a little slow, or fails to start with a complaint resembling "Insufficient memory for 371 rovers with total of 15971 components", then just scale back the vehicle list or use simpler vehicles. As a convenience feature, the vehicle screen include the number of components of each vehicle in its listing.

Scenario Rover Count Limits

In MindRoverQ, scenario rover maximums are suggestions only. The actual maximum number of rovers in a given environment is limited only by systems resources. Note, however, that a given scenario will only be checked off as being completed if the suggested rover maximum, and any minimum given, is adhered to.

Arbitrarily Named Teams

Campaign-Style Scenarios

The following scenarios have been provided to demonstrate the more advanced features of this version of MindRoverQ:

Full OpenGL Console

Players should now be able to read the console and all other text in all resolutions from 800x600 to 2048x1536 and beyond, due to the entire game now being in OpenGL, with full rendered, textured consoles and text. Further, the default textured text size and font can be adjusted independently of the screen resolution, so that any player can adjust the text to the size and font most appropriate to his needs.

Rover Skinning

Vehicles can be marked both for basic identification and team purposes.

Wiring Action: Prune Effectless Wiring

A GUI action in the Wiring panel which removes all logical components which are:

...and removes them. This is repeated until no changes occur. This can be called on the whole design with LSIs, whole design excluding LSIs, or on a given LSI.


New Components

Component: Resource Accumulator (physical)

Trigger this to have a rover load any colocated resources into itself. The accumulator will load resources up to the maximum weight limit, leaving any remainder for possible future pickup. Resources can be located with a loot finder,

Component: Filter Loot (physical)

This is similar in function to the Filter_IFF, except specialized for discrimination among the various type of loot.

Component: Heal Other (physical)

Use this very short range directional device to heal other units in its area of effect. Also works on unfriendly rovers, so be sure to verify your target!

Component: Constructor (physical)

Wire this together with a Resource Accumulator and a Heal Other to construct new rovers from collected resources.

Component: Thrusters and Vertical Mounting (enhancement)

This version of MindRoverQ supports vertical mounting of the Thruster component.

Component: Broadcasts and Event Types (enhancement)

This version of MindRoverQ supports more broadly-functional Broadcast components, which now fully support the Source Property aspect of wires connecting them to other components.

Component: Level (physical)

The Level component output an real number between [-180,+180) indicating rotation from vertical (0) along the component's primary axis. It's designed for use in balancing the thrust of multiple vertically-mounted thrusters.

Component: Rotor (physical)

Notionally this could either be a counterrotational dual-rotor system (no tail rotor needed), or the more traditional helicopter style with a tail rotor without changing the component attributes.

Component: Timed Rocket Launcher

Similar to the standard Rocket Launcher, except for the addition of a Timer attribute, which causes a fired rocket to automatically detonate after traveling for a set time. Use this attribute together with the RocketSpeed attribute to detonate a rocket at a predetermined distance. Slower and larger than a standard Rocket Launcher.

Historical note: This component allows the full (except for the actual programming) emulation of the seminal, Apple ][-based programmable robot combat game from the 1980s, in which each of up to five tanks had the equivalent of a Timed Robot Launcher, Sonar, Hover chassis, x/y thrusters, HealthSensor, and a FilterIFF). I think I still have my programs for the robots somewhere...

Component: Interconnect (logical)

A logical component marking a point in a wiring diagram to which a particular physical component should be connected. A default component can also be specified.

Example use:

  1. Build an LSI to connect a Sonar and Filter_IFF to a Rocker Launcher and a Laser so that the weapons fire when an enemy is detected. Add a Timer so that the Laser doesn't fire until one second after the Rocket Launcher does, so as to have both impact the enemy more simultaneously.
  2. Use Interconnects in place of the physical components (since you can't put the actual hardware components on the LSI).
  3. Save your design.
  4. Select a fresh, empty vehicle in the Vehicle console.
  5. Drop your LSI in the Wiring console.
  6. Use the Install Missing Hardware button.
  7. Notice that a Sonar, Filter_IFF, Rocket Launcher and Laser have appeared in random positions on the rover in the Vehicle console.
  8. Use the Connect Interconnects button.
  9. Notice that the physical components now have thicker, distinctive lines connecting them to the Interconnects.
  10. Remove the Rocket Launcher.
  11. Notice that the line which connected it to its Interconnect is also gone, and that this Interconnect is therefore now effectless.
  12. Use Prune Effectless Wiring.
  13. The Rocket Launcher's Interconnect disappears from the LSI, which has acquired a new version number and is saved to a new .lsi file on disk.
  14. Notice that the Timer has also been stripped, since the only component it effected (the Interconnect) was no longer present.
  15. Rearrange the physical components on the rover to taste, then try it out!

Component: LSI - Large Scale Integrated Electronics (logical)

Design a new logical component out of the existing ones,

Component: Net Socket (physical)

Net Sockets function similarly to the newly-enhanced Broadcasts except that incoming Events are translated into protocol and sent to a separate process on (generally) another computer elsewhere on the Internet.

Protocol

Note: A PERL module supporting this protocol is available from our website and from CPAN (www.cpan.org). This can be used to simulate remote-robot control, such as remote mapping, as well as to bring more serious computing force to bear on the panoply of problems facing rovers at the Europa Project. User control of a rover, by keyboard, mouse, spaceball, etc., could also be implemented by this mechanism.

  1. Each connection rover creates a new connection to the remote host and port, the server for which would be implemented typically in C or PERL using the listen and accept calls.
  2. A given rover's connection is shutdown if the rover is destroyed.
  3. The initial negotiation sends the login and password in the colon-delimited format:
    roverlogin: vehicle-name : login : password
  4. A conforming server should respond with the following,
    mindrover-accepted: vehicle-name
  5. Either the client or server may initiate close of the connection after sending:
    shutdown
    Although server code should handle the case of connections dropped without "shutdown" having been sent.
  6. The event message form is based on an individual component name, not the type, allowing different identical objects to be specified individually:
    event: component-name : attribute : value
[an error occurred while processing this directive]