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.
13:38:00 uppmse CLOCK: 0.1 days (01:22 hours)
13:35:16 uppmse TASK: beamdog image: icon
13:33:47 uppmse TASK: beamdog image: chip
13:28:53 uppmse TASK: beamdog image: boxart
12:36:07 uppmse TASK: beamdog image: background
12:13:59 uppmse CLOCK: 00:15 hours
12:00:03 ace LOG
Damn it all, ACE is crashing on the score screen in both demo and retail.
The current build doesn't have this (I'm suspecting some BeamDog badness), so now is a good time to get a new release out there.
Of course the DeployTool is having issues and can't encrypt the exes!
I have contacted Philip, will be testing again soon.
11:58:43 ace CLOCK: 01:06 hours
10:51:35 uppmse CLOCK: 00:04 hours
10:38:39 prio TASK: move label stats from history/all labels to stats page
10:23:23 prio TASK: reuse time span filter from history on stats
23:07:36 uppmse TASK: test retail with demo profiles
23:07:35 uppmse TASK: test demo with retail profiles
23:07:34 uppmse TASK: test demo
21:49:35 uppmse CLOCK: 00:28 hours
21:40:40 uppmse TASK: post death delay before menu
21:30:51 uppmse LOG
The solution was to not store the current mission explicitly at all, but rather to figure it out based on mission statistics.
Any mission that has no stats at all OR has stats with an incomplete completion status is the current mission. Funkis!
20:54:17 uppmse CLOCK: 00:10 hours
20:44:58 uppmse LOG
...and of course that didn't work...
If you play a bit in retail (with the aforementioned profile) and then switch back to demo, load it up, then quit and play retail again = you get the same problem, as the demo tried to resolve a mission hash that it didn't have and subsequently set the pointer to NULL, persisted it, and then the retail version assumes that the game is complete.
20:23:47 uppmse CLOCK: 0.2 days (03:50 hours)
20:00:53 uppmse LOG
Insidious bug fixed:
When completing the demo version, you run out of MissionInfo objects, and hence your profile points to NULL.
When taking that profile to the retail version, a NULL MissionInfo pointer means that the game is complete, and messes up the menus.
This has been fixed by including an extra mission (the first of the second planet) in the demo build. This will bloat the assets by that much (about 1 mb) but that is no big deal.
19:58:40 uppmse TASK: bug: completed demo profile leads to awards ceremony in retail
19:46:01 uppmse TASK: fixme: escape menu doesn't reflect current mission medals
19:19:52 uppmse TASK: remove shitbombs from "all enemies" count
19:00:22 uppmse TASK: colored special weapon hud
17:50:34 uppmse LOG
Fixed bug where you could escape the shop menu to "nothing".
17:30:08 uppmse LOG
Moved the tricky penny on Volcanic Activity out from behind the rocks.
16:15:59 sandblox CLOCK: 0.1 days (03:31 hours)
16:05:02 sandblox CLOCK: 0.1 days (02:05 hours)
14:25:35 sandblox TASK: smooth & point sampler support in terrain
13:58:58 sandblox TASK: configurable uv div in terrain shader
13:11:58 sandblox LOG
Can probably get better mileage out of the inf thing by trading off both number of quads in a chunk (can have more tris per draw call) as well as the world space size of a quad (can see farther). A 32x32x2 tri chunk at 2 units per quad is probably good.
11:22:43 sandblox LOG
Have been messing with infinite worlds in this project too, and it was a much better fit than ztank due to the existing infrastructure.
Have switched to building the nearest chunk (to the viewpoint) first, and this feels much better. Coupled with culling this should get even better still.
00:11:27 sandblox CLOCK: 0.2 days (04:41 hours)
16:11:21 johno.se TASK: favicon
16:41:41 codebase TASK: assettracker nwf support
12:38:32 eco TASK: filled / line graph options
18:05:28 eco CLOCK: 01:03 hours
18:05:14 eco TASK: graph it
11:14:27 prionews LOG
Reinstated the graphing of history (previously only retired tasks) on the new Statistics page. The time filter still needs some style work...
11:13:11 prio CLOCK: 00:05 hours
11:07:39 prio CLOCK: 00:11 hours
09:06:53 ztank LOG
Basic infinite mesh generation, needs lots of work...
09:06:39 ztank CLOCK: 0.2 days (03:59 hours)
06:51:17 ztank LOG
...but of course the lighting heavily accesses the world representation, which in turn calls a lot of noise functions.
In any case, with a dynamic model there will be caching going on of each chunk, so this shouldn't be as much of an issue.
06:37:14 ztank LOG
Messing about with the concept of using this stuff for infinite maps.
Right now I'm running without any caching of simplex noise, so each call to Sector::Tile() is two simplex noise calls (one for world, one for entity). Surprisingly this isn't the bottleneck, the lighting is; using simple lighting allows for near realtime generation of the entire world mesh at 32x32.
This means that the mesh generation, given further chunking, will not be an issue.
21:01:17 uppmse TASK: remove all file writing to data dir (like caches) from rc builds
20:54:23 codebase LOG
After some initial experimentation I decided that the compressed .nwf format ideas aren't worth the trouble.
The issue is that the format is too generic, i.e. it needs to support things like seekable file streams. This is a pain when the format on disk is compressed, with alternatives like an extra uncompressed memory cache in between not looking too tasty.
I think it is better to just compress every specific file case as required by the specific application (for example the new graphics caches in uppmse) and use .nwf for trivial obfuscation and deployment.
20:48:27 codebase TASK: nwc tests
19:19:32 codebase CLOCK: 00:12 hours
14:44:05 uppmse CLOCK: 00:20 hours
14:16:14 uppmse CLOCK: 00:41 hours
12:59:11 uppmse TASK: integrate new music
12:46:35 uppmse TASK: update logo
12:37:12 uppmse TASK: music touch ups
16:50:05 codebase CLOCK: 00:52 hours
11:28:44 uppmse CLOCK: 0.1 days (03:35 hours)
08:56:35 uppmse TASK: test retail
08:15:36 uppmse TASK: remove death star from Orbit Attack
07:56:28 uppmse TASK: nwf
07:53:17 uppmse TASK: figure out implications of what to load from nwf and not...
07:53:03 codebase CLOCK: 0.1 days (03:07 hours)
06:42:41 codebase TASK: persist::TextContext explicit read implementation selection
06:42:31 codebase LOG
Fixed case issues in .nwf generation, everything is now lowercase.
05:15:24 codebase TASK: get rid of dynamic alloc for stretching blits
00:05:51 uppmse CLOCK: 00:25 hours
23:40:20 uppmse TASK: make sure timeattack scores work
15:39:31 uppmse CLOCK: 00:15 hours
15:28:23 codebase TASK: fix hex decoding bug for uppercase
19:40:39 uppmse LOG
Glows on prisons woot... :)
19:38:54 uppmse CLOCK: 0.1 days (02:31 hours)
19:34:36 uppmse TASK: test prison glows
18:50:55 uppmse TASK: pixicle flicker or not flicker?
18:07:49 uppmse TASK: try out new ship
17:16:29 uppmse TASK: better load splash
16:32:55 uppmse CLOCK: 00:29 hours
16:30:25 uppmse TASK: add "special edition" to title
15:11:40 uppmse CLOCK: 00:31 hours
15:11:37 uppmse TASK: menu background graphics
16:55:20 uppmse CLOCK: 01:03 hours
16:52:07 uppmse TASK: waving boys in planetcomplete
15:50:07 uppmse CLOCK: 0.1 days (01:35 hours)
15:37:03 uppmse TASK: glow / light on projectiles
15:36:45 uppmse LOG
Implemented culling of glows just to find that they were already culled, i.e. not created anywhere they didn't show up.
15:03:47 uppmse TASK: pool glows to avoid dynamic allocation
14:41:30 uppmse TASK: glow tests
14:35:11 uppmse TASK: evaluate use of lightglow on shield, if not remove rotation caps
14:35:06 uppmse TASK: graphic option for glows
13:00:23 prio LOG
Reduced number of queries for the label filter section, avoiding a query per label (to get the active task count) in the loop of labels.
12:58:28 prio CLOCK: 00:51 hours
12:41:02 prio TASK: per label sort buttons
12:02:19 prio CLOCK: 0.1 days (01:26 hours)
02:17:46 uppmse CLOCK: 0.2 days (04:21 hours)
19:21:52 uppmse CLOCK: 00:55 hours
18:48:38 uppmse TASK: sound volume options
18:48:34 uppmse LOG
Fixed some missing sounds (fireworks) in awards ceremony.
17:34:13 uppmse CLOCK: 00:54 hours
15:26:12 uppmse CLOCK: 01:00 hours
13:46:50 uppmse CLOCK: 0.1 days (02:11 hours)
13:41:15 uppmse TASK: ingame options
12:35:54 uppmse LOG
Removed ingame pause menu, replacing this functionality with the escape menu / options etc.
12:19:01 uppmse TASK: standard splash
20:55:29 uppmse CLOCK: 0.1 days (03:03 hours)
20:55:25 uppmse TASK: support for non fullscreen backdrops
17:56:59 uppmse LOG
I realized that I can't really do the cheapdrops any other way since I'm using standard 3d camera concepts to handle panning / scrolling.
I'll have to go with drawing extra blinders manually.
17:34:39 uppmse LOG
Due to non-fullscreen rendering (display options), need to rethink the way the cheapdrop works. Probably best to change the interface.
17:34:04 uppmse CLOCK: 01:04 hours
16:29:42 uppmse TASK: graphics options for various ways to stretch the canvas
15:49:40 uppmse CLOCK: 00:57 hours
14:51:43 uppmse LOG
Mad, ever wise, cautioned me to simply finish this as it is, without experimentation on new modes; that should be some other game. I agree.
14:19:45 uppmse CLOCK: 0.1 days (01:50 hours)
00:09:51 uppmse LOG
It rolls, and I fixed the leaks. On to alternative implementations!
22:52:44 uppmse CLOCK: 0.1 days (01:41 hours)
22:50:12 uppmse LOG
I should have known; this kind of things leads to a Visitor, due to the MVC splitup.
The mode side IMap is now abstract, so constructing a matching drawer on the other side requires specific type knowledge (the representation of the specific IMap implementation) which is now hidden.
I'm doing this in order to keep all the interfaces from ufopilot::megamap and ufopilot::draw intact. The draw::MapDrawer dependency on megamap::Map is very thin, but I'm determined not to mess up the rest of the projects that use this stuff, as what I'm doing now is experimental.
21:24:32 uppmse LOG
Working on abstracting both the model side map and the view side drawer of same. This will allow experimentation with potentially infinite maps.
19:26:12 uppmse CLOCK: 00:18 hours
19:02:02 uppmse CLOCK: 00:18 hours
17:59:20 uppmse CLOCK: 00:34 hours
13:26:15 johno.se CLOCK: 00:15 hours
13:24:40 johno.se TASK: touch up software cv, with linear version option
13:09:16 prio CLOCK: 00:09 hours
13:05:18 prionews LOG
Added per label punch clock buttons in the label filter area for fast access. The little clock image is GREEN when you are punched out, and RED when you are punched in.
13:00:08 prio CLOCK: 00:02 hours
12:57:25 prio CLOCK: 00:16 hours
12:39:53 prio CLOCK: 00:10 hours
12:37:22 prio TASK: test imgui droplists
12:37:15 prio TASK: per label punch clock links
12:25:28 prio CLOCK: 00:12 hours
12:10:07 sabk CLOCK: 0.1 days (01:37 hours)
12:08:55 sabk TASK: die impaled
12:08:42 sabk TASK: fix passage animation glitch
11:45:38 sabk TASK: use dxut gui?
11:45:37 sabk TASK: effects for various causes of death
11:45:31 sabk TASK: persistence of constants
11:45:28 sabk TASK: editing of constants
11:45:26 sabk TASK: switch to constants in vc
11:45:19 sabk TASK: animated fx offset, for drowning
11:45:15 sabk TASK: tiles anim speed constant
11:45:04 sabk LOG
Refactored tile stuff in View to Tiles class, and moved Char related drawing to Char class.
10:47:45 sabk TASK: die burned
12:19:15 prio CLOCK: 01:10 hours
23:04:42 sandblox CLOCK: 00:24 hours
19:28:39 sandblox TASK: ground based projectile enemy
19:24:31 sandblox CLOCK: 0.1 days (01:44 hours)
21:53:54 sandblox CLOCK: 0.1 days (03:16 hours)
17:53:16 sandblox CLOCK: 0.2 days (04:23 hours)
15:39:13 sandblox TASK: entity persistence
14:34:02 sandblox TASK: zombie los
12:08:20 sabk CLOCK: 0.1 days (01:42 hours)
01:44:07 codebase TASK: allow custom mouse cursor positioning in softdraw::Gui
01:43:44 sabk CLOCK: 0.2 days (04:45 hours)
19:16:13 sabk CLOCK: 0.1 days (02:13 hours)
23:57:06 sabk TASK: integrate graphics for drowning
21:00:29 sabk CLOCK: 00:11 hours
11:46:33 sandblox TASK: test diagonal mesh type