In this section you can check out what I'm currently working in, practically in real time.
If some of this seems cryptic it's because the logs seen here come directly from my personal productivity tool prio, and are really just "notes to self".
Nevertheless, if you are interested in what I'm currently working on, this space will certainly be updated FAR more often than the news section.
21:00:22 ace CLOCK: 0.1 days (01:46 hours)
20:40:42 ace LOG
Reduced the number of ogg vorbis frames again to reduce bus congestion.
20:17:22 ace LOG
More "factors" in object shader (backdrops):
-sun factor: in modulate mode -> (albedo * sunlight) * sun factor
-sun factor: in add mode -> albedo + sunlight * sun factor
-rim factor: always additive, rim * rim factor (on top of whatever else there is)
-emit factor: always additive, emit texture * emit factor (on top of rim and whatever else)
You can use extreme factors (i.e. 100, -50) and get extreme effects.
20:14:48 ace TASK: emit multiplier
20:14:36 ace TASK: rim multiplier
20:14:33 ace TASK: sun modulate factor should work in add mode as well
17:21:03 ace CLOCK: 00:37 hours
17:19:22 ace LOG
Ingame splash only in public exe, not in editor.
17:19:06 ace TASK: ingame splash
16:44:33 ace TASK: native mesh cursor
16:44:30 ace TASK: native techscreen meshes
15:45:30 ace CLOCK: 0.1 days (02:19 hours)
15:10:04 ace TASK: native membrane meshes
14:29:44 ace TASK: native blendmesh format
13:55:07 ace TASK: optimize .obj loading to some kind of cache file? look into how it was done with lightmapmesh...
13:45:07 ace LOG
Wrote some code to optimize the fairly tedious wrangling of .obj files. There is a lot of position / uv / normal matching going on that takes a bit of time.
There are differences between both vertex formats (custom export formats) as well as how many of the potential objects within an .obj are used, so there will be multiple export file formats, all binary.
02:06:55 ace CLOCK: 0.2 days (04:18 hours)
21:48:25 ace TASK: program startup splash (small, own window)
21:12:48 ace CLOCK: 0.1 days (02:41 hours)
19:41:48 ace TASK: bug: black hole cuts deflectors
18:59:56 ace TASK: username on backdrops
18:31:00 ace TASK: solve backdrop loading hitch
18:05:27 ace CLOCK: 0.1 days (02:05 hours)
15:43:35 ace CLOCK: 00:58 hours
18:59:33 ace CLOCK: 0.2 days (03:56 hours)
17:04:54 ace TASK: reimplement thunder effect?
15:43:39 ace TASK: fix "worn metal" effect for decoy
22:48:53 ace CLOCK: 0.1 days (02:57 hours)
22:17:16 ace TASK: be able to delete options patches (except default)
21:51:11 ace TASK: tooltip delay
21:04:16 ace TASK: fix stringwidth to include character spacing (world)
17:08:33 ace CLOCK: 0.1 days (02:29 hours)
17:05:52 ace TASK: tooltips
18:20:06 ace CLOCK: 00:33 hours
17:46:59 ace TASK: experiment with lerped aiming when using arrow keys
17:31:20 ace TASK: banner and points shouldn't render when menu is up
15:29:11 ace CLOCK: 0.1 days (02:31 hours)
15:23:30 ace LOG
Ogg/Vorbis streams now buffer 10x the data (about 2 MB).
15:22:28 ace LOG
Linear to logarithmic, sure, but what is actually HEARABLE is something else...
15:22:11 ace TASK: correct the lin to log conversion for volumes
13:38:23 ace TASK: button that works on mousedown for volume "sliders"_
23:47:31 ace CLOCK: 01:07 hours
23:47:21 ace TASK: sound and music volume options
22:30:09 ace CLOCK: 0.1 days (01:28 hours)
21:56:45 ace LOG
My old DirectX 3 sound code has got to be the oldest code I'm still maintaining... ick...
A good opportunity to clean it up is now...
20:14:07 ace CLOCK: 00:43 hours
20:04:32 ace LOG
MetalEffect also now significantly simplified.
20:03:57 ace TASK: put outline into shader instead of separate call
19:11:37 ace CLOCK: 0.1 days (01:22 hours)
19:08:45 ace LOG
Removed redundant alpha channel from slowcreep.
19:05:03 ace LOG
Outline support (on both static and animated meshes) was bothering me significantly, as it was done as a completely separate invocation of the effect in question (albeit with cheaper vertex and pixel shaders...).
I have restructured BlendEffect to do it all in a single call (still 2 passes inside the effect). Yes, still 2 draw calls, but there is less overhead of setting up the effect instance completely from scratch = CPU work moved to the GPU.
19:00:08 ace TASK: offset cursor even further than "on top offset"
17:55:46 ace TASK: add escape support to all menus
17:01:45 ace CLOCK: 00:16 hours
16:42:20 ace CLOCK: 0.1 days (02:26 hours)
16:37:45 ace TASK: solve cursor on all backgrounds problem
16:14:10 ace TASK: remove windows cursor
16:14:08 ace TASK: menu cursor vs game/aim cursor
18:09:28 ace CLOCK: 0.1 days (01:39 hours)
17:51:19 ace TASK: inspect / edit / save non-local options
17:51:16 ace TASK: play with non-local options
16:59:57 ace TASK: escape menu item placement
14:43:00 ace TASK: local::Options -> vc::Options
14:42:56 ace TASK: backend::Patch -> vc::Patch
14:15:23 music TASK: Superman warped stems to Ola
23:18:27 ace CLOCK: 0.1 days (02:08 hours)
23:17:33 ace_art TASK: screen_edge.png texture for screen.obj corners and edges
22:56:54 ace TASK: remove web version of options backend
22:56:53 ace TASK: remove ioptionslist, ioptionsstore interfaces
21:34:26 ace TASK: alignment of numbers vs text in scoreboard
21:13:49 ace TASK: use OptionsTable for filter select (scoreboard)
19:07:17 ace CLOCK: 0.2 days (04:24 hours)
19:05:40 ace TASK: re-use pagination code for options patches
16:21:57 ace TASK: scoreboard mode to display all scores, regardless of options patch
16:21:44 ace TASK: options patches locally, even in web case, much better
22:18:05 prio TASK: rename tables to have a prio_ prefix
22:07:24 prio TASK: escape task names
21:21:04 ace CLOCK: 00:51 hours
21:10:25 ace TASK: apply in graphics options shouldnt close menu
21:10:23 ace TASK: property sheets in options screen
20:17:49 ace CLOCK: 00:08 hours
19:18:27 ace CLOCK: 0.2 days (03:36 hours)
19:16:09 ace TASK: better tutorial
19:15:50 ace TASK: constant positions in tutorial
16:52:51 ace LOG
The decision has been made to remove the so called "achievements" from the game.
The original intent was to accomplish something akin to the very popular Achievement trend going around, for example in StarCraft II. What came out, without too much though, was something more akin to "statistics" or "rankings", and wasn't very interesting at all.
In the interest of time, and considering that I don't really have any ideas for "real" achievements in this title, I'm going to leave it out.
16:51:18 ace TASK: remove achievements
16:02:37 ace TASK: remove gameover page
18:46:40 ace TASK: adjust highscores screen for long accountnames (mad)
18:45:58 ace TASK: bug: when starting up cannot browse scores (go straight to scores menu)
18:42:20 ace CLOCK: 0.1 days (02:39 hours)
18:37:34 ace TASK: web implementation of options patches
16:39:07 ace TASK: replays include options flags, making them self sufficient
16:39:04 ace TASK: model options as simple flags, set on reset?
14:56:16 ace CLOCK: 0.1 days (01:21 hours)
12:48:20 ace CLOCK: 00:16 hours
12:46:08 ace TASK: test replays online post hangar removal
11:46:03 ace LOG
Lots of little subtleties in getting the web backend up and running again, all the while trying not to disturb the beta.
11:45:18 ace CLOCK: 0.1 days (01:20 hours)
10:47:54 ace TASK: move options from settings to profile, alongside achievements
00:35:33 ace CLOCK: 00:31 hours
00:07:33 ace LOG
Looks like the current setup makes sure that the correct options patch is loaded regardless of any user hacking (in the editor) prior to game start. This means that we don't need a "gui copy" for editing.
00:06:29 ace TASK: need a copy of options to allow cancellation of editing?
23:44:42 ace CLOCK: 0.1 days (02:47 hours)
23:13:40 ace LOG
Restructured interfaces for options storage in preparation for web implementation.
19:00:46 ace CLOCK: 0.1 days (02:53 hours)
18:25:54 ace LOG
Options patches need to be split in the backend into a list and a storage interface.
This is in keeping with the other subsystems, and much an artifact of the fact there are HTTP implementations. It is much easier to encapsulate upload and download as separate concerns (separate classes).
This will probably also (for the better) remove all Model dependencies on options related backend interfaces.
17:02:09 ace TASK: test replays locally post hangar removal
16:59:37 ace TASK: remove hangarcontroller
15:59:44 ace CLOCK: 00:21 hours
23:59:57 ace CLOCK: 01:10 hours
18:39:02 ace CLOCK: 0.1 days (02:10 hours)
18:33:45 ace TASK: unify farplane shader, same caps for starfield and clouds, separate draws
16:50:20 ace TASK: solve text on all backgrounds problem
16:49:34 ace TASK: multiplier not in banner?
15:10:29 ace CLOCK: 0.1 days (02:00 hours)
15:08:54 ace TASK: fix farplane shader to work with textures of any size
14:43:16 ace TASK: fix aggression diodes
13:21:44 ace TASK: fix hud powerups
01:00:00 ace CLOCK: 0.2 days (04:01 hours)
23:11:44 ace LOG
Planets are now generalized to "objects" in backdrops, and dynamically loaded just like the texture pool.
The shader is the same as for planets previously, so you get an albedo, an optional emit, a single directional light, plus rim lighting. As before you can choose to modulate or add the directional lightsource, whil the rim lighting is always added.
23:09:00 ace TASK: dynamic planet loading
19:17:24 ace CLOCK: 0.1 days (02:47 hours)
19:06:40 ace TASK: bug: adding new texturecandidate destroys size information in existing ones
15:44:34 ace CLOCK: 0.1 days (01:26 hours)
20:29:29 ace CLOCK: 00:09 hours
19:44:05 ace CLOCK: 0.1 days (02:56 hours)
19:42:47 ace LOG
The current crop of plane deformations for the starfield shader are not compatible with clouds. Hopefully I will be able to make them work together.
19:41:53 ace TASK: integrate plane deformations
16:10:42 ace CLOCK: 0.1 days (02:29 hours)
16:03:06 ace TASK: remove yaw pitch roll from ScreenEffect
16:00:34 ace TASK: logo tests
14:58:10 ace LOG
screen_edge.tga -> screen_edge.png
14:53:03 ace LOG
screen.obj updated to contain what is hopefully the final scheme for the "techscreen". Observe that since we're using an orthographic projection the parts don't need sides or backs (saving both mesh space and texture usage).
screen_edge.tga: Used for the corner and edge pieces. The shader is textured but completely without lighting, so what you draw is what you get. Map all corners and edges to this texture. Should be changed to a .png.
screen_pattern.png: Used for the subtractive blend from the "cyber glass" screen.
screen_screen.png: The 1d ramp used for the main "cyber glass" effect.
14:45:56 ace TASK: finish "cyber glass" gui background
14:45:47 ace TASK: test jonas ideas for gui edges
09:10:36 ace CLOCK: 00:21 hours
09:09:32 ace LOG
New constants control aspects of the new techscreen pattern:
18:57:51 ace TASK: some kind of animated visual detail in the gui screen shader
17:32:31 ace CLOCK: 0.1 days (03:16 hours)
17:04:56 ace TASK: farplane to shader
13:41:37 ace CLOCK: 00:11 hours
13:20:39 ace CLOCK: 0.1 days (01:19 hours)
13:12:18 ace LOG
Moved hud rendering to a HLSL shader; this reduces draw calls from 4 to 1.
13:11:51 ace TASK: hud to shader
18:30:39 ace CLOCK: 0.1 days (02:33 hours)
17:22:52 ace TASK: remove hangar, have new plate background for frontend
16:32:24 ace LOG
Got sidetracked into thinking about resolutions and aspect rations, and as a result have changed the model to use 768 x 464 units instead of 640 x 464.
This is in keeping with the thought that the game is designed for 1920 x 1200, i.e. 16:10 aspect ratio.
There are a number of tricks involving screen borders that can allow for correct aspects across all resolutions and monitor aspects (using a user defined aspect ratio), but that can wait.
15:11:29 ace CLOCK: 01:06 hours
14:32:37 ace LOG
I wanted to be able to use non-pow2 textures for the backdrops (by now we are married to that idea), but apparently some older GPUs can't handle unconditional support of such.
Will have to code a workaround...
20:32:08 ace CLOCK: 0.2 days (05:33 hours)
23:35:08 ace CLOCK: 0.1 days (02:01 hours)
20:57:20 ace TASK: keyboard scale of planets
20:57:18 ace TASK: keyboard movement of planets
18:23:42 ace CLOCK: 01:11 hours
18:18:05 ace TASK: farplane color multiplier
17:45:26 ace TASK: oscillate / sinus motion for farplanes
22:36:40 ace CLOCK: 01:05 hours
22:12:37 ace TASK: rotation of uv movement
21:50:50 ace TASK: cloud layer alpha blending support
21:31:45 ace LOG
-mirror / wrap mode for farplanes
-copy functionality for entire backdrops
-enable / disable individual planets
21:30:52 ace TASK: option for wrap or mirror mode
21:05:19 ace CLOCK: 0.2 days (04:33 hours)
16:00:39 ace CLOCK: 0.1 days (02:49 hours)
20:01:56 ace TASK: aggression / multiplier meter
19:29:39 ace CLOCK: 0.1 days (01:13 hours)
15:53:43 ace CLOCK: 0.1 days (01:40 hours)
13:22:33 ace CLOCK: 00:26 hours
11:34:55 ace CLOCK: 00:08 hours
11:13:24 ace CLOCK: 00:29 hours
02:00:00 ace CLOCK: 00:30 hours
01:46:02 ace LOG
Subtle persistence issues with the backdrops...
The use of Jet in the implementation of persist::TextContext leads to unpredictable instantiation orders when using persist::Persistent
After some thought I realize that this is a good thing; the client shouldn't count on any specific order as these instances are held in a conceptually unordered set (a mathematical set).
The persistence scheme used in the particle system is the key, i.e. a little more work must be done to properly identify hierarchical structures.
01:43:07 ace TASK: look into effects of ordered (numerical) instantiation of persist::Persistent
01:43:06 ace TASK: change persistence of farplanes to be consistent with persistence implementation details
01:29:20 ace TASK: decoy death kills colliding roid
23:48:57 ace CLOCK: 00:18 hours
23:21:48 ace CLOCK: 0.1 days (03:23 hours)
19:00:50 ace CLOCK: 00:00 hours
12:33:32 ace TASK: support for deleting backdrops and orphaned planets
15:34:47 ace LOG
Backdrop system looking pretty promising.
14:30:34 ace CLOCK: 0.1 days (01:17 hours)
14:10:26 ace TASK: multiple backdrop instances
13:09:16 ace CLOCK: 00:49 hours
12:25:35 ace LOG
All backdrop textures now managed, loaded and shared on demand.
12:25:17 ace TASK: handle texture redundancy in backdrops
11:00:07 ace CLOCK: 0.1 days (01:33 hours)
10:59:46 ace LOG
-per planet texture
-modulation factor for sun mode = modulate
10:58:29 ace TASK: per planet texture
10:09:19 ace TASK: backdrop color (sun and rim) colorpicker support
09:09:44 ace CLOCK: 0.1 days (01:19 hours)
09:08:40 ace LOG
-switched to additive rim lighting regardless of sun blending mode (add or modulate)
09:07:48 ace TASK: per planet rim lighting
08:58:31 ace LOG
-external control of sun and rim colors in planet shader
-added modulation / add option for planets
-added emit pass
08:57:36 ace TASK: backdrop color (sun and rim) control
23:53:45 ace CLOCK: 0.2 days (03:51 hours)
23:52:58 ace LOG
Basis of backdrop editor is implemented. Still need support for texture per planet instance, lighting, and multiple backdrop instances. This will probably work like skyboxes did.
23:49:23 ace TASK: backdrop editor
20:25:48 ace LOG
Working on new backdrop solution and the editor for those.
19:20:37 ace CLOCK: 0.1 days (01:22 hours)
21:10:56 ace TASK: debug powerup shading problems
20:50:53 ace TASK: use previous powerup ramp
19:58:40 ace TASK: remove skybox
19:58:38 ace TASK: singular light ramp texture for ingame
18:21:15 ace CLOCK: 0.1 days (01:28 hours)
18:20:21 ace TASK: flatmenucontroller refactoring, can we extract a specific gui?
15:32:55 ace TASK: restore graphics options
15:13:20 ace CLOCK: 00:29 hours
15:06:32 ace TASK: local persistence of options patches SHALL NOT be binary
15:05:00 ace TASK: if all options are boolean, use bitflags instead
15:04:54 ace TASK: see if starfield and clouds can be baked loadtime
15:01:19 ace LOG
Got some stuff done in Kristianstad:
-going to attempt to use non-pow2 textures for backdrops
-support for any resolution of backdrops
-support for texture mirroring
-gameplay options as bitflags
14:10:58 music TASK: live pack Donkey Thong