1. Golfing In Aether
  2. News

Golfing In Aether News

Golfing In Aether Update Released [1.5.12]

For this weeks update I've implemented a couple quality of life improvements as well as fixes to any reported issues.

Join via invite code

With this additional feature you can now invite players who aren't on your friends list to private or friends only sessions. The way this works is via generating an invite code which will be a unique 10 digit code that is only valid for that session. You can share this outside the game via any means you want, and then players will be able to enter that code on the join game menu to reach your session.

An example where this could be useful is perhaps if you were to have a clan or group you play with, but don't have every member you want to invite on your friends list. So rather than have an open session you can still create a private one but just share this code with whoever you want.

In terms of security the invite code is only created when you request it. The number itself is 10 digits and unique, plus only valid to that session. This means if you end the session and create a new one you'll need to generate a fresh code. You can press the invite code button again within the same session and it will display the code previously given to you.

Onscreen keyboard improvements

This is whats used by gamepads when creating a local player profile or naming your multiplayer session. What I've changed is build in support for more characters for localization in a future update, I've also made some of the buttons more pronounced and use more recognisable symbols so its easier to tell what does what.

Various other changes

Check the full notes below for all the changes made, if you are aware of any issues then please let me know so they may be hotfixed.

One thing I specifically fixed this update after it was reported earlier today was an issue with the shared input mode not working correctly. This has all been fixed and I've corrected a few other minor things while testing it.

https://store.steampowered.com/app/1914980/Golfing_In_Aether/
Patch Notes

[h2]General[/h2]
  • Added ability to create an invite code you may share with other players as an additional method of joining. The point of this is so you can have a private or friends only session but allow someone not on your friends to join if given the code. Invite codes are only generated upon request and unique to that specific session.
  • Fixed an issue relating to shared input mode with hotseat mode. Other local shared input players were not getting loaded in correctly.
  • Fixed an issue where mouse and keyboard inputs were not loading seamlessly with other shared input players.

[h2]Environment[/h2]
  • Added improvements to lighting in ES3.1 for winter theme in order to make more consistent with appearance as found in the full DX12/Vulkan render.

[h2]Interface[/h2]
    Fixed potential to open accessibility menu and a different menu at the same time with gamepad (if pressing multiple buttons).
  • Added improved onscreen keyboard for create player and server names.
  • Fixed the local player settings (via game menu) not allowing gamepad navigation to reach zoom out button for remapping due to an incorrect column span.
  • Fixed some text strings.
Discord Server

Be sure to check out the official discord server with channels for Golfing In Aether and my other various projects.

Golfing In Aether Update Released [1.5.11]

This weeks update features a couple of quality of life improvements such additional mesh quality levels for snow, and an additional cloud layer effect. I've also included bug-fixes to anything found or reported during the past week.

Additional cloud layer

I wanted to start out with something that could work well with lower settings first. Essentially it adds an additional light layer of clouds like seen in the background that will render in front of the islands for addditional effect. Depending on the lighting conditons and current level theme it will adjust accordingly.

This is intentionally minimal, you may not always notice it and will fade away as your camera comes within proximity of it. This will get tweaked over time and may be combined with additonal effects.

Additional snow quality levels

The snow found on wall meshes has gotten an additional quality level thats better poly count optimized for low and medium settings. This will give a performance boost when playing the winter theme on low end devices, with greater gains while playing with other islands active.

Each of the low and high versions of the models have their own LOD models for when seen in the distance like on other islands.

Various other fixes and tidy ups

Check the full notes below for all the changes made, if you are aware of any issues then please let me know so they may be hotfixed.

https://store.steampowered.com/app/1914980/Golfing_In_Aether/
Patch Notes

[h2]General[/h2]
  • Added change to how system save games are saved, moved from asynchronous to immediate. Because the amount of data in this file is tiny it can get it out the way before saving profile data would save at the same time (which is more of an issue for some low end systems).
  • Fixed an issue where ES3.1 brightness settings wouldn’t always apply correctly.

[h2]Environment[/h2]
  • Added improvements to levels ‘All Tee’d up’ and ‘Stroke of Luck’ to add more visual detail to back sides of levels and optimize overall triangle counts.
  • Fixed camera on Law of reflection not being smooth.
  • Added improvements to flag raising detection radius to give more room for ball speed.
  • Fixed a clipping rock on ‘Now where do I go’.
  • Fixed a small wall gap on ‘Tee Time’.
  • Fixed hats appearing a bit overly shiny on lower settings on non-windows platforms.
  • Added additional mesh quality level for level snow which will be used for low and medium settings.
  • Added additional light cloud layer that will render in front of distant other islands.
  • Added version of the snow covered fence for lower quality settings.
  • Added tweaks to some wall models that were had lod models with excessive spacing that stood out.

[h2]Interface[/h2]
  • Fixed Q and F1 keys not having consistent appearance in dark mode.
Discord Server

Be sure to check out the official discord server with channels for Golfing In Aether and my other various projects.

Golfing In Aether Update Released [1.5.10]

This is a large quality of life update with various improvements and several bug-fixes. I put off doing multiple updates while the summer sale was active so there's a lot of changes in this one.

Improved Island Visuals and Performance

First up is I've reworked all the island models for every level to both give better visual quality and also bring some performance gains.

https://steamcommunity.com/games/1914980/announcements/detail/3663164071049247637

Specifically what I did was expand on the 3D baking I was able to do with the complex wall models in the 1.5.8 update and apply this to the island meshes themselves. This was a very time consuming process as while some models are re-used, there is still 48 unique island meshes to rework. These are also very large and very complex models, so getting them to bake properly took quite a bit of work. Additionally the grass on the island's rocks is now generated from the baked data rather than general vertex normal information which removes some blurry artifacts in places.

There are two models for each island now, a high quality which is identical poly to before but with the baking on top - so looks really good, and a lower poly also with the baking. The lower poly looks better than it did previously but at the cost of some visual quality, though for low-end hardware this helps for performance.

Additions to view distance and foliage settings

For view distance when set to low, and other islands set to enabled, only the local island group will be rendered. In a standard session this will be either hole 1-4, 5-8 or hole 9. The idea is that you can still see some islands but culling a few to save on performance.

With foliage settings there will also be an affect on the quality of the island mesh itself as described above. When set to Low or Medium the lower quality mesh will be used, else the regular poly will get used. When testing on a Ryzen 3200G without a dedicated GPU in the levels I tested there was a 3-5 FPS gain on average, with greater gains when playing with other islands present.

Better local profile management

You can now delete local profiles on the select profiles menu. Only player 1 can do this, and the menu can be accessed by entering the edit profiles menu via Y gamepad button (or onscreen button) as before. When there you will see ability to delete the profile in addition to the apply changes.

Local profiles only store the name, customization, and any controller settings for local players, so if they are deleted even on accident (would be hard to do...) nothing really important is lost. There is of course a prompt asking if you are sure you want to delete the specific profile beyond the button press.

Optional leaderboardless scoreboard

A leaderboardless version of the scoreboard has been added which will be picked automatically by default when in local play. This is because leaderboards only work for player 1, so I've put more focus on immediate scores and progression instead.


If you would like this either disabled or perhaps enabled always, you can find a setting under game settings and set it based on your preference. I know not everyone likes leaderboards so if you want to just hide them then this will do exactly that.

Note that when leaderboards are hidden you will still submit a score to the leaderboards as before, its just the displaying of them on the scoreboard thats hidden.

HUD performance improvements

I've made some changes to the backend of the HUD to better cache information and only re-render parts when needed. This will help with performance on very low end hardware where CPU may be a bottleneck area (which is very hard to achieve in this game).

Specifically I've tweaked the player widget and current hole info widgets at the top of the screen. I've also tweaked the player names that float above other players in the game world as-well.

Tweaked ball rolling

I tidied up the graphs that handle some of the corrective dampening that is applied onto the ball in specific situations. There are no drastic changes here but a couple of improvements have been made such as to specifically fix balls stopping too suddenly at the base of a ramp, and in cases rolling a little too much.

Several bug-fixes and other changes

A lot of play testing was done given all the features in this update so numerous minor or behavioural issues were caught and fixed. You can see the full list in the notes below.

Hotseat / competitive mode was tested a lot in particular to really refine various little things that stood out. Examples include inconsistencies with remote players holing out vs the host, remote players ball's not being angled identical at the start of the round, fixes to the reset to checkpoints, and a bunch of camera related refinements.

As this is a very large update despite me including lots of fixes to various elements theres always a chance I've either missed something or a new issue will show up somewhere thats slipped through testing so do let me know if you encounter anything so I can get it hotfixed.

https://store.steampowered.com/app/1914980/Golfing_In_Aether/
Patch Notes

[h2]General[/h2]
  • Added setting of field of view to 75 down from 90 when playing for the first time on a steam deck. This is a local system setting, which you can override / change at any time from game settings. The reason for the lower FOV is it will help with seeing things better. This will not have any effect on anyone who has already played the game as it is purely the default setting.
  • Added mechanic for deleting local profiles, it was already possible to edit them.
  • Fixed updating some graphics settings such as ‘other islands’ not immediately resulting in changes.
  • Added backend changes to how the level sequence stage is executed, specifically it is now created on the fly based on the level index rather than performing a lookup for an existing reference. This can help with loading reliability by removing a potential point of failure where a reference in the chain may not be replicated in time.
  • Fixed an issue with creating a session, proceeding to complete or end that session, then creating a new session in the active session, which would lead to an incorrect sync of joinable information in the steam lobby. I’ve exposed more information to -log from the connecting / joining process to make this easier to debug in future.
  • Fixed an instance where a couple of graphics settings wouldn’t immediately be saved. This is specifically settings such as ‘Other Islands’ which is tied to the players profile as an accessibility setting. All specifically system settings were saving fine.
  • Fixed a potential issue where it was possible for a remote player to launch their ball during a competitive match during a latency period.
  • Fixed an issue in hotseat mode where if a remote player were to holeout it would immediately proceed to the next player, end their turn rather have the short delay showing them in the hole as it would be for the host. This could also be a of cause of the power meter to be visible when moving.
  • Fixed an issue in hotseat mode where if a player you were spectating were to enter a hole (that isn’t the cup) and then on your turn you were to enter that same hole the camera’s initial position was incorrect.
  • Added a tidy up of some of the ball rolling behaviour by simplifying the backend graph. A couple of improvements have also been made to specifically fix balls stopping too suddenly at the base of a ramp, and in cases rolling a little too much.
  • Fixed a potential issue where if you created a custom session, picked custom levels, but didn’t choose any custom levels, while it did pick levels it wasn’t identical behaviour to default. Instead when custom is picked but no levels chosen earlier on in the process the session will just go with default levels.
  • Fixed an instance where resetting in a session to checkpoint (a pipe) the velocity was not being set correctly.
  • Added improvement to spectating another player exiting a pipe to help with camera seamlessness.
  • Fixed a potential failure that could occur with the hotseat player order when a remote player establishes themselves as first in order, then proceeds to disconnect during state where player order is determined. Players will be actively checked during this stage.
  • Fixed when a remote hotseat player is first in turn order for holes other than the first they had an incorrect initial rotation.

[h2]Environment[/h2]
  • Added a performance setting to other islands being rendered via the view distance setting. When set to low only the local island group will be rendered. In a standard session this will be either hole 1-4, 5-8 or hole 9. The idea is that you can still see some islands but culling a few to save on performance.
  • Added additional mesh quality level as part of the foliage setting. When set to low an even lower poly set of models will be used for a few things such as the cherry branches. This does reduce the poly of the higher poly models a little further (about 25%) at loss of some quality. This will specifically help very low end hardware.
  • Fixed normal of some rotators, particularly vertical windmills when seen in distance as part of a LOD island.
  • Fixed the appearance of a hole mesh on boneyard which had a minor gap.
  • Fixed alignment of a pipe and ground piece on around the bend.
  • Fixed appearance of some movers seen on LOD islands. Some inversed types weren’t moving the correct direction.

[h2]Interface[/h2]
  • Added option to delete a local player profile on the choose players menu. This option will only appear when player 1 selects edit profile on a local profile. After pressing delete an on-screen prompt will appear confirming if you really want to delete this local profile. It should be noted that local profiles only store things like their name, customization, and any controls/accessibility settings. There is no progression or stats for local profiles.
  • Fixed an issue where status updates for the bottom glyphs of the shared input menu could be set while in non-shared state.
  • Fixed an issue where editing a local profile and then creating a new profile would begin with that player names set rather than blank.
  • Fixed various instances of create new profile not starting blank if that specific player had previously created a profile in that menu session.
  • Fixed an issue where after saving edited profile changes the ‘edit profile’ button prompt was no longer visible until you reselected the profile or selected another that could be edited.
  • Fixed an issue where if you change the customization to an existing local profile, then edit the local profile and save changes the customization changes you had just made are not reflected in the interface.
  • Added contextual string to distinguish between initially creating and saving an edited local profile.
  • Fixed an issue where it was possible to enter editing local profile before having pressed a to join.
  • Added improved caching to player name widget which will offer a small performance gain on very low end hardware.
  • Added improved caching to the HUD. Most of the values will do render updates based on value changes. This will help very low end hardware by freeing up a few ms of rendering.
  • Fixed a small navigation history issue relating to selecting ‘custom’ on the theme select menu, exiting from the custom menu – which will take you to the root new game menu, and then re-navigating to the select theme menu where the previous state was shown.
  • Fixed Thumbstick navigation on the theme select menu when creating a full session.
  • Fixed an instance where two navigation sounds would play while using the d-pad when opening the ingame menu.
  • Fixed a couple of instances where holding down the navigation and pressing back in a menu could still result in active sounds.
  • Fixed navigation sounds able to be triggered on the scoreboard (when no navigation was possible).
  • Fixed an instance where a session on the session browser would only indicate ‘in lobby’ or ‘hole 1 of 9’.
  • Added a leaderboardless version of the scoreboard which will be picked automatically by default for local play. Via game settings you can specifify to also either have it always disabled or enabled based on preference.
  • Added improvement to player name behaviour in hotseat. When it is your turn, the floating name above your ball will disappear immediately vs fade out – but other players names will fade appear as before.
  • Fixed an relating to session identifiers which could sometimes lead to a session replacing another on the session list.
Discord Server

Be sure to check out the official discord server with channels for Golfing In Aether and my other various projects.

Golfing In Aether Update Released [1.5.9]

A small hotfix to fix a reported issue relating to save-game loading that could occur for new players.

I found some odd behavior at engine level when it comes to storing some settings where specific files required weren't being created properly so have temporarily made a manual work-around to bypass the engine function for now.

If you encounter any issues then please let me know either in the steam discussion forums, discord or via the support email :)

https://store.steampowered.com/app/1914980/Golfing_In_Aether/
Patch Notes

[h2]General[/h2]
  • Fixed a save-game loading issue that could occur for new players.
  • Added a custom mechanism for saving game user settings reliably to get around an issue in this version of the engine.
Discord Server

Be sure to check out the official discord server with channels for Golfing In Aether and my other various projects.

Golfing In Aether Update Released [1.5.8]

This update looks into another performance improvement idea for low end hardware as well as improving the visual quality of some meshes, including notably distance island wall meshes.

Wall LODs improvements

The lower LOD (level of detail) levels of walls, noticably when used on other islands in the distance had three areas I felt could be improved. First, the blocky-low-poly appearance is not nice to look at. Second, I felt even with this amount of poly the poly could still come down. And finally, the shadows / ambient occlusion didn’t react well to low poly mesh causing weird artifacts on occasion when the sun hits at a low angle.

So, to approach solving all three I began experimenting with baking the high poly mesh onto essentially jig-saw shaped layered planes. The idea is that when far enough from the camera the walls can transition to a mix of height and normal detail on 2D surfaces and blend it convincingly together so not only do you not notice it, but it looks way better than the low poly 3D. Specifically look at the second row of images and notice how the lighting artifact is no longer present.

There will be performance improvements for very low-end devices when playing with other islands enabled specifically. This is achieved through the triangle count reduction between the two techniques of wall LODs. Playing on individual levels such as in practice mode will make little difference however because of the distances involved before you'd see these far LODs.

When testing on a Ryzen 3200G APU (with no dedicated GPU) at medium settings 90fps was mostly achieved with smaller levels exceeding a hundred fps. A few levels still dropped to mid 70s, and they may need specific tweaks over time. Having a buffer from 60fps is especially helpful when playing with lots of players, including split-screen so the performance does hold up.

For comparison testing on a 3060TI typically gives 200-300 fps, sometimes more and there isn't really any particular performance issues to speak of when it comes to reasonably recent dedicated GPUs that I'm aware of.

Wall shadow casting improvements

Another quality change with this update is slightly better shadow detail relating to walls as a result of the better LOD models used. Essentially the LOD models get used for shadow casting simply because the poly involved would make shadows pretty costly, so improvements here does result in slightly better casting, especially for smaller details. A couple other elements such as pipes have improved shading as well.

Due to the randomness of levels and lighting it was very hard to get two exact images, but other than the pipes the most noticable improvement will be the gaps between stones give small shadow detail when at certain angles to the sun where previously they'd come off more flatter in shadow appearence. Other meshes and overall scene brightness will be down to just the random dynamic lighting, which could include something like varying cloud shadows etc.

Various bug fixes

I've also gone through every level quite extensively as a result of the changes made to lower wall LOD levels so I've fixed a bunch of minor visual issues. If you are aware of any issues I haven't fixed then please let me know so I can quickly hotfix them. You can find full patch notes below.

https://store.steampowered.com/app/1914980/Golfing_In_Aether/
Patch Notes

[h2]Environment[/h2]
  • Added improvements to wall shadow casting.
  • Fixed various minor wall gaps across several levels.
  • Fixed a shading issue relating to the cup LOD.
  • Added a couple of new wall meshes to better help joining in places.
  • Fixed a tiny pipe alignment issue to a pipe in Tee Time.
  • Added improved LOD models for fences.
  • Added new LOD models for walls.
  • Added new LODs for level LODs.
  • Added improved shading for pipes.
  • Fixed an issue with the snow on downhill from here.
  • Added improved LOD models for rocks at low foliage quality settings.
  • Added improved models for ground petals at low foliage quality settings.

[h2]Interface[/h2]
  • Fixed a behaviour issue with navigation in the choose players menu when pressing 'back' and rejecting the prompt.
Discord Server

Be sure to check out the official discord server with channels for Golfing In Aether and my other various projects.