2019 Progress Retrospective
Happy 2020!
Games take a lot of work, especially ones like Pegwars with the enormous scope of being a universal sandbox. Although I haven't made any blog posts in quite a while, I have indeed been working hard throughout 2019 on fixing many bugs and implementing various new features.
Highlights for the year are :
- A beautiful procedural volumetric cloud system, fully integrated into the atmosphere shading - that unfortunately is still way too slow and so has been removed for now. These clouds just have to go in one day, they add so much to the game and I really must work out (hopefully in 2020) how to make them fast enough to be included for good.
- The UI has been rounded out and polished, bringing much of the meta-game into play. Markets, Shipyards, the player's galactic Empire are now fully represented and playable. 3D Views are incorporated into the UI.
- Combat is finally fun, mainly due to the introduction of gimballed lasers. Prior to this it was just too hard to hit any other ships, meaning combat was ultimately frustrating. By adding a little auto-targetting, combat is now great fun and is starting to feel like the classic space dogfights I want to play. When you approach enemy planets and moons, they launch fighter defences which must be taken down before you can land on and claim the planets as your own.
- Much refactoring of the Python codebase. All the game logic is written in the Python layer, and while Python is great for fast iteration of ideas, its freedom can lead to a mess of spaghetti code, unless you are vigilant with refactoring. As any developer will tell you, any friction that exists in the codebase leads to a reticence to work and change things - a classic gumption trap. By refactoring code, it is made clearer, more fluid and more powerful going forward. As of 2020 I'm very happy with the Python code and it is a great foundation for things to come.
Here's a dump of the source code commits I made during 2019. While this list looks not nearly as long as it seems it should be, I'm happy to look back on the year and see about a commit every 3 days, not bad for an after-hours hobby.
The following dump has 3 columns. The git commit hash, the commit message, and the date :
309cd66 refactoring docks installations and their game volumes 2019/01/04
680accd refactored installation berthing and docking location detection. better named event handlers 2019/01/09
d2f9ecc Pulse Laser auto target tracking 2019/01/10
2ec8d8f pulse laser gimbals and target reticle now both use targetting system leadPos method. pulse lasers now very effective 2019/01/11
f8b59ea begin refactor of installations. begin refactor of game objects 2019/01/11
309f3fa factored all docking behaviour into docking.py 2019/01/11
718cbf8 Sun now destroys objects now that planetBuilder no longer spawns player inside the sun 2019/01/11
7f9dc7b renaming refactor 2019/01/13
e119bc9 refactored markets out of docks 2019/01/14
453317c got markets and trading ui working for installations 2019/01/15
1edb085 moved trading ui decisions out of Pegwars, to Market 2019/01/15
d1af373 fixed database locations, camera exceptions 2019/01/16
47efefb got view volumes working, markets UI now based on camera proximity not spaceship docking status 2019/01/16
5e7675c got view volumes working, markets UI now based on camera proximity not spaceship docking status 2019/01/16
99acef7 fixed leaving UI during planetside module 2019/01/18
31f1f05 display name of dock on trading ui 2019/01/20
988734c moved trading dock name 2019/01/20
e8ccbd0 first scarab texture map 2019/01/21
1134760 Added AirDefences game object. 2019/01/21
e33da0f added persistent fighter capacity, stub for launching attack squadrons 2019/01/21
298f49c air defences now spawns squadrons against the player 2019/01/22
2081cd2 Added Air Defence Squadrons 2019/01/23
1b58b8e improvements to air defence squadrons and installations 2019/01/28
806bb44 cockpit lighting is off by default 2019/01/30
2e7a4f7 playing around with joyzaxis changes. show 3d view for market 2019/02/05
488d2f9 fixed RPM gauge on dash 2019/02/07
8bb35c7 fixed bug in non-implemented radar opcode 2019/02/13
2c57e86 added gas giant colours, some other misc changes 2019/03/27
50f9c05 added firer check to c++ pulse laser hit tests 2019/04/08
1979a28 planet water prototype, clouds on, clouds now draw to ambient cube map 2019/04/19
refactored time advancement into a game concept 2019/05/20
498ee55 refactoring of python v4 providers 2019/05/22 d7b4d04
e1b9786 refactored MultiPanelUI out of Empire, replaced Empire with EmpireMPU 2019/05/22
5275a44 small fixup 2019/05/22
f4b23ef more refactoring of UIs, fixed test trading and test loadout buttons in pegwars 2019/05/25
b067591 fixed getNearestPlanetOrMoon 2019/05/25
4a659a7 more refactoring of Empire UI 2019/05/25
9a4f802 fixeding bug where invisible items would still hit test 2019/05/26
02c13de added tabs to the empure ui 2019/05/27
257013b upgraded trading UI to use new MPU basis 2019/05/27
80124c0 Moved Scene scripts back to their original place, accidentally moved before 2019/05/27
d5b7943 many improvements and polish to trading ui 2019/05/27
b1a4541 finished refactoring blurbs for empire and trading mpu uis 2019/05/29
db32649 changed loadout to be multi panel UI style 2019/06/01
f8b7aec replaced loadout with new MPU based UI 2019/06/02
d45f3eb trading ui now keeps item selected when clicking on other parts of ui 2019/06/02
c47e621 minor improvements 2019/06/02
a8654a9 tweaked position of guis and fixed the test empire screen, now has default planets 2019/06/02
fe60042 fixed trading logic now that it uses action butts 2019/06/02
c11f682 fixed readability of system blurbs and inputs. started work on MPU3DScene 2019/06/03
d455473 genericised system ui 3d rendering support in pegwars module. prototype galaxy 3d view for empire mpu ui 2019/06/03
71ed8ff fixed bugs in empire galaxy map view 2019/06/03
2901e47 added EventManager.Fire(synchronously). Fixed Empire Galaxy View, now correctly display and slerps between selected planets 2019/06/04
875f3b3 fixed bad bugs in planet object tile choice 2019/06/11
5d1fad9 faster planetside controls when higher off ground 2019/06/12
02464ac re-enabled various planet procgen options 2019/06/12
ad28b0b tweaked how far round the sky the clouds change colour to dark 2019/06/18
82fff16 fixed galaxy view bug when starting up empire ui 2019/06/18
3ae0f57 galaxy 3d view stars now on translucent blue bg 2019/06/18
8c2086b started refactoring loadout and systems and hardpoints 2019/06/22
a83fbac fixed dof but kept it disabled 2019/06/23
b4e4585 fixing up loadout 3d view when attaching systems and selecting slots 2019/06/26
26e34be fixed loadout mpu for attaching systems. still need to recreate the mpu for the slots to refresh correctly after attach 2019/06/26
c32fea1 begin cloud shader refactoring 2019/06/27
cf78246 refactoring clouds, polish focusing on cumulus first 2019/06/28
8864d34 cumulus clouds progress checkin 2019/06/28
03d3413 different atmosphere selectors 2019/08/05
5df4260 polishing clouds. added pine to planet tile. fixed dock on installation on moon bug, although animation still sucks 2019/08/16
e2d10a0 refactoring cloud shaders 2019/08/18
badc7ec refactored common bits out of atmosphere shaders into include files 2019/08/19
dc3559e fixed black and white sky under clouds bug 2019/08/19
bac91ab more clouds refactoring and added strato cumulus clouds 2019/08/21
ef0b2a2 more untested cloud improvements 2019/08/23
fffe726 more cloud tweaks. also reduced inner steps in atmos shader, still looks good 2019/08/27
7597794 Fixed planet material override in targetting UI again 2019/08/28
65761ae procedural rings 2019/09/01
d4dad81 better rings noise 2019/09/01
802b98f moved deltas.h from atmosphere into general folder 2019/09/02
183304d removed isWater codepath for atmosphere. fixed clipping of ray sphere intersection tests in atmos shaders. 2019/09/04
a891d61 new fully unified atmosphere shader 2019/09/06
0ae65a2 new atmos now cranking. but slow 2019/09/07
b77eaf1 further atmos improvs 2019/09/09
ee5fc20 all atmos types now upgraded to cloud integrator v2 2019/09/09
437f3f2 underwater incorporated into shader 2019/09/10
fd1dd3f small improvs to atmos code 2019/09/11
b3fab2c small improvs 2019/09/13
5706ee4 added planet relative offset hack to reduce fp precision errors when accessing noise fns 2019/09/18
ee6f0cf fixed bug that meant there were no cloud shadows any more 2019/09/18
ed2ca22 atmos looking nice and smooth. well not really 2019/09/18
c2eeebf planet builder now removes starfield when in first person planetside mode 2019/09/18
d5e189a fixed warping to new s system 2019/09/19
bd72ac4 multires performance enhancement 2019/09/21
d5d3fea failed attempt at multires clouding 2019/09/22
f047ad8 rolled back new atmostphere clouds as they are still too slow 2019/09/24
f5fdf70 added in stationary spaceship module 2019/09/24
66c70df all first person modules now have return trap for spaceship return 2019/09/24
3abfe72 fixed movement camera issues when landed on stuff 2019/10/08
058e1b2 fixed starfield 2019/10/09
f9cc5d5 fixed trade ai buy/sell and fixed player buy goods 2019/10/10
4fd6847 soft shadows for rings 2019/10/12
c057efe added planet soft shadow to lighting of sky 2019/10/14
5ea0908 doco changes only 2019/10/14
d59a873 fixed shaders compilation 2019/10/14
338d682 refactor some colours into theme.py, fixed radar coluring and selection 2019/10/14
7a1ace8 show pct speed rather than actual for cruise control 2019/10/14
ea5d081 better handling of jiggly joy zaxis problem 2019/10/14
cad0c9a changed default bloom to the classier subtler one 2019/10/14
7477183 Added CLEAR to targetting computer 2019/10/16
64e378d radar CLEAR action, and fixed player explode-at-start due to planet crash 2019/10/16
da13ad5 fixed planet builder and starfield alpha 2019/10/16
0c56e58 tweaked atmos 2019/10/16
6d35ade fixed starfield jumpiness by using dTime 2019/10/16
bef8e61 improved control over near sunlight 2019/10/21
93f9a4e updated docs 2019/11/11
2aafcdb implemented wing dynamics 2019/12/08
ed43efc more sensible dashboard guage colours 2019/12/08
cba8131 wing improvements 2019/12/08
349b9af refinement to numpad 3d 2019/12/09
3de4bcd all cockpits now use new button pad. made button pad glow. fixed CC button bad 2019/12/16
c1d4a9a fixed aspect ratio problems 2019/12/19
Games take a lot of work, especially ones like Pegwars with the enormous scope of being a universal sandbox. Although I haven't made any blog posts in quite a while, I have indeed been working hard throughout 2019 on fixing many bugs and implementing various new features.
Highlights for the year are :
- A beautiful procedural volumetric cloud system, fully integrated into the atmosphere shading - that unfortunately is still way too slow and so has been removed for now. These clouds just have to go in one day, they add so much to the game and I really must work out (hopefully in 2020) how to make them fast enough to be included for good.
- The UI has been rounded out and polished, bringing much of the meta-game into play. Markets, Shipyards, the player's galactic Empire are now fully represented and playable. 3D Views are incorporated into the UI.
- Combat is finally fun, mainly due to the introduction of gimballed lasers. Prior to this it was just too hard to hit any other ships, meaning combat was ultimately frustrating. By adding a little auto-targetting, combat is now great fun and is starting to feel like the classic space dogfights I want to play. When you approach enemy planets and moons, they launch fighter defences which must be taken down before you can land on and claim the planets as your own.
- Much refactoring of the Python codebase. All the game logic is written in the Python layer, and while Python is great for fast iteration of ideas, its freedom can lead to a mess of spaghetti code, unless you are vigilant with refactoring. As any developer will tell you, any friction that exists in the codebase leads to a reticence to work and change things - a classic gumption trap. By refactoring code, it is made clearer, more fluid and more powerful going forward. As of 2020 I'm very happy with the Python code and it is a great foundation for things to come.
Here's a dump of the source code commits I made during 2019. While this list looks not nearly as long as it seems it should be, I'm happy to look back on the year and see about a commit every 3 days, not bad for an after-hours hobby.
The following dump has 3 columns. The git commit hash, the commit message, and the date :
309cd66 refactoring docks installations and their game volumes 2019/01/04
680accd refactored installation berthing and docking location detection. better named event handlers 2019/01/09
d2f9ecc Pulse Laser auto target tracking 2019/01/10
2ec8d8f pulse laser gimbals and target reticle now both use targetting system leadPos method. pulse lasers now very effective 2019/01/11
f8b59ea begin refactor of installations. begin refactor of game objects 2019/01/11
309f3fa factored all docking behaviour into docking.py 2019/01/11
718cbf8 Sun now destroys objects now that planetBuilder no longer spawns player inside the sun 2019/01/11
7f9dc7b renaming refactor 2019/01/13
e119bc9 refactored markets out of docks 2019/01/14
453317c got markets and trading ui working for installations 2019/01/15
1edb085 moved trading ui decisions out of Pegwars, to Market 2019/01/15
d1af373 fixed database locations, camera exceptions 2019/01/16
47efefb got view volumes working, markets UI now based on camera proximity not spaceship docking status 2019/01/16
5e7675c got view volumes working, markets UI now based on camera proximity not spaceship docking status 2019/01/16
99acef7 fixed leaving UI during planetside module 2019/01/18
31f1f05 display name of dock on trading ui 2019/01/20
988734c moved trading dock name 2019/01/20
e8ccbd0 first scarab texture map 2019/01/21
1134760 Added AirDefences game object. 2019/01/21
e33da0f added persistent fighter capacity, stub for launching attack squadrons 2019/01/21
298f49c air defences now spawns squadrons against the player 2019/01/22
2081cd2 Added Air Defence Squadrons 2019/01/23
1b58b8e improvements to air defence squadrons and installations 2019/01/28
806bb44 cockpit lighting is off by default 2019/01/30
2e7a4f7 playing around with joyzaxis changes. show 3d view for market 2019/02/05
488d2f9 fixed RPM gauge on dash 2019/02/07
8bb35c7 fixed bug in non-implemented radar opcode 2019/02/13
2c57e86 added gas giant colours, some other misc changes 2019/03/27
50f9c05 added firer check to c++ pulse laser hit tests 2019/04/08
1979a28 planet water prototype, clouds on, clouds now draw to ambient cube map 2019/04/19
refactored time advancement into a game concept 2019/05/20
498ee55 refactoring of python v4 providers 2019/05/22 d7b4d04
e1b9786 refactored MultiPanelUI out of Empire, replaced Empire with EmpireMPU 2019/05/22
5275a44 small fixup 2019/05/22
f4b23ef more refactoring of UIs, fixed test trading and test loadout buttons in pegwars 2019/05/25
b067591 fixed getNearestPlanetOrMoon 2019/05/25
4a659a7 more refactoring of Empire UI 2019/05/25
9a4f802 fixeding bug where invisible items would still hit test 2019/05/26
02c13de added tabs to the empure ui 2019/05/27
257013b upgraded trading UI to use new MPU basis 2019/05/27
80124c0 Moved Scene scripts back to their original place, accidentally moved before 2019/05/27
d5b7943 many improvements and polish to trading ui 2019/05/27
b1a4541 finished refactoring blurbs for empire and trading mpu uis 2019/05/29
db32649 changed loadout to be multi panel UI style 2019/06/01
f8b7aec replaced loadout with new MPU based UI 2019/06/02
d45f3eb trading ui now keeps item selected when clicking on other parts of ui 2019/06/02
c47e621 minor improvements 2019/06/02
a8654a9 tweaked position of guis and fixed the test empire screen, now has default planets 2019/06/02
fe60042 fixed trading logic now that it uses action butts 2019/06/02
c11f682 fixed readability of system blurbs and inputs. started work on MPU3DScene 2019/06/03
d455473 genericised system ui 3d rendering support in pegwars module. prototype galaxy 3d view for empire mpu ui 2019/06/03
71ed8ff fixed bugs in empire galaxy map view 2019/06/03
2901e47 added EventManager.Fire(synchronously). Fixed Empire Galaxy View, now correctly display and slerps between selected planets 2019/06/04
875f3b3 fixed bad bugs in planet object tile choice 2019/06/11
5d1fad9 faster planetside controls when higher off ground 2019/06/12
02464ac re-enabled various planet procgen options 2019/06/12
ad28b0b tweaked how far round the sky the clouds change colour to dark 2019/06/18
82fff16 fixed galaxy view bug when starting up empire ui 2019/06/18
3ae0f57 galaxy 3d view stars now on translucent blue bg 2019/06/18
8c2086b started refactoring loadout and systems and hardpoints 2019/06/22
a83fbac fixed dof but kept it disabled 2019/06/23
b4e4585 fixing up loadout 3d view when attaching systems and selecting slots 2019/06/26
26e34be fixed loadout mpu for attaching systems. still need to recreate the mpu for the slots to refresh correctly after attach 2019/06/26
c32fea1 begin cloud shader refactoring 2019/06/27
cf78246 refactoring clouds, polish focusing on cumulus first 2019/06/28
8864d34 cumulus clouds progress checkin 2019/06/28
03d3413 different atmosphere selectors 2019/08/05
5df4260 polishing clouds. added pine to planet tile. fixed dock on installation on moon bug, although animation still sucks 2019/08/16
e2d10a0 refactoring cloud shaders 2019/08/18
badc7ec refactored common bits out of atmosphere shaders into include files 2019/08/19
dc3559e fixed black and white sky under clouds bug 2019/08/19
bac91ab more clouds refactoring and added strato cumulus clouds 2019/08/21
ef0b2a2 more untested cloud improvements 2019/08/23
fffe726 more cloud tweaks. also reduced inner steps in atmos shader, still looks good 2019/08/27
7597794 Fixed planet material override in targetting UI again 2019/08/28
65761ae procedural rings 2019/09/01
d4dad81 better rings noise 2019/09/01
802b98f moved deltas.h from atmosphere into general folder 2019/09/02
183304d removed isWater codepath for atmosphere. fixed clipping of ray sphere intersection tests in atmos shaders. 2019/09/04
a891d61 new fully unified atmosphere shader 2019/09/06
0ae65a2 new atmos now cranking. but slow 2019/09/07
b77eaf1 further atmos improvs 2019/09/09
ee5fc20 all atmos types now upgraded to cloud integrator v2 2019/09/09
437f3f2 underwater incorporated into shader 2019/09/10
fd1dd3f small improvs to atmos code 2019/09/11
b3fab2c small improvs 2019/09/13
5706ee4 added planet relative offset hack to reduce fp precision errors when accessing noise fns 2019/09/18
ee6f0cf fixed bug that meant there were no cloud shadows any more 2019/09/18
ed2ca22 atmos looking nice and smooth. well not really 2019/09/18
c2eeebf planet builder now removes starfield when in first person planetside mode 2019/09/18
d5e189a fixed warping to new s system 2019/09/19
bd72ac4 multires performance enhancement 2019/09/21
d5d3fea failed attempt at multires clouding 2019/09/22
f047ad8 rolled back new atmostphere clouds as they are still too slow 2019/09/24
f5fdf70 added in stationary spaceship module 2019/09/24
66c70df all first person modules now have return trap for spaceship return 2019/09/24
3abfe72 fixed movement camera issues when landed on stuff 2019/10/08
058e1b2 fixed starfield 2019/10/09
f9cc5d5 fixed trade ai buy/sell and fixed player buy goods 2019/10/10
4fd6847 soft shadows for rings 2019/10/12
c057efe added planet soft shadow to lighting of sky 2019/10/14
5ea0908 doco changes only 2019/10/14
d59a873 fixed shaders compilation 2019/10/14
338d682 refactor some colours into theme.py, fixed radar coluring and selection 2019/10/14
7a1ace8 show pct speed rather than actual for cruise control 2019/10/14
ea5d081 better handling of jiggly joy zaxis problem 2019/10/14
cad0c9a changed default bloom to the classier subtler one 2019/10/14
7477183 Added CLEAR to targetting computer 2019/10/16
64e378d radar CLEAR action, and fixed player explode-at-start due to planet crash 2019/10/16
da13ad5 fixed planet builder and starfield alpha 2019/10/16
0c56e58 tweaked atmos 2019/10/16
6d35ade fixed starfield jumpiness by using dTime 2019/10/16
bef8e61 improved control over near sunlight 2019/10/21
93f9a4e updated docs 2019/11/11
2aafcdb implemented wing dynamics 2019/12/08
ed43efc more sensible dashboard guage colours 2019/12/08
cba8131 wing improvements 2019/12/08
349b9af refinement to numpad 3d 2019/12/09
3de4bcd all cockpits now use new button pad. made button pad glow. fixed CC button bad 2019/12/16
c1d4a9a fixed aspect ratio problems 2019/12/19
Great work, keep it up!)
ReplyDeleteThanks, I will!
Delete