Oolite Changelog

What's new in Oolite 1.82

Jun 25, 2015
  • Rebalanced combat
  • The combat balance in 1.82 has been significantly reworked to make the early game a bit easier for beginners, while still allowing plenty of challenges in the later game. AI responses to many tactics have been made more realistic - sometimes benefiting them, sometimes not! - and missile and laser performance has been tweaked to make fights last a bit longer and reduce the chance of the player being destroyed in seconds before they realise the danger.
  • Graphics and interface upgrades
  • We've made some improvements to some of the graphics and interfaces, with the main one being the fully zoomable and scrollable galaxy map, which replaces the separate short-range and long-range charts. Route plotting has also been improved: with the Advanced Navigational Array, you can set a route to the other side of the chart, and then jump along it a step at a time without having to re-plot.
  • We've also made improvements to multi-monitor support, explosion graphics, and planet textures, and introduced a "field of view" setting to Game Options.
  • The Expansion Pack Manager now lets you view additional information about packs (press 'i'), filter the list in various ways (press 'f'), or extract an installed pack to an OXP in your AddOns folder so that you can easily look inside it and customise it further (press 'x').
  • New expansion pack possibilities
  • Expansion pack authors now have many more options available to them for editing data which was previously hard-coded. As always, every Oolite release is more customisable than the last - here's some of the new options:
  • Market and trade expansions can now define entirely new trade goods, with improved features for station OXPs to handle these goods. Economies can be completely rewritten - you're no longer limited to eight economies in a single Industrial to Agricultural line.
  • GUI settings, colours, and display styles can be extensively customised through a new plist.
  • Editing of system information has been significantly extended, with many more properties open for customisation - all the way up to the system coordinates - and an enhanced management and conflict resolution system for these properties to make it easier for expansions to coexist successfully.
  • More HUD options, including runtime-editable image dials.
  • The implementation of many core equipment items has been rewritten to allow much more customisation.
  • In the OXP Developer builds, the OXP Verifier has a lot more syntax checking of key files without having to start up the full game, and various deprecated practices will be logged to help you keep your OXPs running smoothly.
  • As usual, lots more JS properties and methods for additional flexibility.
  • All of this additional functionality can be extremely powerful, so as well as using it carefully in the normal Oolite universe, the Scenario support has been significantly upgraded to let expansion authors make full use of it as their imaginations permit.
  • Expansion packs can now be restricted to only load in their own Scenarios, which means you can make much bigger changes than before without needing to worry about compatibility with other packs, and do things which just wouldn't have worked before.
  • Make a mini-series of mission OXPs which wouldn't work if the player could bring their own ship and experience, or wander off mid-mission to go and trade for a bit.
  • Set the player in the middle of a major war between powers with definite front lines, regions, and battles - can they still make a living as a trader, pirate or bounty hunter when there's a full-scale Thargoid invasion on, and hundreds of systems have already completely fallen to them.
  • Completely rewrite the galaxies, ships, equipment and rules to make your own new space game with the Oolite engine.

New in Oolite 1.76 / 1.77.1 Beta (Oct 12, 2013)

  • Bug with planetary cloud display fixed
  • Cargo/Passenger contracts correctly report premium/advance again
  • Fix to escort scan class initialisation
  • Fix for mission screen not allowing exit when HUD off
  • Fix quaternion constructor to produce identity quaternion as documented when called as new Quaternion().
  • guiScreenChanged now fires on transition when launching
  • Yaw and velocity are now also zeroed when launching from a station
  • Autopilot status reset on death
  • Regression: HUD n_bars now works again
  • Bug with NPCs continuing to lock on dead ships fixed
  • Laser shot positioning fixed
  • Bug with manifest checks in guiScreenChanged when launching fixed
  • Reasonably skilled pilots will now remember to look where they're going when fleeing
  • Shields now also protect subentities
  • Edge-case for damage to main station fixed
  • Frustum culling over-enthusiasm fixed
  • Some 'ghost' ship bugs fixed
  • Fix mission screen crash with numeric choice keys
  • Fix bug with cancelling galactic jump by script
  • Fix bug in validation for station interface creation
  • Use correct types in JS Station.market object
  • Fix bug with docking with stations where dock is very slightly off-axis
  • Fix contract reputation calculations so that negative rep works properly
  • Fix inconsistencies with cloaking device behaviour
  • Fix calculation of heat damage to subentities
  • Fix updates of energy, laser temp, alert condition related to autopilot
  • Fix for crash when pressing up on long manifest screen
  • Fix conflict between "pilot" and "unpiloted" shipdata keys
  • Fix equipment condition check in player.replaceShip()
  • Fix flasher scaling in visual effects
  • Add fuel scoop icon to small HUD
  • Lighten mouse cursor cross color
  • Sort save-game list alphabetically
  • Slightly lengthen deadlines on parcel contracts to avoid impossible ones
  • Prevent docking with dead stations
  • Fix memory leaks.
  • Remove "performBroadside" AI command
  • Fix scanner display bug
  • Display correct key in 'pause' message
  • Fix rotational_velocity for subentities
  • Fix shipEnergyBecameFull event to fire as documented

New in Oolite 1.75.2 Beta (May 10, 2011)

  • This is a bugfix update to 1.75.1, leading to the next stable release.

New in Oolite 1.75.1 Beta (Mar 15, 2011)

  • This is a bugfix release leading towards the next stable version. The project is actively looking for people willing to help in tracking down any remaining bugs: to do so, simply download the game and report any issues to the Oolite forum.

New in Oolite 1.75 Beta (Feb 21, 2011)

  • Gameplay:
  • Smarter, more aggressive NPCs - for example, they are now able to shoot you when you cunningly stand still.
  • New master weapon lock key (default: _) disables primary and secondary weapons, and turrets.
  • Simplified autopilot controls: C (or key_autopilot) attempts to autopilot- dock with the current target station - your target if any, otherwise a station within scanner range, favouring the main station. Shift-C (now key_autodock instead of key_autopilot_target) is the same, except it will fast-dock if permitted. Shift-D is no longer used.
  • New "primable equipment" concept: equipment can produce scripted effects without having to be a missile. New keys: Shift-N and Control-Shift-N cycle through the list of primable equipment, and N activates the currently selected equipment. (Key config keys: key_prime_equipment, key_activate_equipment.)
  • Target-sensitive reticle mode is now more accurate.
  • Fuel price now depends on the mass of your ship.
  • Jumping between overlapping systems now uses 0.1 LY worth of fuel.
  • A hyperspace misjump now takes 3/4 of the time of a successful jump, rather than the full time. (It has to be at least 3/4 to avoid exploits. See http://aegidian.org/bb/viewtopic.php?t=7917 for more information.)
  • The trumble offer "mission" now repeats as intended, in case you accidentally missed it.
  • Escape pods now aim for the nearest friendly station/carrier.
  • The escape pod key/joystick button must now be pressed twice in rapid succession to eject (except in strict mode, or if the escape-pod-activation-immediate hidden setting is set).
  • Comm log messages are now spoken. (Feature request #4970)
  • Bug fixes:
  • "Lollipop flashes" eliminated. (Bug #17215)
  • Hyperspace countdown messages don't repeat themselves.
  • You can no longer sneak into the contract screen through the back door in secondary stations.
  • Secondary weapons are now accounted for properly when evaluating your ship. (Bug #17450)
  • Fixes to joystick configuration (Bug #17482, Bug #17490)
  • The usual indescribable yet important "minor tweaks and fixes".
  • Miscellaneous:
  • New icon by seventh.
  • Reduced memory usage of various special effects and JavaScript objects. On the other hand, the new JavaScript engine uses more memory.
  • Mac-specific:
  • The Dread Sound Bug of Doom is fixed. (Bug #17214)
  • Joystick support.
  • Automatic update support (Sparkle).
  • The Oolite Screen Shots folder can now be moved from the desktop and Oolite will continue to use it (as long as it isn't renamed or moved to the trash).
  • Windows and Linux:
  • Due to a bug in GNUstep, older versions cannot read credit balances of more than 429496729.5 credits correctly. 1.75 writes saved games in a way that avoids this problem (even when loaded with old test releases). The Windows version can also read larger credit quantities in old saved games.
  • Expansion pack development changes:
  • New shipdata.plist keys: - allows_auto_docking (station only): if true, player autopilot docking is permitted. Default: true. - allows_fast_docking (station only): if true, fast docking is permitted. Default: false, except for main station. - counts_as_kill: if false, the ship does not count as a kill and does not participate in q-mine cascade happy fun time, even if its scan class and other properties would otherwise let it do so. Default: true. - cloak_automatic (NPCs): if true, cloaking device is activated when attacking; otherwise, it must be activated by a script. Default: true. - has_patrol_ships (station only, fuzzy boolean): if true, the station will periodically launch patrols if it has any police ships docked. Default: false, but ignored (treated as always true) for main station. - hyperspace_motor (all ships, including player): required to be able to jump. Default: true. - interstellar_undocking (station only): if true, docking with the station in interstellar space doesn't cause the station to jump to an adjacent system. Default: false. - weapon_range (turret subentities): plasma shot range. Default: 6000. - tunnel_corners, tunnel_start_angle and tunnel_aspect_ratio (station only): these replace docking_pattern_model. See http://www.aegidian.org/bb/viewtopic.php?p=128823#p128823 for more information.
  • A new ship role, "cinder", is used to generate debris in post-nova systems. The default cinders look like the default asteroids and boulders, but have very high heat shielding. If you make custom asteroids, you probably want to make cinder versions of them. If you're abusing the "asteroid" role to put random stuff in asteroid fields, you don't want to make a cinder version.
  • Turret weapon_energy now defaults to 25.
  • Beacon icon data is now handled in a more flexible way (http://aegidian.org/bb/viewtopic.php?p=128487#p128487; Bug #17828). Additionally, it is looked up using the ship's beacon code as a key, instead of its primary role.
  • Equipment:
  • New equipment.plist extra-dictionary keys: - script: used to implement primable equipment. Equipment scripts have one predefined property, equipmentKey, and one event handler, activated(). - visible: controls visibility on status screen and shipyard blurbs. Default: true.
  • NPC missiles are now represented as equipment entries instead of ships. For efficiency, it is recommended that all NPC missile types have an equipment.plist entry, even if they're not available to the player. (For example, there is now an EQ_THARGON.) For assistance in setting this up, enable ship.setUp.missiles in logcontrol.plist (or use console.setDisplayMessagesInClass("ship.setUp.missiles", true) in the debug console).
  • Other configuration files:
  • Sounds that are listed in customsounds.plist are now preloaded to avoid loading delays. Sounds that are played through JavaScript by specifying a file name cannot be preloaded; if you're doing this, and your sound isn't particularly rare, I suggest going through a customsounds.plist entry.
  • Fortuitously, using customsounds.plist entries from scripts now works properly.
  • Screen backdrops and overlays can now be scaled, allowing for higher resolutions. (Bug #17201) See http://aegidian.org/bb/viewtopic.php?p=127716 for more information. Additionally, screenbackgrounds.plist entries may be arrays, in which case one element is picked at random.
  • Planets using cube map textures now rotate around the expected polar axis. Planets using traditional textures don't, but they never did. (Bug #17243)
  • New HUD dial selector: drawWeaponsOfflineText:.
  • JavaScript:
  • Upgraded SpiderMonkey to bleeding edge (1.75 uses the same version as FireFox 4.0 beta 11). This adds most ECMAScript 5th Edition features, notably including strict mode, which I recommend all OXPers adopt.
  • On the other hand, the old SpiderMonkey-specific "strict mode" is disabled by default because it has some false positives. It can be enabled through the debug console by setting console.pedanticMode to true.
  • Native JSON support may be useful for storing structured data in mission variables.
  • The JavaScript global and console objects are now replaced when resetting the game, and can no longer be used to smuggle information across sessions.
  • Vector3D and Quaternion objects can no longer be compared using == and !=, because the wart in the JavaScript engine we were previously exploiting no longer exists. See http://www.aegidian.org/bb/viewtopic.php?f=4&t=8847 for more information.
  • Scripts are now stopped if they run for more than one second. (Slow Oolite functions are not counted towards the limit. The idea isn't to force a time limit on you but to kill scripts stuck in an infinite loop. If your script is deliberately running for more than a second you probably have problems, though.) During loading and the startUp event, the limit is two seconds.
  • All Oolite-provided JavaScript methods and properties have been audited for consistent error reporting and sane handling of bad values. In some cases, their error checking has become stricter. In others, they perform normal implicit conversions (like converting a string with a numerical value to a number) instead of failing or crashing. All normal parameter errors should now become JavaScript exceptions; calling an Oolite-defined method with the wrong type of this value will just halt the script, but it's hard to do that by accident.
  • Oolite now has the ability to write a stack trace when a JavaScript exception goes unhandled or a warning is logged. This helps you find out how you reached the point where the error occurs. This is on by default if the debug OXP is installed, off by default otherwise. You can toggle it by setting console.dumpStackForErrors and console.dumpStackForWarnings if the console is active, or the dump-stack-for-errors and dump-stack-for-warnings hidden settings otherwise. When the console is active, you can also log a stack trace at any point using the special statement debugger;, which will otherwise have no effect.
  • The JavaScript global object is now exposed as a property of itself, called global. global === global.global.
  • The player's ship is now treated as invalid after ejecting or dying.
  • Some exceptions thrown in event handlers, which were mistakenly suppressed before, are now reported.
  • Frame callbacks: callback functions that are called once per frame, useful for driving animations. See http://aegidian.org/bb/viewtopic.php?f=4&t=8941 for more information.
  • Scripting bug fixes:
  • The prototype chains for Oolite-defined objects were previously set up incorrectly. This has been fixed. An effect of this is that using methods and properties on singleton constructors instead of their instances stopped working. For the most common cases, System and Player there are compatibility accessors which log warning, much like we've done for deprecated methods in the past. If you want to actually understand what's going on, my best stab at explaining it is at http://www.aegidian.org/bb/viewtopic.php?f=4&t=8968 .
  • As far as scripts are concerned, the player can now only die once. (Previously, shipDied() would be called twice, once without parameters and once with.)
  • When the player is killed by a q-bomb, the damageType parameter to shipDied() is now "cascade weapon" (not "energy damage").
  • You can now award multiple trumbles, to the delight of customers everywhere.
  • "Display models" of ships and planets no longer show up in the system's entity lists. You can get at the display model for mission screens with the new mission.displayModel property. The others are intended to be inaccessible.
  • Sound.load() now handles customsounds.plist keys properly.
  • Ship exitSystem()/AI performHyperSpaceExit now work in interstellar space.
  • New world events:
  • playerWillSaveGame(saveType) (Feature request #5095)
  • escapePodSequenceOver() (called immediately before deciding how to rescue or kill the player after using an escape pod. See player.setEscapePodDestination()).
  • New ship events:
  • coordinatesForEscortPosition(index) (not exactly an event, but whatever.)
  • distressMessageReceived(aggressor, sender)
  • shipTakingDamage(amount, fromEntity, damageType) (Feature request #5077)
  • shipKilledOther(target, damageType) (fires after target's shipDied(), but before actually blowing up).
  • shipWillLaunchFromStation(station) (previously restricted to player).
  • Modified ship events:
  • commsMessageReceived() now takes a second parameter, the sending ship.
  • New JavaScript properties and methods:
  • Entity collisionRadius
  • Entity dumpState() (only available if console is active): writes a bunch of junk to the log.
  • EquipmentInfo canBeDamaged
  • EquipmentInfo canCarryMultiple
  • EquipmentInfo isAvailableToNPCs
  • EquipmentInfo isAvailableToPlayer
  • EquipmentInfo isVisible
  • EquipmentInfo scriptName
  • Global defaultFont (object with one method, measureString())
  • Global addFrameCallback()
  • Global formatCredits()
  • Global formatInteger()
  • Global isValidFrameCallback()
  • Global removeFrameCallback()
  • Global takeSnapShot()
  • mission.displayModel: the spinning-ship backdrop, if one is in use. (If you set spinModel to false in the runScreen() parameter object, it will refrain from spinning around for easier manual animation.)
  • player.setEscapePodDestination()
  • player.ship.viewDirection
  • player.ship.weaponsOnline
  • player.ship.removePassenger()
  • Ship subEntityCapacity
  • Ship restoreSubentities()
  • Ship scriptedMisjump() (previously player-only)
  • Station allowsAutoDocking
  • Station allowsFastDocking
  • System countEntitiesWithScanClass()
  • System scrambledPseudoRandomNumber()
  • Modified JavaScript properties and methods:
  • Ship commsMessage() now takes an optional second parameter, the target ship.
  • Ship equipmentStatus() now returns "EQUIPMENT_UKNOWN" when passed an undefined equipment identifier, instead of throwing an exception.
  • The Ship property roleProbabilities has been renamed roleWeights.
  • New AI commands:
  • enterPlayerWormhole
  • setDesiredRangeForWaypoint
  • setTargetToNearestFriendlyStation
  • thargonCheckMother
  • updateEscortFormation
  • New AI messages:
  • STATION_LAUNCHED_SHIP
  • Descriptions.plist changes (for translators):
  • Additions: - number-group-size - number-group-threshold - number-decimal-separator - number-group-separator - autopilot-station-@-does-not-allow-autodocking - autopilot-multiple-targets - autopilot-red-alert - witch-no-motor - witch-user-galactic-abort - weapons-systems-online - weapons-systems-offline - equipment-primed-@ - equipment-primed-none - equipment-primed-none-available - station-docking-clearance-denied - initializing-debug-support - charts-distance-f (short-range-chart-distance-f and long-range-chart-distance-f now reference this; it is not used directly by the game) - charts-est-travel-time-f (short-range-chart-est-travel-time-f and long-range-chart-est-travel-time-f now reference this; it is not used directly by the game) - commodity-market - stickmapper-weapons-online-toggle - stickmapper-snapshot - stickmapper-prime-equipment - stickmapper-activate-equipment - stickmapper-escape-pod - stickmapper-cloak - stickmapper-scanner-zoom - gameoverscreen-escape-pod - snapshots-directory-name - snapshots-directory-name-mac - rescue-reward-for-@@-@-credits-@-alt - capture-reward-for-@@-@-credits-@-alt - speech-synthesis-incoming-message-@
  • Deleted/unused: - initialising-universe - speech-synthesis-incoming-message - no longer used directly by the game, used by speech-synthesis-incoming-message-@ so existing localizations will (possibly) work. - autopilot-cannot-dock-with-target - still included, but currently unused.
  • Debug console:
  • Previously, the console object was available from within the console as console, and anywhere else as debugConsole. Both are now global, and console is preferred.
  • Profiling support: call :profile to see where spends its time. For more detailed information, as a bunch of JavaScript objects rather than a text dump, use this.profileData = console.getProfile(function() { }).
  • Tracing support: call :trace to see the hierarchy of function calls made by . (The trace is written to the log.) Tracing and profiling can't be used at the same time.
  • When the result of an expression is an array or plain object, its structure is now pretty-printed. You can also pretty-print the structure of any object using the :d macro. I suggest getting into the habit of doing this to any object you're curious about. :d player.ship is a good starting point.
  • The call() method has been renamed callObjC() to avoid confusion with the standard Function.prototype.call(). It now works on more objects - just about everything except vectors and quaternions - and can deal with Objective-C methods that return numbers, vectors or quaternions.

New in Oolite 1.74.2 (Jul 27, 2010)

  • Stopped player from selecting invalid jump destination during jump countdown.
  • Fixed docking permissions inconsistencies: all hostile stations now refuse docking permissions.
  • Switching to custom views now allowed in a consistent way.
  • Weapon repeat rate is now per-weapon.
  • Current zoom level is now preserved when switching HUDs.
  • Exhaust plume now resets after hyperspace jumps/scripted teleporting/ auto-docking.
  • Fixed overlapping system confusion when loading games and searching for systems.
  • All automatically generated sun skimmers should now be adequately shielded.
  • Fixed occasional "bleached"-looking planets on system info screen.
  • Fixed wrong distance showing on the short range chart when switching back from the long range chart.
  • Improved default speech synthesis voice (not Mac OS X).
  • SystemInfo.systemsInRange() can now be called on a specific SystemInfo object, instead of always applying to the current system.
  • New JavaScript event: shipAttackedOther() (inverse of shipBeingAttacked(), called immediately after shipBeingAttacked()).
  • If a script removes a piece of equipment in the equipmentDamaged() event handler, no "equipment damaged" message is generated.
  • Ship.removeEquipment() now works on damaged equipment.
  • Fixed substitution priority for expandDescription() and expandMissionText(), the overrides (if provided) now take precedence over everything else.
  • New shipinfo key: station_roll.
  • Fixed some cases where AIs could break group handling.
  • Shader errors detected in the link phase (generally, problems involving state shared between the vertex and fragment shader) are now reported properly.

New in Oolite 1.74.1 (Jul 17, 2010)

  • Scripts can once again award and check for trumbles, and the standard trumble mission once again works. (Limitation: scripts cannot increase the number of trumbles by awarding more. This will be fixed in 1.75.)
  • The nova mission once again awards the appropriate reward on a successful outcome.
  • No more "Witchspace engine malfunction" message when entering a post-nova system.
  • When docked at a secondary station, the default selection on the game menu screen is "Game Options" rather than "Begin New Game".
  • Fixed annoying audio latency when playing first sound under Mac OS X.
  • Fixed several JavaScript interface bugs that could cause a faulty script to halt without any error message.
  • Adjusted graphics settings: shader mode is now restricted to Simple for Intel GMA 950 and ATI Radeon R300 GPU families, and some other tweaks.
  • Fixed a material synthesis bug where illumination_modulate_color was ignored when using emission_and_illumination_map in shader mode (material test suite test case 7).
  • Possible fix for random freezes when using speech synthesis in Windows.
  • Various minor bug fixes and tweaks.

New in Oolite 1.73.4 (Sep 24, 2009)

  • Fixed nova mission.

New in Oolite 1.72 (Nov 9, 2008)

  • New "ship registry" that handles creation of new ships more robustly and efficiently.
  • New equipment handling
  • Player ship turrets
  • Joystick support now supports more axes and buttons
  • AI tweaks and improvements
  • Numerous updates and fixes to JavaScripting