20120412: ====== TP4 release! ============================================== 20120412: * No longer dropping items for weapons with no ammo! * Added item 'timeout' field + spawn arg. and ItemVanish sound effect. * Dropped weapons are ignored for two seconds, to avoid unintentional "double-swapping" when picking up weapons. * Loot drop items disappear after ten seconds. * GUI widget Hide() now sets the visible field *before* attempting to unfocus, thus avoiding sometimes focusing another hidden widget. * game.eel initialization now disables ingame sounds pause mode. * Tiny backup weapon icon and main/backup switching on the HUD. (As a bonus, this shows the out-of-ammo weapon as a tiny icon + big empty icon if there is no backup weapon for the slot.) * Changed builtin default input config to Crosshair/absolute. 20120411: * Added spawndeck SetSpawn()/StartSpawn() API. * Added spawndeck item spawn tables for Campaign and Survival. * Kobo MkII shield increased to 200. * Implemented shield overcharging. * Allowed shield overcharge to 400 for Kobo MkII. * Grenades now do 500/200 direct/splash damage, instead of 200/500. * Added overcharge shield HUD bar. * Empty weapon slots are now shown as the "empty" icon. * k2widgets.eel bar graph values are now clamped to [0, 1]. * More drag on grenades, to make range and "feel" more reasonable. * Drop shadows on the adrenaline bonus display. * Added rockets and rocket launcher! * Campaign mode maintains a stage based steady number of fighters by spawning new ones off-screen as needed. 20120410: * Added item NotifyPickup(), used by spawndeck to respawn items after they've been picked up. * Added fizz noise to the LavaImpact sound effect. * Louder Minigun sounds. * Added ItemSpawn sound effect. * Added backup weapon logic. * Kobo MkII now defaults to empty primary and secondary weapon slots, with a tertiary plasmagun wired as backup for the primary weapon. * Nicer lava impact/stick visual fx. 20120409: * New marker colors; * primary: yellow * enemy: red (unchanged) * spawn: blue (new) * item: green * (unknown) white * Less damping on the Lava "stick" springs, to avoid escalating resonance when several blobs stick on a light body. * Added SpawnDeck sound. * Added 0x1e quarter space to gltext.eel. * Config widgets now grab hints from $.config_doc by default. * config.eel Open() now checks that $.config_doc actually documents each and every key found in $.config. * Added $.config_unit, to keep $.config_doc strings clean. * Added -cfghelp switch, to dump all config file documentation. * Added a bunch of previously cfg-file-only options to opt_system.eel. * Fixed some CSL bugs that would cause the higher pitched parts of the Reactor and SpawnDeck sounds not to come back after being out of audible range. * TeleDropShip teleports itself 500 units of lava ammo every 10 s. * Lower sfx and bg music volume when game is paused! (a_pausegain) * Lava blobs now deal a smaller impact damage, and then keeps damaging the target until they've cooled down. 20120408: * Added HitMask() to vehicle classdefs. * HACK: Removed NPC ship/levmodule collisions! * Removed the special physics groups for primary targets. * Don't pick up an item with zero amount! * Fixed terminology in plugins.eel; factories are now named as such. * HUD markers now look for a "hudstyle" field which, if present, determines how to indicate the body. * Added spawndeck, the "platforms" class and PG_PLATFORMS. 20120407: * Vehicles may drop their weapons with any remaining ammo when destroyed. This can be randomized or disabled by means of the fifth parameter in the weaponslots entries. * Weapons can have custom Drop() methods for fabricating their own items matching ammo status etc. * Fixed kobo2log.txt; double cleanup entries closed the logger twice! * Added "loot" list to vehicles, so they can randomly drop various items when destroyed. * Dropping a weapon or installing a weapon in an occupied slot now cleans up the old weapon properly. * Added "acceptitems" item class whitelist to vehicle discriptors. (Defaults: Ships accept all items, whereas base modules and projectiles accept none.) * Using base constructors instead of patchers for factories and Spawn(), Attach() etc. * Added time.eel with GlobalTime() and GameTime(), all in seconds. GameTime() (unlike $.space.now) is always valid; it just tracks GlobalTime() when there is no physics space. * Log timestamps are now seconds with decimals down to milli. * Removed HUD temperature indicators for plasma and lava guns. 20120406: * Added energy "+" icon. * Added energy25, energy50 and energy100 powerups. * Removed unused ChipSound files. * Some sfx tweaks. * Added items lavasmall, lavalarge, minismall, minilarge, grenade, grenadepack, stickymine, stickymines and energymega. * Using physics space time instead of getms() for most visual effects. * New sound effects GiveHealth, GiveHealthBig, GiveAmmo, GiveWeapon, GiveEnergy, GiveEnergyBig, GiveEnergyMega, * Glyph part of shiny icons made 50% larger, with dim borders. * Added items lavagun, minigun, grenadelauncher and stickyminelauncher. * Vehicles can now have a wprefslots table listing any weapon types that should go in specific slots when picked up via Give(). * Icons cannot be picked up the first ZOOMTIME (50) logic frames after being spawned or dropped. * Vehicle descriptors now have only a 'weapons' table where all weapon slots are declared, along with optional default weapons. 20120405: * Wired the new weapon info HUD areas. * Weapon temperatures, ammo etc are now hidden when not applicable. * icons.eel uses strings instead of integer constants, and safely handles unknown icons and frame styles. (This API design allows addons to register their own icons later.) * All weapons now have an 'icon' field. (Both descriptors and "live".) * Sticky Mine timer changed from 10 to 5 s. * Sticky Mines now deal full detonation damage if destroyed while attached! * MainMenuButton now uses theme colors for the caption. * Added k2widgets HBarGraph for the new weapon temperature bars. * Added items.eel. * Added repairsmall and repairlarge powerups. * Radius based sizes changed to diameters! * Removed the "shield" class of powerups. What happens is "energy" powerups recharge the shield first, then sends any remaining energy to the accumulator. * Kobo MkII gets a halv capacity, quicker recharging shield and double hull strength. 20120404: * fx.Explode() explosions now get a default mass of 100 for stability when exploding light bodies. * Added Give() methods to vehicles and (optionally) weapons. * Implemented Give() for launchers (all variants), lava and minigun. * Added items (green, no range limit) to RenderMarkers. * GUI: * Added Icon() to k2widgets.eel. * Added ALIGNASPECT. * Rebuilt the HUD. 20120403: * Added launcher.eel - the generic launcher device. * Added icons.eel and icons.png. * Updated grenade.eel. * loader.eel now makes a dummy Z-map initialization to avoid physics breaking down on stages without Z-maps. * Splash damage now based on distance to target bounding circle - not center. * Fixed splash forces in SplashDamage(). * Base modules deal less and shorter range splash damage. * Plasma and Lava guns can no longer overheat. * Lavagun "bullets" now actually stick! (Damped string constraints.) * Added grenadelauncher.eel and stickylauncher.eel. * Added stickymine.eel, with MineAlert and MineAttach sounds. * Camera shake effect restricted by MAXCAMSHAKE. * Added TEST sound group, to avoid conflicts with the real groups. * SfxTest Kill button now kills everything on all groups. * Added optional pitch argument to sound.eel Sfx(). * Added generic Launch sound effect. 20120402: * Added some missing nil checks for base module links. * Added a bunch of new bases. * Added "fork from all remaining slots" logic to base layout parser. * Primary targets are scanned for after populating the map, to handle bases with multiple cores. * Doubled IMPACT_RETURN to .5 to make navigation inside bases slightly easier. 20120401: * Rewrote the base layout definition parser. (It had some issues...) * Added base small1. 20120331: * New levcore base module. (Reactor with no shield, no weapons.) * Minor random pitch detune on the reactor sounds. * Teledropships now make the expected reactor sound. * Added builder Build(), to build bases or sections of bases from layouts encoded as EEL arrays. * Default base Factory() method now builds the entire base from a builder layout definition from the Layout field of the descriptor. 20120330: * Added Vehicle::CheckLink() with tolerance constants. * Added Vehicle::TryLink() and builder AutoLink() to automatically link all applicable slots after constructing a base. * Added "bases" directory and Bases() plugin category. (bases.eel) * builder.eel is now usable. * Added bases tiny1 and tiny2. * Random force impulse when base links are broken. 20120329: * GUI: * Cfg widgets OnClick handlers call the user callbacks before window CheckChange(). * Cfg widgets OnClick handlers now broadcast ReadConfig(). * The Cfg ReadConfig() methods no longer call OnClick()! OnClick() should do nothing but update the configuration - any side effects on other widgets should be handled via ReadConfig(). * Added global Broadcast() call. * Broadcast() 'message' argument now optional. * SetFocus() now handles deleted widgets that hang around as empty tables. (Happens when closing the options dialog after it triggered a main menu rebuild, for example.) * Added groupboxtitle_y and groupboxtitle_m to themes. * Integer pixel quantization on slider knob positions. * Hint popups now stay inside the screen at all times. * Sliders now pass an extra 'final' argument to OnChange, to distinguish dragging (potientially very frequent calls) from other actions. * Removed some bogus click handlers in opt_video.eel. * Converted all options page addons to the new ReadConfig() model. * Fullscreen toggle now updates the video options dialog if it's up. * cfgwidgets.eel and options.eel now Broadcast() ReadConfig globally. (This is the new recommended practice.) * options.eel now handles the CheckChange() logic internally via ReadConfig() - no more CheckChange() calls all over the place! * Tweaked the groupboxes of both themes a bit. * a_titlemusic, a_loadermusic, a_backgroundmusic, a_sfx and a_guisfx are now volume levels rather than booleans. * Replaced music/sfx toggle buttons with sliders in opt_audio.eel. * GUI/SFX/music volume settings. * Added proper "Asteroids" controls preset. * Added i_mousesensitivity. * Mouse sensitivity, threshold and nudge siders in opt_controls.eel. 20120328: * Added texline.eel - textured line primitives. * GUI: * Added cl_passive color to the GUI themes. * Finished the slider widgets. * Added GUI.GetRootTheme() * Added GUI.Theme() call and theme::NewRootTheme() method. * Optional widget Theme() method for anything that needs to be recalculated after a live theme change. * Theme tabbox_selector_height is now tabbox_selector_h. * Added GUI theme selector in opt_video.eel. 20120326: * CENTER now disabled properly when resizing centered windows. * Slow motion in GAME_OVER state as well. * Disbled the PAUSE half fade-out. * Mouse buttons now "wake up" the cursor, like move events. 20120321: * Fixed camera flying way off when getting massive delta times due to screenshots and the like. * gui.eel: * AlignInside CENTER now remains active until overwritten. * Ported HSlider and VSlider from EBGUI. * Added highlight effect for marking widgets showing hints. 20120320: * Added i_mouselimitradius - circular mouse cursor restriction. * Added i_forwardonehand key, to override i_onehandcontrols when the Forward control is active. * "Quick Presets" buttons on the Controls Style page. * Added a one-hand keyboand preset. * Added range checking for some config file keys. * Added "nudge mode" with i_relmousenudge to relative mouse mode, for smooth fine control. 20120319: * Added optional mouse warping via i_warpmouse. (Not needed on Linux, but it does work now.) * Coordinates from mouse button events are now ignored when in relative mode, as they generate bogus deltas. * "Current Fullscreen Resolution" wired to the config management. * Added TabBox:Change(), for selecting a page. Sorts pages first! * options.eel selects the first page, Controls, when opened. * Separate subtractive layer for the mouse cursors. 20120318: * gui.eel: * Hint popups via .hint (string). * Mouseover handling with MouseOver() method. * Added cl_hint and cl_hinttext colors to themes. * Fixed the BOTTOM alignment in gltext.eel. * Documented various options with hint popups. * Forward/reverse only functional when there is no Move command. * $.showmouse is now a master override; false hides the mouse pointer no matter what. Use with care! * game.eel disables the mouse pointer when the game is running, unless i_mousemode is "absolute". 20120317: * Added $.mousegrab. * Published gui.GrabInput(), with SDL/system cursor hiding disabled. (Kobo II runs with custom OpenGL cursors at all times.) * $.(mousex, mousey) + cursor still restricted to the screen in relative mode - but deltas ignore this. * Added Style page to opt_controls.eel. * Added i_mousethreshold, i_mousetarget and i_onehandcontrols. * In-game mouse cursor updates when changing style. * Added gui.ALIGNSCALENR, and added pixel alignment to ALIGNSCALE. * Added "forward" control target. "reverse" back in opt_controls. 20120315: * Fixed PayPal language silliness. You must actually tell it to NOT default to a language spoken by less than 10 million people...!? * Removed i_predictmouse and i_filtermouse. (Unmaintained garbage.) 20120314: * Added i_capturemouse and i_mousemode. * Added Mouse page to opt_controls.eel. * inputmapper.eel no longer eats mouse buttons. * Added inputmapper:LastType(). * GUIControl() ignores "primary" events if they originate from mouse buttons, to avoid conflicts when configuring mouse buttons as fire buttons. * Fixed clamping for the shadow sprites in fx.eel. (Not used now...) * Added cursors.eel with crosshairs.png. * Added v_cursor, v_cursorsize, v_crosshair and v_crosshairsize, where the *size ones can be <1 for screen diagonal fractions instead of absolute pixel sizes. * Implemented absolute mouse control with crosshair. 20120313: * ChipSound 0.1.0 released! * EEL 0.3.6 released! 20120312: * New screenshots etc on kobo2.net. * Prepared ChipSound for the zlib release. 20120311: * Site updates, planning etc... 20120310: ====== TP3 release! ============================================== 20120310: * Fixed stupid texture clamping bug: It's GL_CLAMP_TO_EDGE, not just GL_CLAMP! (Stupid devsystem driver not implementing the latter...) * Added OnShow() handler for Show()/Hide() to the GUI toolkit. * Showing the input configuration dialog now reopens the joystick subsystem, hopefully detecting any new devices attached after the game was launched. * Switched from locking to guards in cs_Now(). * Added "Instructions/s" display to the ChipSound Info window. * Minor "Thank You" and font kerning tweaks. * "Fixed" ChipSound/Win32! Optimization switches went missing... * Fullscreen resolution selector disabled in windowed mode! * Full video restart (including texture reload) now also happens if the resolution changes while in fullscreen mode; not just when switching TO fullscreen mode. * Built-in default config that might work with Xbox pads on Windows... * Added "primary direction" hints to inputmapper and opt_controls. * Input detection timeout now restores the slot caption properly. 20120309: * New benchmark with EELBox OPTIMIZATIONS on... (Oops) * 665 bodies/1938 constraints @ 60+ fps. (Native constraints, scripted links and power distribution at 100 Hz.) * 963 bodies/2808 constraints (The infamous collisions off.) * Observation: Framerates start to fluctuate quite a bit (like 35..75, for example) near max load with this many bodies. VM memory management issue? AI scripts acting up? * Added "darkrocks" parallax background for Survival mode. * Various minor tweaks. * Worked a bit on the chorus of K2Trance. * teledropship dealing out A LOT more pain: * Teleports ships in much faster! * Still teleports ships in while in combat mode! 20120308: * Fixed a stupid bug with gl.CLAMP - there were two of them...! * Added space.use_shadows flag to enable/disable body shadows. * Parallax scrolling with clouds and terrain way down in Campaign. * Added random wind to some of the cloud layers. * Links now rendered *before* bodies, for AA. (They still need to be extended a pixel in under the pads, though.) * The gamespec in title.eel is now cloned rather than sent to the game factory, to avoid defaults/command line options being overwritten! * Using the WarbleUp sound effect as the start sound in Survival. * Survival scores now stored under survival_TP3. * Fixed the texture flags for the CRT effect modulation textures. * Changed GAME_DEAD message to "SHIP DESTROYED!" * GAME_OVER message: "GAME OVER!" "Your ship was destroyed." * Switched to medium (non-outline) font for Stage HUD display. * Energy HUD bar color changed from (0, .4, .8) to (0, .5, 1). * Stage HUD display text color changed to white. * Fixed "Strings" variants with broken message 2() in K2Intro, K2Loader, PulseTronic and Dark Ocean. * view.eel now sets $.pixelsize; the size of one physical screen pixel expressed in the current units. (Needed for explicit AA tricks.) * Adding one pixel on each end of links, for proper AA. * Fixed missing cooler and other details on levelectronguns1 texture. * Fixed various missing shadows on levsegment, levcross and levreactor. * Gave all module conductor "tubes" a blue/turquoise tint. * Added blue electrogun orb glow on levreactor. 20120307: * Fixed the physics info Constraints count display. * Added some message timestamp debug + bug "fix" code to ChipSound. * New levitating base module: levelectroguns1. * Much heavier levcross and levsegment; more on par with the reactor. * Fake levsegment size of 96 for now... * Increased reactor power and distribution buffer capacity, and lowered the cost of anti-grav, to handle the much heavier modules. * Pilot Frame() callbacks are now driven by VehicleFrame(). * Base module links: * Increased LINK_DAMPING to 40. * Doubled the damping of the perpendicular springs. * Whether or not 'autoplace' is used, links now calculate spring lengths regardless of object positions, so they strive to align modules at the default link distance. * Rough benchmark with bases: * 423 bodies/1230 constraints @ 60 fps. (Native constraints, scripted links and power distribution at 100 Hz.) * 600 bodies/1700 constraints @ 60 fps without body/body collisions. * Added Music() method to gamemodes. * Added GAME_OVER and GAME_OVEROUT states, where game.eel aborts after the latter has faded out. * Added gfxmanager PreBlit() function, trying to ensure that all textures REALLY are loaded and uploaded to OpenGL. * Weight of boomerang3 halved to 50 units. * Doubled the yaw thruster power for boomerang3. * teledropship: * Yaw power reduced to 50%. * Bounding circle reduced from 216 to 200 WU. * Added VIS_PILOTS/v_showpilots for physics visualization. * Added parallax.eel - a simple "parallax texture stack" renderer. * Handed over the responsibility set up a suitable scroller to loader.eel, where the maps are loaded. 20120306: * Meatier minigun shot sound! * Added limiter from Audiality to ChipSound. (Quick hack.) * Added LavaImpact sound effect. * Tweaked levels of ImpactGround and BulletImpact. * Got the native physics constraints code working properly - I think. 20120305: * Rough benchmark with bases: * 260 bodies/756 constraints @ 60 fps. (All scripted springs, links and power distribution at 100 Hz.) * Some minor physics refactoring. (eph_Force*() inlines.) * Moved physics constraints to native code. 20120304: * Implemented reactor driven energy system with energy routing via links. * Base reactor_power defaults to the maximum *_rep. (Antigrav drain is added automatically!) * Added 'dying' flag for vehicles to allow the remaining systems to keep running while a ship is going down in flames or similar. * Added -qs switch for quickstarting a Survival game. * Teledropship health increased from 1000 to 2500. * Teledropship engine power reduced from 150 to 100. * Accumulator charge power distribution system with emergency priority modes when health or shield are below 50%. * Kobo MkII gets an extra 50% reactor_power over the new default. * Antigrav power only added automatically if the vehicle actually has a reactor...! * Added buffer based power distribution system; power is supposed to distribute iteratively via the 'power_buffer' fields. * Doubled ANTIGRAV_PER_WEIGHT to .002. * Added view.eel Push() and Pop() calls. * Added view.eel TranslatePoint() call. * Added some textual info at the PhysTool handle. * PhysTool handle now follows the camera properly. * Fixed some minor physics engine bugs. * Body/body overlap correction forces are now based on the mass of the lighter object; not the sum of masses. * Base power distribution seems to work reasonably well. 20120303: * Link springs are now attached behind the link pads, to prevent modules from "snapping" together if links are overstressed. * "Diagonal" spring now mounted perpendicular to the link, and twice as stiff in k2, for nicer alignment of the pads under bending. * Added game modes registry to mainmenu.eel. * Added rebuild feature to mainmenu.eel. (Leave out the 'scene' arg.) * Toggling Developer Mode in opt_system.eel rebuilds the main menu. * Added Campaign game mode. * Physics Find*() calls now take extra flags for excluding or including bodies in view. * Added $.StartGame() wrapper. * Fixed continuous sounds that were restarted at a low volume with every positional audio update. * Phatter SegmentDeath sound effect. (Now used when modules explode instantly under fire, so there's no crash afterwards.) 20120302: * F10 now restarts the sound engine and reloads all sounds. F9 does the same, but also restarts the music, if enabled. * Added v_showstats, to show health, shield etc for all vehicles. * Added gl.DrawCircle() to the OpenGL binding. * Added teams and logic for setting physics groups based on team. 20120301: * Added k2builder.eel - a turtle style base construction API. * Added 'class' field to vehicle descriptors, used for assigning sensible defaults, and to serve as a hint to the engine for physics groups etc. * NewVehicle() now initializes 'group' and 'z' to sensible defaults, based on vehicle class as specified by the descriptor. * Dummy pilot removed; 'pilot' is just 'nil' if there's no pilot. * Replaced 'group' with 'a' in NewVehicle() and Spawn() methods. * Added vehicle classes spacecraft, primspacecraft, levmodule, primlevmodule and projectile. 20120230: * Electro effect on the links. * Added dedicated physics groups for base modules. (Too much HUD marker noise!) * Moved hardwired link properties into constants.eel. * Screenshot, blog posts etc... 20120229: * Switched to zero length springs for links - only to realize it's a highly unstable design! Sooner or later, anchors get stuck violently circling around each other. No go. :-/ * Added k2 (quadratic spring constant) for progressive springs. * Levitating base modules: * Much heavier! (Realistic volume scale to Kobo Mk II.) * Extra rotational friction for increased stability. * Much less drag. * Reactor gets 3000 health + 500/2 shield. * levcross and levsegment explode instantly when destroyed by direct damage, as opposed to power loss. * Added fx.Electro() with electro.png. * Added vehicles.eel VehicleRenderLinks(), which renders ALL links of on-screen vehicles in one go. (Relies on VehicleRenderWeapons().) 20120228: * Added s_phystool, an in-game physics testing tool. * HUD overlay now disabled to let clicks through to in-game tools etc. * Setting 'enabled' to 'nil' on a GUI widget now disables the disable fade effect. 20120227: * Added levcross.eel. * fx.FadeRot4*() now deals in width/height instead of radius. * Added physics and weapons AudioRestart() feature, so vehicles, weapons etc can reinitialize continuous sound effects as needed. * Added damped spring constraint. 20120226: * Started on K2Trance. * Fixed pitch change message on Strings in K2Epilogue. * Some kerning tweaks on Korataki glass and regular. * Much lower friction on levsegment and levreactor. * Added 'powerlevel' too handle when networks of modules lose power. * opt_system.eel: * Removed s_yawregtune. * Added v_showphysinfo, v_physbodies and v_physconstraints. 20120225: * Timing hacks in k2epilogue and k2loader, to keep notes from being started before pitch changes are processed. (ChipSound now processes code before messages, to ensure that new voices can init before they receive messages. Might not have been the best solution...) 20120224: * Vehicles now have a 'powered' state that must be non-zero to activate 'health_rep', 'shield_rep' and 'energy_rep'. * When powerless, antigrav draws power from the energy accumulator. * Out of energy ==> Die() + Unlink(). * VehicleFrame() updates the power status whenever links are made or broken. 20120223: * ElectroGun now fires in the exact direction of the target, regardless of mounting position on the host vehicle. * Three-spring truss links. 20120222: * physics.eel: * Constraints managed on the space level; not per-body. * Constraints are all weakref - must be held by app. code. * Added 'maxforce' and Broken() for constraints. * Added omnigunner.eel. * dropshipper.eel CombatFrame() now checks 'target' before using it. * The levreactor module got some electroguns. * "Finished" the vehicle links system. * Smaller (matching) hit zones for all bullets. 20120221: * fx.eel functions using DrawRect(nil, ...) and low level OpenGL now enable GL_TEXTURE_2D as needed. * physics.eel: * Body() constructor now calculates inertia from mass etc. * Added prototype constraints system. * Added debug visualization features. * Removed 'inertia' from all vehicles. * Default inertia factor from vehicles.eel is 1.0. * Using rendering WU positions for thruster physics. * Added v_physbodies and v_physconstraints debug options. * Kobo MkII: * Increased yaw thruster force to 20. (More inertia now...) * Turn() counter-Strafe()s to reduce undesired movement. * Added levsegment.eel - Levitating Base Segment. * Added Link mechanism for vehicles. 20120220: * New "2D positional" model; plain linear fall-off to 0 at 2000 WU. * Camera and listener updated regardless of screen fades. * Fixed HUD bar aspect ratio issues. * Added s_loaderwait to prevent the loader screen from continuing automatically. (Used to be commented out wiring to s_devmode.) * View "title" min logic width upped from 800 to 1100. * Added physics spring. (Prototype implementation.) 20120219: * sound.eel SetListener() now uses camera coordinates; not a body. * Fixed ChipSound issues with messages for sleeping voices. * Kobo MkII afterburner max force separately configurable. * sound.eel no longer plays the "Error" sfx for missing sounds. * GUI: * The 'button' field now uses GUI button constants (bitmask); not SDL event button indices. * MiniGear sound fx changed to work like HeavyGear; conditionally replacing the subvoices when restarted. Avoids the "hung feeps" bug? * With s_devmode activated, F8 ingame "wins" the current level. * Eliminated extra inputmapper instances. * Fixed input config dialog detection, deletion, label updates etc. * Input config dialog CANCEL button now labeled "CLOSE" when there are changes waiting to be applied. * Converted opt_system and opt_video to cfgwidgets.eel. * Fixed some bugs in gl.ReadPixels(). (Odd-sized screenshots.) * Grabbed the gatling description from the TODO. * Cleaned out some fixed and irrelevant stuff from the TODO. 20120218: * Fixed a message timing/ordering issue + other ChipSound issues. 20120217: * Fixed the "ADRENALINE BONUS" text alignment. * Tweaked the MegaDeath sound effect. * Added Afterburner and wired sound effect for Kobo MkII. * sound.eel FreeVID() now sends a "NoteOFF" message before detaching. * Vehicles now have an optional Delete() method. * airescape.eel now only sprints until z >= 250. * survival.eel Win() now moves the player to the PG_FXTOP group. * Added levreactor.eel - Levitating Base Reactor. * kobomk2, teledropship and levreactor now disable collision responses when they're going down. * Added Reactor sound effect. * sound.eel FreeVID() now ignores VID 0. * teledropship frees klank_vid in Delete(), in case it doesn't Die(). 20120216: * Minor Minigun sound tweaks. * Minigun recoil increased 50%. 20120215: * Messed with some ChipSound message handling issues. 20120214: * Added a dedicated BGMUSIC group in sound.eel. * 50% volume on the in-game music. * 75% volume on the remaining music. 20120213: * Wired minigun sound effects. * survival.eel Win() now disables player collisions and responses. 20120212: * More ChipSound timing issues... * The physics engine no longer makes an extra cs.Wait() in the integrator loop. * Only tries to load plain text stats if binary parsing fails. * Fixed the Options "OK" button. (The OnDelete() handler...) 20120211: * Fixed some ChipSound API timing issues. * Started on K268150: "Kobo II, 6/8 150 BPM" * Added Minigun. 20120210: * PulseTronic: * Added quirks and portamentos to chorus and theme melodies. * Chorus melody tweak. * Added Heavy* (Really Big Gatling Cannon) sound effects. * Using the right (medium) font for "PAUSE" and the Thank You screen. * ChipSound: 'p' no longer inherited; all offending sounds fixed. (?) 20120209: * Fixed the theme of Dark Ocean. * Further tweaks on PulseTronic. * K2Epilogue: * Removed the 2n raise on the last chorus. * Tweaked Break2 a bit. (Still needs... something.) * Minigun sound effect improvements: * Pitch now controls motor speed/firing rate. * Message 2 allows changing speed/rate on the fly. * MiniFire no longer triggers reverb unless actually firing. * MiniFire now retrigs instantly upon message 1. * Proper test program. * sfxtest: * Added monophonic control Start/Gate/Detach buttons. * Tweaked the bottom bar layout. 20120208: * Finished PulseTronic...? (Retro Euro style fun.) * Intro + theme (WIP) on Dark Ocean. 20120207: * Options RESET and CANCEL now actually restore the previous config. * All GUI widgets that are inside a window now have a 'window' field as a shortcut reference directly to that window. * Added cfgwidgets.eel with "wired" configuration dialog widgets. * GUI toolkit now removes focus if a widget is disabled. * GUI widget Hide() now attempts FocusNext() instead of unfocusing. * Closing the Options dialog is now equivalent to pressing CANCEL. * Added ChipSound EXPORTALL toggle button to sfxtest.eel. * Started Dark Ocean song. (Basic sound snapshot.) 20120206: * Minigun sound effects. 20120205: * New ingame track: PulseTronic. (WIP) 20120204: * Added Broadcast() mechanism to the GUI toolkit. * Using Broadcast() to update options dialogs, for init and RESET. * [PAUSED] label hidden when the GUI overlay is shown. * Added pause, menu etc to the visualisation in input options. * Added a_exportall option for ChipSound exports. * Added -exportall switch for enabling a_exportall. 20120203: * Pad/stick GUI navigation now disabled when the options dialog is open. * Analog controller ranges normalized to [-1, 1]. * Added hat/D-pad support. (Simulates two-axis analog sticks.) * Control config dialog shows a '-' in front of inverted sources. 20120129: * Added control input visualization on the controls config page. * GUI widgets now have a 'color' field that can override the primary color of the theme; defaults to 'nil'. Supported by: * Label (Replaces theme cl_caption) * Statistics format changed to binary, to avoid the current problem with EEL running out of VM registers on large constructors. 20120127: * Added optional OnDelete() handler for all GUI widgets. * Any control input detection in progress is aborted when closing the control options dialog. 20120126: * Fixed vertical text centering. * GUI widgets can now have local custom fonts via new 'font' field. * Added 'symbolfont' to GUI themes. (Character codes 128 and up.) * Now using korataki-small where intended again. 20120125: * Added kerntest addon. * "Texture Quality" video option renamed "Background Quality". 20120124: * Added proper save function to glyphinder.eel. * Converted the bigger fonts to pixel based kerning tables. * Fixed the kerning implementation in gltext.eel. (Again.) 20120116: * Hand-pixeled small proportional Korataki font. * gltext.eel now sets font size to pixel-by-pixel scale by default. 20120115: * .glyph file kerning tables now deal in "virtual" pixels (that is, based the reference texture size first in the file), like all other coordinates in those files. * glyphinder.eel: * Added scaling for small fonts. * Fixed minor bug in grow() that would make glyphs one pixel smaller than intended on the right and bottom sides. 20120114: * Replaced fixedfont.png with fixedfont2.png, which is cleaner, more similar to Korataki - and about 30% of the file size...! 20120109: ====== TP2 release! ============================================== 20120109: * Some physics body methods moved to native code: Force, ForceRel, ForceAt, ForceAtRel, Velocity, TestLineZ. * Config Save() with _force == true no longer calls Changed(). 20120108: * Visual AI debug tools. * ScanLineZ() and TestLineZ() working properly. * Circler and dropshipper: * Now also randomize the FIRST cruise waypoint. * Introduced "detour mode" after turning around in dead ends. * Sensor dithering. * Halved game state inhibition times. * Removed physics body methods Torque, Move and Head. (The last one was overwritten by the vehicle interface anyway...!) 20120107: * Fixed the lava gun. * Boomerang 3 deals more splash damage when destroyed. * Added simple "free path" sensor to ai.eel. * Added ScanLineZ() and TestLineZ() sensor tools. 20120106: * Moved collision response to native code. * Impact() only called once for body/map collisions, with the total. * Added physics impact_return*, to absorb excess return energy, allowing stiffer contact handling without things going all bouncy. * Fixed crazy wobbling fire/smok puffs...? (fx.Burn().) 20120105: * Much improved impact absorption/deflection model. * Impact damage directly connected to collision response forces. * Fixed multiple zmap contact points bug; now ADDS corrective forces as intended. 20120104: * Some further physics engine updates and physics tweaks. 20120103: * Implemented simple physics collision response with overlap corrective forces + kinetic energy absorption. * Boomerang 3 collision radius reduced from 48 to 40. * TeleDropShip collision radius reduced from 224 to 216. * Vehicle HitZ handlers moved into vehicles.eel. * Implemented more proper Z map collisions. * Get the temporary high ground warning markers back + visual update. 20120102: * Inertia camera mode, for an even smoother experience! * Added v_scrollhead and v_scrollfilter. * "dumbchaser" trigger distance increased from 50 to 80. * Chase Bomb deals 250 in nominal damage. (Was 150.) 20120101: * Finished the fireworks. * Added sound.SfxEx(); like cs.Start(), but "safe". (Need to clean all that up some time...) * Tweaked the main menu buttons. * Tri-state title screen GUI; none/main menu/overlay. 20111231: * Messed some more with the physics. * Added NYE title fireworks. 20111229: * Extrapolation and other minor physics tweaks. 20111228: * All enemies and players collide with each other - no overlapping. * Mass scaled collision responses. 20111227: * Camera velocity extrapolation capped at 1/20 s for stability. * Body/body collision responses. * "dumbchaser" trigger distance increased from 40 to 50. 20111226: * Fixed the nervous camera. 20111225: * Fixed the camera shake levels. * SPACE works for activating GUI widgets again. * Controller buttons can bring the title main menu up early. * GUI navigation disabled in-game, except when the overlay is visible. 20111224: * Added the Ice Blue GUI theme from The Grumpy Pinball Ball. * Added dummy plugins to the remaining empty directories. 20111223: * Nicked the main menu horizontal devtools menu group solution from The Grumpy Pinball Ball. * Tweaked title logo and Thank You scaling and alignment a bit. 20111218: * Added "bin" format to serialize()/deserialize(). 20111216: ====== K2X release for LD #22! ================================== 20111216: * Added $.cleanup array, replacing the messy module Close() calls. * Fixed some EELBox bugs and eliminated most of the remaining memory leaks. (Still some issue with the physics after starting a game.) 20111215: * Inputmapper source::Delete() now supports an optional 'true' to put a nil in the list, to preserve positions. * opt_controls.eel uses the above. * Removed vertical axis negation in localplayer.eel; it's done in the config now. However, this breaks old configs! 20111214: * Fixed binding deletion in input config. * Added axis scale/direction support and direction detection to inputmapper. * Inputmapper now supports one-to-many mappings. 20111213: * Added v_showhud and -nohud, to disable the in-game HUD. * Config file now saved properly again. * Video recording/autoscreenshot now resets timing if it falls behind. * Logg messages when writing buffered video frames from RAM. 20111212: * Fixed font kerning. (Broke with EEL 3.3 due to dstring as index.) * hudwidgets.eel becomes k2widgets.eel, and the alert boxes and MainMenuButton are moved there. * GUI themes now cover the sound effects as well. * BorderImage got its own file, borderimage.eel. * Refactored GUI BorderImages and colors into the themes. 20111211: * Switched from "settings" to "config" everywhere, for less confusion. * deepclone() and deepcompare() moved into the EEL built-in library. * Serialize() and Deserialize() lowercased, to match the EEL built-in lib conventions. (To be moved there after implementing binary and possibly other serialization formats.) * Fixed Changed() test in config.Apply(). * Added $.config.s_*path keys. * Removed the smart logic from view.eel; not much point... * Removed config dependencies from physics.eel. (Now in loader.eel.) * Removed SPLASHFORCEFACTOR (5) and gave SplashDamage() a separate 'force' argument instead. * SysFont(), BigFont() etc become $.sysfont, $.bigfont etc. * Added GUI themes. (Halfway; some stuff still hardcoded in gui.eel!) * network.eel more apropriately named web.eel. * Moved constants from globals.eel into constants.eel. * All statistics code moved into statistics.eel. * fx and physics export their own respective rnd() implementations. (Both wired to ChipSound's RND for now...) * Fixed crash bug in SDL.SetVideoMode(); garbage return when closing the display. * Tweaked video and system option dialogs a bit. * world.eel split up into scroller.eel and map.eel. * serialize() now inserts strings with the value/object "stringrep" for unsupported types. (Instead of null bytes and whatnot...) 20111210: * Addons() moved to the right place. * Converted to using the environment ($) instead of Globals(). * Settings() moved to $.settings. * Naming cleanup; addon.eel, vehicle.eel etc to plural forms. 20111208: ====== TP1 release! ============================================== 20111207: * Switched to ShellExecute() for opening URLs on Win32. * OpenURL() now switches to windowed mode if in fullscreen. * Handling SDL.ACTIVEEVENT to (hopefully) get out of fullscreen mode when needed. Also hides the mouse pointer when leaving the window. * ChipSound timestamp wrapping bug in the API calls fixed. 20111206: * Globals().space is now cleared when a game is closed. * space.KillAll() in game Close(). (Shouldn't really be needed, but for some reason, spaces just can't be deleted right now, so we need to clean up as good as can...) * Improved inputmapper a bit: * Sources deal only with their own internal states, whereas targets combine state from their sources, frame by frame. * Multiple analog sources combine properly, by summing. * Buttons that stick due to dropped input events can now be unstuck by just pressing and releasing them. * Nicer, cleaner code! * Input mapper now has hysteresis in the digital state tracking of analog controls. * Added inputmapper target field "pressed" that's true if state > 0, to avoid "...state > 0" all over the place to handle certain analog buttons correctly. * hacks.eel exports ChipSound.Rand() directly, without the wrapper. * Added checksum to the statistics file, to make tampering harder. * Actually using the intended file name for the stats backup... * Added signed license file instead of the REGISTERED constant. * Wrote simple license file generator. * Fixed button OnClick callbacks in network.eel. (They need two arguments these days.) * Tweaked the title logo nebula positioning a bit again. * kobo2.eel renamed main.eel, for the MAIN_AUTOSTART eelbox feature. * Inputmapper:JustPressed() now reset states instantly, as a hack to avoid multiple trigs if used inside an event loop. (Is there a cleaner solution? Or is this behavior even preferable?) * Wrote README, EULA.txt and added the "licenses" directory. 20111205: * Sound effects working again - now without artifacts with long buffers. * Added missing cs.Detach() in the piano window in sfxtest.eel. * Fixed the fullscreen toggle again... * Added optional Delete() method for weapons, along with logic in vehicle.eel wiring them to Kill(). * Vehicles and weapons now detach IDd ChipSound voices when deleted. 20111204: * New ChipSound with timestamped messages to avoid the out-of-order commands issue that broke some sound effects. * Advancing audio time between physics frames for accurate timing regardless of rendering framerate. * Fixed physics/cs_Wait(). * Added ChipSound engine info addon. * Added gltext 'integeralign' flag that rounds to integer coordinates. (Fixes the sometimes blurry copyright message.) * Optimized gltext slightly by using gl.DrawRect(). 20111203: * Finally got a proper, optimized EEL/Win32 build to work! GCC 4.6 was a bad idea, and debugging that on Win32 seems to be next to impossible, as it wipes the stack clean even in the debugger. * EELBox executive wired to run kobo2.eel if no file was specified. * Added icon and version info to the executive. * Spawner Gun refuses to fire if there are more than 150 bodies in physics space. * ApplyVideoMode() should now do full restarts only when needed, and does NOTHING if nothing was actually changed. * Hiding and showing the GUI overlay, and toggling window/fullscreen resets inputmapper button states. 20111201: * Always doing full video reinit and texture reload after changing ANY video settings... * oapresents and thankyou now respond to controller buttons as well. * Added airescape pilot that flies the player ship off after winning. * Adrenaline bonus only updated in the PLAYING state. * Fixed the objectives counter that broke with the stats. * Drop ships spawned with random headings in survival. * Player spawned heading north instead of east. * Added RenderOverlay() method to gamemodes. (Render() is now in done game world space instead.) * Teleport effect when deploying player ship. 20111130: * Added setting st_maxscores to limit growth of the stats files. (This will actually only remove one entry for each new entry added when over the limit - so it'll NOT truncate existing files!) * Faster upper spinner on the teledropships. * Removed "Logger initialized." message. * Added and implemented s_log2stdout, s_realtimelog and s_cleanlog. * Fixed ReadMIDI() (AGAIN...!), so it won't return garbage if MIDI is closed or not compiled in. * Removed debug features from the default config. * Changed default v_worldtexres from 1 to .75. * Added "menu" target to the default config. * Grabbed default input config from the Win32 test system... 20111129: * Sorted out camera movement; following the player, killer, final target, or just leaving the camera where it is, as appropriate. * Cleaned up OpenGL matrix handling in world.eel. * Fade in pause and DEAD game state reset when the GUI overlay (with the CRT effect) is shown. * Cleaned up game state management; state transitions done by game.eel and details implemented the game mode plugin. * Copyright and FPS display rendered on top of any GUI widgets. * Physics info, input info etc moved to kobo2.eel for now. * Removed warning about dropping events for dead bodies. (That is totally expected, as bodies are not deleted instantly by Kill().) * Moved camera control to camera.eel. * "Filter" timeouts + accept buttons held down to leave WIN and DEAD states. * Removed half-fade in the DEAD state. * Added fade-to-white after the WIN state. * Hiding in-game alerts when the GUI overlay is shown. * Implemented camera shake effect. * Camera shake triggered by SplashDamage() in the vincinity of the camera. * kobomk2 death splash damage doubled to 100. * Activated physics body culling again...! Oops. * Added statistics.eel with stats and highscores. * Stats and scores saved in "kobo2stats.dat". * "kobo2stats.dat" backed up to "kobo2stats.bak" before overwritten. 20111128: * 50% larger HUD markers for primary targets. * No sqrt() in the collision tests! (A few % faster...) * Added PG_PRIMENEMIES and PG_PRIMGROUND groups for primary targets. * Physics run in all states in Survival Mode - no "auto pause"! * Event processing is now done after the Frame() calls, for things like timed shockwaves (as in, splash damage) to work properly with AUTORESETFORCES. * Cleared enemy/enemy/player collision masks, as we don't act on those yet anyway. * Cleaned up the game mode state machinery. * Die(), Damage() etc now take bodies instead of scorekeepers to track score and damage. * Added "follow killer" mode when the player is down. * Grenades now detonate on impact with any vehicles! 20111127: * Added CRT video effect for the GUI overlay and stuff. * Louder MegaCrash. * Physics: * Made Frame() a "native" field of the body class. * Implemented Frame() loop in native code. * Added some missing eel_disown()s. (Oops...!) * Checking collision masks BEFORE checking the hit circles; 145% faster! * Native body accounting. * EEL tables for core field lookups. (That is, binary hash search instead of chains of strcmp() tests.) Makes space Frame() run about twice as fast in physicsbench! * Various other optimizations. * Added -window option. 20111126: * Dirty ChipSound hack: Hardwired work buffers to avoid the click bug when using 'vol'. (Known problem - non-trivial fix...) * Added very rudimentary 2D positional audio; physics based distance. * Did some benchmarking on the physics and rendering. Scripted physics at 100 Hz is REALLY expensive - and naive collision detection for a thousand bodies is even more expensive... 20111125: * Larger explosions for teledropship and kobomk2. * Proper scaling/aspect of the HUD bar graph textures. * Internal scale/position eliminated from HUD widgets; using standard GUI ALIGNSCALE instead! * Added optional 'guard' argument to vehicle Consume(). * Reduced damage of lava and plasma guns from 10 to 7. * Boomerang 3 shield and health: 20 (was 25); energy: 30 (was 25). * Chase Bomb health lowered to 7. (Was 10.) * Teleporter Drop Ship health halved to 1000. * Scorekeeper now keeps running in the DEAD game state. * Kobo MkII afterburner won't fire if energy is below 10. * Explosion particles grow less over time. * Dropshipper gets longer combat and firing distances. (1200/900) * Explosion size larger and less random. * Further sound fx tweaks, to reduce "DC float" and clipping. (Need a proper master fx chain...) * Increased Kobo MkII reverse and strafe thruster force to 10. * Doubled Kobo MkII shield to 200, which is kind of what the default HUD implies anyway. * Meatier crash sound for the drop ships. * Removed sound effects from fx Explode() and Burn(). * New sound effects for Boomerang death and Grenade detonation. * Removed sound.eel Explosion(). * Kobo MkII got it's own KoboDeath and KoboCrash sfx. * Custom Grenade and Bomb sound effects. 20111124: * Tweaked the FireLava, FirePlasma and Klank sfx a bit more. * Added MIDI support via EEL MIDI. (Not the ChipSound test feature.) * Right mouse button on "sound" buttons selects without playing. * Sound Open() can now reinitialize and reload; no need to Close()! * "Reload" button no longer calls sound Close(). * Added Stage and Adrenaline HUD widgets. * Added BarGraph widget. * teledropship deals less splash damage when going down. 20111123: * GetPlugin() 'patcher' replaced with an optional field '__patcher' in the respective plugin registry group. * Plugin 'autoopen' now works for any plugins; not just addons. * Fixed Grenade "auto Z"; Z map interpolation calls for some margin. * Added 'hud' field to gamemode descriptors. * gui.Container() can now be visible, with styles "thin" and "light". * HUD is now a GUI form, and the HUD markers display is a widget. * Fixed GUI alignment; now works regardless of scene. * Added hudwidgets.eel, moving the new widgets there. * Gamemode objectives and accomplised fields moved into scorekeeper. * Added Score and Objectives HUD widgets. 20111122: * loader.eel: * Added basic "job list" system. * Proper backdrop + message log. * Nebula brightens and changes color with progress. * Title screen fade-out before leaving. 20111121: * Dropshipper is smarter with the lava and plasma guns, firing the one that's closest to the target. * MainMenuButton text drop shadow. * Dropshipper is less picky about hitting the patrol waypoints, to avoid getting stuck circling them after being thrown off route by enemies. * ElectroGun bullets move 33% faster. * Vehicle::Pilot() now also accepts a pilot factory as argument. * survival.eel pre-loads all entities used in Factory(), "solving" the bullet texture reloading problem for now. * Dropships are initially placed in a map sized circle, rathen than randomly. * Tweaked sounds Klank, MegaKlank, MegaDeath and FirePlasma a little. * Added voice ID argument to sound Sfx(), and new AllocVID() call. * Now using ChipSound Detach() properly, so we don't end up with countless sleeping voices! * Fixed Plasma Gun bullets; separate rendering functions for player, enemy and impact modes. * FirePlasma sfx has a long "charge" bleep after the last shot fired. * Lavagun sfx improved similarly. * Deleting input bindings now actually work...! 20111120: * Fixed line number debug info and stuff in EEL. * GUI now supports bidirectional controller and keyboard navigation. * When completing a stage: * Player ship is made indestructible. * Pilot is removed from the player ship. * HUD etc detaches from the player ship. * Primary fire and menu button now also "wake up" the title menu. * Secondary fire and sprint now starts the game from "prepare". * Added 'savesettings' flag that is set by ApplySettings(), so the config is actually saved when closing, after editing in the options dialogs... * Tweaked k2epilogue a bit; cleaner detune on the CuteSaw tracks. * Added MegaKlank and MegaDeath sound effects. * Kobo and teledropship hull damage sfx limited to one per logic frame. * Fixed the Explosion sfx; the noise now also responds to V. * Added 1 second timeout before FIRE prepares for next stage. * Physics 'offmapz' now actually used...! * SetModal() now ignores a widget that already is modal. (Fixes the dead main menu!) * Tweaked the color of the GUI overlay. 20111119: * GUI: * Added mouse button filtering for all widgets. * Added CurrentEvent(). * OnClick() now has a button argument. * Added widget::FocusPrev(). * Added FocusNext() and FocusPrev() module API calls. * Arrow keys wired to navigation, unless caught by widgets. * Rewritten focus handling. * RMB now deletes bindings in input options. * Input options now show proper name for all known keyboard keys. * Added inputmapper 'menu' target for showing/hiding the GUI overlay. * kobo2.eel now maps controller input to GUI navigation. * Added .negative trigger field for analog inputmapper sources. * Re-enabled the EEL peephole optimizer...! (DOH!) * Explobench says ~240 fps instead. 20111118: * Added fx.eel Burn() for the "going down in flames" sequences. * Flickering core orb when the teledropship goes down. * Plasma/northern lights/something Thank You particle effect. * Escape now also works to end the Thank You screen. * Kobo MkII and teledropship moved to FXMID group when going down. * Added clamping in Tween(). * Fixed physics overload handling. * Removed 'minhealth' argument from ai.NearestEnemy(). * Tweaked explosions a bit: * More efficient shadow part. * Fewer particles, less overdraw. * Twice as fast splash damage shockwave propagation. (1000 WU/frame) * eelbox kobo2 -map test1 -mode explobench -s -nosound -wt .1 -w 1280 -h 960 * Devsystem: ~230 fps Obviously, this is pushing fewer particles than the old version, but this is still around 140 bodies and 2000 particles! * Fixed grenade blend mode. * Fixed multiple buttons -> same target input mapper problem. * Inputmapper now intercepts all events first - GUI can't steal events from it. (Key state can run out of sync otherwise!) 20111117: * Added "captionsize" mode for relw/relh of widgets with captions. * Added RadioSelector 'childsize' that is applied as 'relw' to items. * New texture quality control: Number of texels per WU. * Added "Extreme" texture quality setting: ~2048x1536 * Added "Insane" texture quality setting: ~3200x2048 * Chase Bomb makes 150 damage (zero distance) instead of 70. * Added "going down in flames" sequence for teledropship. * Moved physics Z map and map collisions into native physics code. * Off-map areas now have "sea level" Z for collisions. * Masked out groups still collide with the sea level. (Hack!) * Body rendering order now sorted by group. * Various minor optimizations in fx.eel. * Moved body culling/rendering loop to native code. 20111116: * Background rendering fixed. * Added v_tiledebug. (Not rendering the full LAM; only non-culled.) * Added v_showtiles, making black outlines around "streaming" tiles. * "Continue" now just deploys a new ship and halves the score - no stage restart. 20111115: * Added RadioSelector widget. * "Tools" group in system options; v_levelshot, v_recordvideo, v_recordvideoram. * Audio options now uses RadioSelectors, and a nicer layout. * SettingsChanged() can now test specific keys. * "Serious" audio options are now applied by ApplySettings(). * world.eel: * TiledLayer::View() only Reload()s if the LAM was resized. * views.eel sets up g.w*[min|max] for the world view. * physics.eel now uses xmin, ymin, xmax, ymax view format. * world.eel is faking the above! View is still centered... * Optimized TiledLayer::Render() a bit. 20111114: * Finished the eelstrip tool, and tokenization support in EEL. * "Fixed" the dynamic video mode tree layout by essentially realigning everything when something in there is shown or hidden. (FIXME!) * The video mode "selector" is now just a browser, and the selected fullscreen mode is shown in a box on the side. * Removed the Custom fullscreen mode option. (That will be done by editing the numbers in the aforementioned box instead!) * Added a slight parallax effect on the title logo/nebula. * Sound effects working again! * Controls is now a single options page with sub-pages. * Nicer options page layouts. * Fullscreen toggle triggers full video restart only on Win32, or when s_devmode is set. * EELBox OpenGL fix: OpenGL state cache is now cleared on reload. * Moved texture wrapping control into EELBox OpenGL. * Fixed blend modes of some sprites. * Removed targets_index from the inputmapper again. (Broken.) * InputMapper now supports holes (nil) in the source arrays. * Added GrabInputMapping() for updating the config after changes. * Quicker thruster exhaust flame fadeouts. * Fixed in-game message positioning. * No texture reloading on VIDEOEXPOSE. * World Reload() no longer attempts to delete textures, as that will just delete the gfxmanager's texture if we're on a new context... * gfxmanager.Reload(true) no longer tries to reuse old texture names. * gfxmanager.CleanTextures() "sort of" fixed, but doesn't seem to do much cleaning... * world.eel now uses the top left corner of the map for off-map areas. 20111113: * SDL.SetVideoMode(false) now reinitializes the video subsystem again, so we don't segfault in gl.SetAttribute() later... * OpenGL reloaded by video.eel after the above, to avoid seemingly random segfaults. * Added "registered only" type message on the System options page. * Added 'packorder' for PACKVERTICAL and PACKHORIZONTAL. * Option page plugins now use 'packorder' to define page order. * Added simple timers to gui.eel. * Less stupid log noise about music. * No unintended restarting of currently playing music. * Added audio test button. * 'reverse' control removed from options. * Added sample rate and buffer size to the audio options page. * Added options a_sfx and a_guisfx. * Added "none" GUI rendering style for not rendering frames at all. * Added relw/relh "recursive" for recursive relative scale packing. 20111112: * Added a_enabled setting. * Added audio options page. * sound.Music() now handles settings, so we can apply changes instantly from the audio options page. * Added settings a_enabled and a_loadermusic. * game.eel now returns a chain of two scenes; Loader and Game. * Starting in fullscreen mode now uses the *fullscreen* settings. * Escape now also works to instantly bring up the title menu. * Moved video mode handling into video.eel. * Added v_glexceptions and v_doublebuffer. * Widget Hide() now forces realignment of the parent too. * Added settings hook registry and AddSettingsHook(). * Globals ApplySettings now applies video settings. * Added GUI SetStyle() with styles "normal", "thin" and "light" implemented for most widgets. * Removed IconButton() and FlatButton(). (Obsoleted by SetStyle().) 20111111: * Fixed BackupSettings()/RestoreSettings(). * The "Error" dummy sound now works after an Close()/Open() cycle. * TabBox now implements the selector bar as a component. * SetAlign() and SetPack() now refuse to accept anything but 0 or valid constants. * Proper graphics + blue lamp indicator for toggle and radio buttons. * Window sizing works again. (CENTER eliminated by first alignment.) 20111110: * Published new web site! * Added AlignInside aligner, for keeping windows and whatnot within their packer rects. (Really nice with resizable app window!) * The GUI root behaves a PACKFULL container locked to the display sive, that is, all root widgets have their p* rects track display size. * GUI widgets now virtual (vx...), packer (px...) and "actual" (x) coordinates, to properly support various sorts of aligners. * The CENTER feature for windows is now part of AlignInside. 20111109: * sfxtest and guitest addons now actually register as DEBUG features with the main menu... * Fixed the fullscreen toggle. (?) * Buy/web buttons slide in/out while the screen is fading. * Added REGISTERED constant that when non-false... * ...activates the s_presents setting. * ...activates the quickstart feature. * ...makes the s_devmode setting fully functional. * ...removes the buy/web buttons. * ...removes the Thank You screen. * Default v_skiplimit changed to 10. * Added CheckSettings() to implement various restrictions and sanity checks. * Added System settings page. * Game view scales to 1667 WUs diagonally. * Physics bodies now render in the correct scale again. * Widget Aligner() method renamed Packer() to avoid confusion. (Packing is the action of telling children where to go, whereas aligning is positioning oneself in relation to the rectangle specified by the parent's packer.) * Removed widget ScaleContainer. (Obsoleted by ALIGNSCALE.) * Added "huds" plugin directory with Huds() interface. * Added proper SetAlign() and SetPack() interfaces to go with the constructor flags argument. 20111108: * Still working on the official web site... 20111107: * Added network.eel. * All shared modules now have the appropriate 'module' directives. * Added "Buy Now!" and "kobo2.net" buttons in various places. * Updated and tweaked the Thank You screen. * Started updating the official web site. 20111106: * Added ScaleDome/DomeRect hack for the techdemo map. * Changed INSTANT ACTION to SURVIVAL, and reordered items. * Updated explobench with the new gamestate stuff. * Smaller stars in greater numbers on the title screen. * Minor starfield optimization. * Starfield uses 0.1.18 updated DrawRect() with z coordinate support. * Config loading/saving now behaves as intended. * SettingsChanged() now logs the motivation for its verdict. * Proper particle effect for the logo! (Also eliminates a 20kB jpg...) * Added video opt_video.eel. * Added options v_fswidth and v_fsheight. * GUI widgets now accept Show(false) as synonymous to Hide(). * GUI toolkit packers now skip invisible widgets. * Replaced setting v_flags with v_fullscreen and v_resizable. * Added globals.eel VideoFlags(), to assemble SDL video mode flags. 20111105: * Tweaked k2epilogue.csl a little. * kobo2.cfg now seems to be working! 20111104: * Random sound effects when leaving the Thank You screen. * Added k2epilogue.csl for the Thank You screen. * Added IIR mouse filtering. * Added mouse prediction. * Close display before final cleanup. (Depends on EELBox fix!) * Wait 700 ms after cleanup before finally closing ChipSound. * Added optional UserOnDown() and UserOnUp() callbacks for buttons. * Added virtual piano to sfxtest.eel. 20111103: * Added views.eel. * HUD now has square pixels, and elements align to screen edges instead of using a fixed coordinate system. * OpenGL viewport aspect ratio no longer restricted; always full size. * "Sprint" changed to "Afterburner" in the options. * Slightly larger "going down" explosions for Kobo MkII. * Fixed the Kobo MkII hull damage flash effect. * dropship renamed teledropship; Teleporter Drop Ship. 20111102: * Added random patrol mode (similar to dropshipper) to circler pilot. * No pause when in GAME_PREPARE state! * Added WarbleUp sound effect for GAME_PREPARE. * Added ScratchDown and ScratchUp sound effects for pause/unpause. * Softer Error sound. * Added the Auxiliary controls to the control options dialog. * Slightly randomized timing on electrogun firing and dropshipper spawning. * Even weaker boomerang3. * Game pause handled via a nice, central on/off/toggle method. * Cleaned up the sound API. ChipSound programs are now pulled in automatically, and are called by name via the sound.eel API. * Any .csl files in /sfx are now loaded automatically. * If no config file could be read, a default one is written. 20111101: * Added 'vehiclename' field to all vehicles, for quick identification in HUD code and the like. * Purple HUD markers with no distance limit for drop ships! * Weapon::Fire() is now a function that should return true whenever a shot was just fired! (Needed by dropshipper.) * Added group bitmask PG_ALLNPCS. * Added proper game states. * Added stages; each stage adds another drop ship. Destroy all drop ships to advance to the next stage. * Added "continue" feature; retry stage with new ship at the cost of half the score. * Scaled down weapon damage and enemy toughness a bit, to make player death in front of a drop ship slightly less instantaneous. * Chase bombs slightly larger, slower and more powerful. * Kobo MkII shield and energy replenish twice as fast. * Lava Gun has slightly more spread and higher average velocity. * Fixed 0..PI/2 fade bug in FadeRot4(), for smoother crossfading. * Added FadeRot4Q() for quarter rotation images, like the upper spinner on the dropship. * dropship: * Slightly smaller orb and spinners. * Cleaned up the upper spinner and added some detail. * Slow motion when completing a stage. * The dropshipper now does the proper trig to move in the right direction even when facing the wrong way. * plasmagun uses different bullet color if mounted on an NPC vehicle. * dropship thruster power lowered from 200 to 150. * Added v_groundwarnings, g_noclip and g_npcnoclip. * Added Klank sound effect, for player hull damage. * Temporary hacks for the Tech Demo: * techdemo.k2m: * Removed the dome terrain shaper. * Lowered the terrain height slightly. * Disabled map collissions for NPCs. 20111031: * Primary fire button can now be used to deploy new ship. * Added "pause" input mapper target. * Added third control options page for pause, screenshot etc. * Added weapon electrogun. * Updated lavagun and plasmagun to use DrawRect() instead of low level OpenGL calls. * Firing direction parameter for weapons now actually implemented! * Added sound effects Teleport and FireElectro. * Added dropship. * Weapons now actually fire from the position they're installed in! * Added aux1..aux4 input targets, wired to Fire(2..5). (For extra weapons, devices etc.) * Added HullDamage() hook for vehicles. * HUD bars now consider max values instead of assuming 100. * HUD bar alert flash added; used when health is below 25%. * Added stage display. * Score stage bonus awarded with 10% extra for each stage beyond 1. * NearestEnemy() now has a maxdist argument. * Added dropshipper pilot. 20111030: * Added backup/restore/apply API to globals.eel. * Added deepclone() in hacks.eel. * Added boomerang3 enemy. * Added circler pilot for boomerang3. * Placeholder graphics for the above: * boomerang3.png * electro-bullet.jpg * dropship-hull.png * dropship-core.png * dropship-spinner-1.png * dropship-spinner-2.png * blue-glass-ball.jpg * Added s_yawregtune setting. 20111029: * Avoiding some EEL module memory management issues by not using strong cross-references between K2 plugins. * Added GUI sound effects to the Thank You screen, for less confusion. * Lava Gun bullets now deal 15 damage and cost .5 energy (like Plasma). (Was 10/.25, which made it feel like there wasn't much point in using it over Plasma in any situation.) 20111028: * EEL 0.3.3. (Various bug fixes; support for .ess files.) * Some memory leaks "fixed" by reordering import statements and stuff. 20111027: * Added SafeSettings() to globals.eel. * -noconfig and -safemode command line switches. * Added serialize.eel. * Added usage() docs for -nomusic, -nosound, -noconfig and -safemode. * InputMapper wired to the settings. * Added tertiary control column in opt_controls.eel. * Larger options dialog window. (For 800x600+ display.) * Added OK, APPLY and CANCEL buttons to the options dialog. * GUI: * Added PACKVERTICAL and PACKHORIZONTAL widget flags. 20111026: * Globals().current_scene is now managed in the right place. * Fixed return from sub-scenes. * Fixed-size main menu items. * Added proper -nosound and -nomusic command line switches. * Added LoadSettings() and SaveSettings() to globals.eel. * GUI: * Added 'color' to Overlay. 20111025: * Split control options over two pages, with labeled groups. * Added in-game main menu. * GetPlugin() checks "autoopen", so those addons hang around even if they're opened before addon initialization! * Modularized the main menu. * "autoopen" addons are now locked in place as intended. * GUI: * Added Widget 'relw' and 'relh', with "childcount". * Nicer GroupBox. * Tweaked button borders. * More compact TabButton. * Larger size handle grab zone. * Darker, more translucent inaktive windows. * Added Widget DeleteComponents() and DeleteChildren(). 20111024: * Added s_devmode setting; * Adds GUITEST and SFXTEST to the main menu. * Mysterious config window closing issue "solved" with a 'try' hack in options.eel for now. * GUI overlay hides automatically when empty. * GUI overlay rendered properly, as in, with the correct Z order in relation to other widgets. (Fade-out after Hide() solved with minor hack in kobo2.eel instead...) * Added targets_index array to the inputmapper, to preserve the order of targets for the options dialog. (But, not using it...!) 20111023: * Framerate is only recalculated upon resets, for more stable readings. * Added framerater Rate10(); average of last 10 results. * 'timescale' parameter for Explode(). * Smaller and shorter chasebomb explosions. * GUI: * Added iconframe.png. * Added IconButton widget. * Added 'components', for "child" widgets that are actually to be considered part of their parent. * Added optional AlignComponents() member. * Window: * Added CLOSEBUTTON flag. * Added optional OnClose() handler, that can return false to refuse closing the window. 20111022: * Some plugin management refactoring. * Options dialog tab pages are now separate plugins. * Fixed problem with trying to focus an empty GUI overlay. 20111021: * Fixed v_skiplimit, hopefully... 20111020: * GUI: * Added optional 'flags' argument to constructors. * Added INSTANTCLICK and NOSOUND flags. * Tab buttons are INSTANTCLICK by default. * Sound effects triggered *before* click handlers are called. * Added 'addons' directory and wired it up to the module management. * Added addons.txt, documenting the addon interface. * Entities renamed plugins, as they're not just in-game entities. * Plugin registry kept in a sub-table in Globals(). * Stuff turned into addons: * options * sfxtest * guitest 20111019: * Fixed various issues related to assuming that table items are kept in the order they're added. (They're not, as of EEL 0.3.2!) * eelbox kobo2 -map test1 -mode explobench -s -ar 0 -wt 8 * Devsystem: ~92 fps 20111017: * Invisible player and no "game over" message in explobench. * EEL 0.3.2. Even faster! 20111015: * EEL 0.3.1. (Actually works reliably and stuff...! I think... :-) * DrawRect() now using vertex arrays instead of legacy calls. * Slightly slower on the devsystem. Not much difference on the old 2.4 GHz Win32 test system. 20110913: * EEL 0.3.0! (Some cleanup and optimizations, and a unified argument stack for all function argument passing, eliminating various problems.) 20110905: * Added physics.TestLineZ(). 20110904: * Tweaked the fx.Explode() a little: * Particles used for shadow: 25% (was 50%) * Fire particle size range: [.5, 1] (was [.15, 1.5]) * Particles/fire probability: 2% (was 5%) * eelbox kobo2 -map test1 -mode explobench -s: * Devsystem: 105 fps average * Old 2.4 GHz: ~1 fps * Added the v_skiplimit option to avoid freezing "forever" if the physics engine is overloaded. 20110903: * All detected joysticks initialized at startup. * Texture cache cleanup messages goes through the logger. * Added "force all" feature to gfxmanager.Reload(). * Fullscreen toggle now force reloads all textures. * Added optional Reload() interface for scenes. * game::Reload() now tells world to refresh its streaming textures. * Added "explobench" game mode. * fx.Render*Shadow() now use ix/iy instead of cx/cy everywhere. * Game now starts with the player and scroller in the right position. * Added "Grenade" (grenade.eel) * Added input detection filtering: * Value must be moving away from 0 and the absolute greater than 8192 (25%) for trig. * Smaller steps than 2048 are filtered out. * Proper error messages for missing entity factories. 20110902: * Modal dialogs over the GUI overlay will now prevent ESC from hiding the overlay. (Solves the "aborting input scanning kills GUI" issue.) * Proper success/abort notification from the input detector. * Added Globals().guisingletons. * ai.NearestEnemy() and Dumb Chaser look at health rather than energy. * Player input moved to the localplayer.eel pilot module. * "Auto single hand" now updates 'lastdir', so the ship doesn't return to the last aim heading when the move stick is released. 20110901: * Fixed some more memory leaks. * Moved "single hand control" to the move stick instead. * Changed input defaults. * Added desktop resolution fullscreen toggle. (F11) * Added texture cache with "reload as needed" feature. * Fixed crash bug in ChipSound Close(); close without open. * Added -ntm and -nbm options for disabling music. * Fixed some C<-->VM calling issues in EEL. 20110831: * Vehicles now have default weapons. * Added some error handling for attaching weapons and pilots. * physbody now keeps track of the Hit method ownership... * "Fixed" some memory leaks. (EEL is having problems with containers in static variables holding function references, as expected.) * Added keyboard dual control (WASD/,AOE + arrows). 20110830: * Added GameModes and the "gamemodes" module directory. * Added rudimentary Survival Mode. * Switch to name + fullname in module descriptors. 20110829: * Added test1.k2m as a quick background for benchmarks. * Proper logging in k2m_header.eel. * map/mode/skill options for the game Factory(). 20110828: * AutoThrust (fly with aim control only) in "dual" control mode. * .25 threshold for treating analog aixs inputs like buttons. 20110826: * Added Reverse control, for going backwards, away from the target aimed at, when using the "smart" control style. * Added Strafe() interface for vehicles. * Added "dual" control style. * Added i_movethreshold and i_aimthreshold settings. * gui.SetModal() now uses weakrefs for modal_save, capture_save and focused_save, so the GUI doesn't bail out if these are deleted. * Added default config for dual analog control on Xbox controllers. 20110825: * Now runs on actual Windows - even with drivers missing the "core" glBlendEquation() function that I'm not even using...! 20110824: * First Win32 build of the "Kobo II edition" of EELBox! Kobo II now runs... under Wine, at least. :-) 20110822: * Fixed the prematurely deleted bodies. (C->EEL call object passing bug in EEL.) * Corrected the weapen temperature bar positions. 20110821: * Implemented Perlin noise cache for bicubic interpolated terrain. * Strangely small speedup! * 36% faster overall on the techdemo map. * 45% faster when rendering only the coarse layer. * Final version (for now), using calculated span lengths or per-pixel cache refresh test depending on detail level: * 45% faster overall on the techdemo map. 20110818: * Kobo MkII update: * Implemented sprint/afterburner; * Up to 200% main thruster power. * .25/frame power draw from the weapon systems accumulator at 200% output. * Lowered normal operation main thruster power to 15. 20110817: * Added sprint/turbo support for vehicles. * The input manager no longer eats events; they're still passed on to the current scene's event handler. * The optional argument to event handlers now actually works. * Added globals.SPEEDOFSOUND; 5 WU/physics frame. * SplashDamage() now deals damage via events, delayed based on distance for realistic shockwave propagation. * Doubled the Explode() effect drag to .02. * Lowered globals.SPLASHFORCEFACTOR from 10 to 5. 20110806: * Testing particle explosions with static sprite textures. 20110707: * Vehicle defaults: * Health: 100 max 0 rep * Shield: 0 max 0 rep * Energy: 0 max 0 rep * Left bar is now shield + health. (Two bars piled, actually.) * Right bar is now weapon systems energy accumulator level. * Weapon temperature bars both on the right side. 20110706: * Death and scorekeeping built into the default Damage() method installed by NewVehicle(). Die() is the actual death handler, that is intended to be overridden by vehicle implementations. 20110705: * Damage accounting changes: * 'matter' is removed. * 'health' is added, wired to Damage() by default. * Vehicles only: * 'shield' is added, also wired to Damage(). * Weapon systems changes: * 'energy' is used for weapons only, wired to Consume(). 20110702: * Physics seems to work again! 20110701: * Fixed some cases of the physics engine messing with dead bodies. 20110627: * Fixed recursive VM entry. (Needed for the physics engine.) ("Vacation"; Westfield engine swap and whatnot.) 20110414: * Physics bodies are now Kill()ed rather than Delete()d, and actually removed in one go by Clean(). 20110413: * Fixed the physics body memory management issues. (Refcount inc's for GETINDEX etc...) 20110412: * Settings a_rate = 0 ==> audio disabled. 20110403: * Bodies linked to space. * Using space wide Advance() and Tween(). * Benchmark, all defaults, player dead, 2.4 GHz CPU: * New physics, native loops and collissions: * With collissions: Max enemies @ 60 fps * Z collissions only: Max enemies @ 60 fps 20110401: * Started implementing the EEL Physics (native) module. * Benchmark, all defaults, player dead, 2.4 GHz CPU: * Old physics, all EEL code: * With collissions: Max 120 enemies @ 60 fps * Z collissions only: Max 480 enemies @ 60 fps * New physics, all loops still EEL: * With EEL collissions: Max 130 enemies @ 60 fps * Z collissions only: Max 600 enemies @ 60 fps 20110330: * Some minor work on ZSDraw. 20110328: * Explosions use RenderShadow() for better inter-explosion blending. * Added v_recordvideoram setting. * News update with explosion screenshot. 20110327: * More explosion tuning; * Larger particle size variance * More uniform "shadow" particle sizes * Random smoke/particles among the fireballs 20110326: * Tuned the particle explesions a bit. 20110325: * Simple particle explosions. * Added g_physframerate setting. 20110323: * Knocked out by fever. 20110322: * Wrote balled.eel. 20110304-20110321: * Worked on the ZeeSpace editor, EBGUI etc. 20110303: * Mouse buttons can be used to leave the Thank You screen. 20110228-20110302: * Worked on EBGUI and ZeeSpace; complex regions etc... 20110227: * One memory module died, apparently... No work done. 20110226: * FINALLY, first video released, thanks to custom PNG "video" dump feature, ffmpeg and Cinelerra. 20110225: * Using gl. prefix for OpenGL calls in kobo2.eel. * Fixed stupid EELBox bug: CDROM no longer initialized. 20110223: * Focus sound only used for FocusNext(). * Activate sound moved to mouse down event. * Added SoundAbort, for off-widget OnUp() and the like. * Mouse cursor is hidden if there are no visible GUI widgets. * Added v_showfps and v_showphysinfo. * Wired the Options dialog to the Options main menu button. * Fixed (?) the focus issues when closing dialogs. * Tried to get some usable performance out of recordYourDesktop... 20110222: * Fixed events to a "capture" widget not being consumed as intended. * SDL event decoding moved into the input mapper. * Added OnOther(), so widgets can capture any kind of events. * Implemented input configurator. 20110221: * Adrenaline bonus display gets a "progress" bar. * Chase Bomb now dies if energy reaches 0, that is, not < 0. 20110220: * Switched to one marker per enemy, with free positioning. * Danger markers now scale and flash depending on distance. * Reduced Chase Bomb energy to 15. (Was 20.) * Reduced SPLASHFORCEFACTOR to 10. (Was 15.) * Added scorekeeper. * Fixed stuck/dead modifier keys bug? (Using ev.mod now.) * Added score display. * Added adrenaline bonus multiplier display. 20110219: * Added ToggleButton, RadioButton and TabButton. * Finished TabBox etc. * BorderImage() handles "too small" rectangels a bit nicer. * Implemented dot-for-dot widget alignment with correct rounding. * Implemented simple danger warning markers on the HUD. * Switched to bit masks for group membership. * Implemented low frame rate emergency pause. * Reduced Chase Bomb thruster power from 3 to 2. 20110218: * Increased friction on the Kobo MkII. * Fixed SetFocus() being done for every input event. * Added joystick support! * Added input detection features to inputmapper.eel. * Added glasspanel.png. * Added FlatButton, Label and Container widgets. * Started working on options dialog. * Added TabBox and TabPage widgets. 20110217: * Nicer button focus effects. * Button "pressed" effects. * Reverted to special rendering in kobo2.eel for that nice overlay fade in/out effect. * Less annoying mouse cursor! * Added DrawRect() and some state caching to the OpenGL wrapper. (Not that it seems to make any measurable difference...) * Benchmark, paused, Chase Bombs, shadows, halos using: * GL_QUAD: Max 650 enemies @ 60 fps * DrawRect(): Max 710 enemies @ 60 fps * Sprite texture rotations now match physics angles. * Game paused at application focus loss! * Tweaked the yaw regulator on Kobo MkII a little. * Simple "stick" effect for targets for the Lava Gun. 20110216: * Widget alignment via member than can be replaced as needed. * Added PackHorizontal packer. * Added GroupBox widget. * Posted an update with some screenshots. Facebook broken... 20110215: * Reworked sound.eel slightly, using constants instead of calls. * Fixed some Open()/Close() and error handling bugs in ChipSound. * Tweaked the sound effects a little. * Added quick hack experimental rotating screen mode. 20110214: * Added GUI sounds * Various GUI tweaks and fixes * scene:Frame() renamed :Render(), to avoid confusion. * Splash damage applied only to player, enemy and item groups. * Added rudimentary collission detection. * Added bullet impact sounds. 20110213: * The Steam style GUI overlay becomes a fullscreen widget. * Added switches for title and ingame music in the settings. * Added some nice buttons, highlight effects and stuff to the GUI. 20110212: * Unlimited number of weapon slots; configurable per vehicle. * Fixed EEL bug that leaked imported functions into the exports! * Fixed the "scale changes terrain" bug. 20110211: * Kobo MkII is now a proper vehicle with standard controls. * Weapons now draw energy and/or matter from the vehicle they're attached to. * Matter grows back like energy, only slower. 20110210: * Added main menu with selection highlight effect. * gltext.eel now compensates for the baseline adjustment of fonts using .glyphs files. * Added keyboard shift states to Globals(). * Quit shortcut is now ctrl+q. * Window border shadows are now outside the active widget area. * Plasma and Lava guns converted into proper weapons. 20110209: * Added Window() widget. * Added 'subfocus' feature for windows. * Added kerning pairs to .glyph file format. * glpyhinder loads and saves kerning pairs, but no editor. * Chase bomb laser trigger flashes at a lower rate. * Tweaked the Korataki .glyphs, and added some 170 kerning pairs. * Added korataki-regular.png/.glyphs. * Added fixedfont.png. 20110208: * 'nogui' switch for scenes that want to disable the GUI overlay. * Added BorderImage() for window frames, buttons and the like. * Added windowframe.png. 20110207: * Added HUD marker arrows. * Mostly marketing research, feedback requests and stuff... * Released new screenshot (official)! * Released title song WIP at indiegamer forums. * Started implementing a GUI toolkit. * Fixed mouse cursor "cannot hide" bug. * Added fullscreen gray-out under GUI overlay. * Added GUI zoom in/out effect. 20110206: * Added the Render() "ball generator" to gfxtools.eel. * Chase bombs are shiny and "3D"! * Released title song WIP on the indiegamer forum. * Simplified and improved physics of the chase bomb; it just keeps pointed at the target, firing a single thruster to get to it. * Added Chase Bomb engine exhaust flame. * Splash damage scaled by distance squared! (Forces unchanged.) * ai.NearestEnemy() now has a 'minenergy' argument, and Chase Bombs no longer re-lock onto a dead player. * Kobo MkIIb - some minor updates on the engines. * Optimized TiledLayer:Render() a bit; now only renders on-screen tiles! * Added massive friction and drag to Explode(), to keep explosions from flying all over the place due to splash damage. 20110205: * Benchmarks, release build: * Off-screen culling: Max 1100 ChaseBombs @ 60 fps * Added FadeRot4() blending rotation. * Added Kobo MkI placeholder sprite, 4 lighting frames. * Added i_controlstyle config option. * Weapons, vehicles etc in subdirectories, scanned on startup. * Implemented generic splash damage in physics.eel. * Enemies splash damage each other! * Player delivers splash damage when crashing. * Chase bombs are now blue with red spinning laser triggers. 20110204: * gltext.eel: * Removed unused Offset() method. * Moved all per-glyph info into the .glyph array. * Cleaned up the code a little. * Moved Begin()/End() outside the character loop. * Fixed bug in EEL delete() for arrays. * Various presentation tweaks. 20110203: * Replaced font with Korataki glass font for additive blending. * Wrote a small tool to mark glyphs in images. * Added support for .glyphs files to gltext.eel. * Added physical texture width/height to the texture "handles". 20110202: * Started implementing ZeeSpace shapes and regions. 20110201: * Moved the Intensity modulation of RGB out of zs_Blit2SDL(), into the new zs_ApplyIntensity(). * Started working on ZeeSpace complex regions. * Added edge detection hack for HUD high ground warnings. * Added exhaust flame generator with scrolling texture + halo. * Added proper heat halos for the guns. * Disabled 'autopower' altogether. * Re-enabled the brake thrusters, for quicker 180° turns. 20110131: * Benchmarks, release build: * With rendering: Max 700 ChaseBombs @ 60 fps * Without shadows: Max 1000 ChaseBombs @ 60 fps * Shadows first: Max 650 ChaseBombs @ 60 fps * Without rendering: Max 1300 ChaseBombs @ 60 fps * Added RenderComplexShadow(). * Added v_scrollmode and smooth scrolling mode.