This is a list of changes that might be made and features that might be added someday.
If you feel like implementing some of these, go ahead. They're in very rough order of priority - items at the tops of the lists are more pressing; ones at the bottom are unlikely to ever happen.
You can help!
- Move all documentation to the wiki.
- Improve introductory material. (Forth, vectors, strategy.)
- Suggest a ladder of sides to compete against.
- Sides should have a table of sides by rating.
- Document the most important sides on the wiki.
- Find an appropriate MediaWiki feature for blog-like content, to show recent news, tournaments, changelog, and maybe new sides.
- Move everything on the website to the wiki.
- Replace the current website with the wiki.
- Automatically generate pages for sides and tournaments.
- Make a site where users can upload sides (like the old Grobotland) which automatically runs tournaments and shows the results.
If you're looking for something to do, try fixing incompletely ported parts. Many of these are easy if you know the platform (or can RTFM).
- [Mac] Add a suitable icon. (maybe this one?)
- [Mac] Make the About item appear in the application menu. (This used to work.)
- [Mac] Store sounds as separate files, not resources.
- [Mac] Replace the remaining uses of long-deprecated resource files - get dialogs from nib files instead.
- [Mac] Make headless mode work.
- [Mac] Make building with makefiles (instead of XCode) work.
- [Windows] Support building with gcc under mingw instead of MSVC.
- Try a portable GUI tookit (gtk or wxWindows?).
- [Mac] Replace deprecated calls (including QuickDraw!) with more recent ones.
- [Carbon] Make cursors work:
- [Mac] Open all sides in a dropped folder.
- [Windows] Replace confusing Abort/Retry/Ignore dialog for
- [Windows] Make confirmation dialog work.
- [Windows] Make tournament length dialog work.
- [Windows] Make sounds work.
- [Windows] Make Rules dialog work. (Low priority, as it might be removed.)
- [Universal] Create at least a basic Java port, for browsers.
Views and UI Edit
- Menu item IDs shouldn't need to match position in menu.
- [Mac] Why is blitting to the screen so slow?
- Bug: framerate is irregular on Slowest.
- Bug: Doubletime sometimes shows garbage, and isn't available across multiple rounds.
- [Windows] Bug: cursor icon is often wrong (hourglass or window resize).
- [Windows] Allow opening sides from command line.
- Support graphing other statistics than biomass.
- Copy scores to clipboard instead of saving them to a file.
- Save window positions and states.
- Disable inactive next page, previous page and first page menu items when shared memory window is closed.
- Add more hardware variables to the debugger, and color-code them.
- Debugger should show multiple words on one line.
- Show overall hardware statistics in Types view when no type is selected.
- Bug: profile times are sometimes nonsense.
GBRosterView's framerate? (But it's private.)
- Move click-counting to
- Select next/previous side with arrow keys.
- Allow scrolling with arrow keys?
- Confirm (once) before using destructive tools during tournaments.
- Bug: following jumps far ahead of syphons and forcefields.
- [Windows] Bug: Closing a child window sometimes buries the main window.
Graphics and other glitz Edit
- Make more information visible: sensor results, sensor foci, engine use.
- Try inflammation/halos behind cells to indicate transient or rare conditions: birth, prints.
- Draw tails on bots to indicate velocity or engine-velocity?
- Allow cells to have a graphics box larger than their radius, so external meters and tails draw reliably at the edge of the viewport.
- Deprecate or remove cell decorations?
- Record territory, and draw it in the minimap instead of trails.
- Translucent smoke, explosions, forcefields.
- Alternate portal background? (What's the point?)
- Adjust sound volume and balance by viewport.
- Implement a rating system like lukelavalley's, that emphasizes performance against opponents of similar rank, so a tournament can include a wide range of levels without judging the top sides on their ability to kill Algae and beginners on their resistance to Big Bertha.
- Add a feature to include a specific side in every round, to make testing a new side against a large pool of opponents faster.
- Replace Rules dialog with loading a rules file (more flexible).
- Keep more statistics in history: survival, kills.
- Add breakpoints, or at least a break instruction that pauses if the cell is selected in the debugger.
- Add a better language for brains. (Lisp? Lua?)
- Report starting line numbers of unmatched compile-time words.
- Make forcefields and syphons move instead of dying and being recreated, so they can be usefully followed. (Either shot or robot might get deleted, so whoever keeps the reference will have to listen for this.)
- Profile and optimize. (Collisions and brains take the majority of the time. )
- Don't make decorations when no one's going to see them.
- More statistics: who killed who?
- More flexibility in sensors: filters, sorting, tracking?
- [Win] support profiling:
QueryPerformanceCounter(Who cares? External tools are better, and profiling needn't be cross-platform anyway.)
- Dubious cleanup: add world-in-use layer between
GBPortal. (viewpoint, tournament parameters, selection)
- Add fake
time-limit, so testing early-round performance doesn't change the behavior of sides that use the time limit?
- Allow variables to be initialized with labels, e.g.
#var MyFunctionPointer MyLabel&.
Rules changes Edit
We're reluctant to change the rules in ways that change the performance of existing sides. If you want to experiment with rules, I suggest implementing rulesets first.
- Support multiple rulesets. (Presumably
GBRulesetwould be a big struct containing all the rule constants.)
- Bug: shields reduce syphon effectiveness twice.
- More robust seed placement (avoid placing seeds close together).
- Find a better way to discourage large cells in combat than the current extra damage.
- Remove or fix shields. (absorb damage? what's the goal?)
- Add a little to the price of very small (enemy-)syphons and force fields to discourage their use as chafe. (Blasters and grenades already have this.)
- Fix forcefield balance, possibly by reducing stacking.
- Friendly syphons shouldn't show up on shot sensors.
- Experiment with stunners.
- Make shots last at least one frame. This might mean fiddling with phase order again.
- Physics experiments: dot-product engines? gradual weapon reloading?
- More documentation, including user interface, and the rest of the overview.
- Write tests for lower two layers. (Not urgent, since sides serve as test scripts with excellent coverage.)
- Provide more help for would-be porters.
- Port UI to Linux.
GBTournamentView, HTML output, and headless output?
- Use STL (especially containers) more.
- Replace pointers with references where appropriate.
- [Mac] Convert
FSSpecs to pathnames and use
ifstreamto load sides.
- Start with some standard sides already loaded, for the benefit of newbies?