SECRET
DigiMastered Works LLC
Office of Development
DMW107IB7007
Date 01/26/2022 09:58 PM
To: The People
From: Tanner Fry
Subject: Dash of Love
Dynamic Cloud Shadows, Not Really
Shadows are nice to have. Even in a 2D game the sense of depth is important. So, I've implemented "dynamic shadows" for my clouds in order to create a more realistic effect. However, it's very basic in its approach. There is no light source that is used to calculate where the shadow should be. Instead, cloud shadow placement is based on game clock time. Again, not really dynamic shadows, just some simple math to make them "dynamic" based on the time of day.
There are pros and cons of this approach. Pro, shadows don't require an intensive amount of processing power to determine where they should be. There's no need to use ray casting from a light source in order to determine the proper placement of shadows on objects. Con, objects need to have a shadow object attached to it and then said shadow object needs to either be fed into a shadow manager to calculate it's correct position, or have the parent of the shadow object calculate the shadow's position. Pro, most of the data that is used has already been created so the required processing power is limited.
This can become horrid later down the road as we add more objects with different shadows but here's an example of our current cloud shadow implementation:
void Update() {
// Move cloud shadows according to the time of day
GameObject cloudShadow;
foreach (GameObject cloud in listClouds) {
cloudShadow = cloud.GetComponent<ObjectCloud>().objectCloudShadow;
float xPosition;
float changeInX = 0.083f; // 1 / 12 = 0.083 (1 hour / 12 hours)
xPosition = 1 - (GameSceneManager.Instance.clockHours * changeInX);
cloudShadow.transform.localPosition = new Vector3(xPosition, cloudShadow.transform.localPosition.y,
cloudShadow.transform.localPosition.z);
}
}
Radio Life
Everyone loves to listen to music. It's a universal language that's able to express a wide range of emotions. For myself, classical music is the calm I enjoy when developing features and components for AIA.
I'd like to implement a wide variety of music into the game so that anyone who picks it up can have the ability to vibe while playing. A little bit of searching through the radio may be required, but I guess that depends on my inevitable music making skills. Hiring a composer later on isn't out of the question, and the music can always be added at the end of development but starting sooner rather than later at least gives exposure to the process and difficulty.
Below you can enjoy some short music samples. None of these are our
Basic Radio Implementation
Command Console
Flexibility is important for players and developers. A command console gives developers the ability to modify game components on the fly while testing and playing. Of course, the backend to perform those modifications will need to be created. Developers aren't the only people to benefit from a command console. The ability to mod the game is something that's being thought of quite often, so we're preemptively adding the console for future possibilities. Whether players will be able to disable in-game features/mechanics or tap into information to help the mod the game, we don't quite know yet.
Basic Command Console Implementation
"Enhanced" Road Building
Road building is getting better, slowly. It's been frustrating and I wonder if I should just restart the process and figuring out a better approach. Placing a road now takes into account water and buildings. Neither can be built on but in the future, bridges and other infrastructure will be a desired implementation.
Road System Enhancements
Unfortunately, the system still needs quite a bit of optimization. The issue arises when the manager compares all the roads made, since the user started holding down left click to build roads, to the currently placed road. The manager looks for gaps between the placed road and an existing road to see if there's enough space to place a new road, called the gap road.
Some of the math seems to be intensive, or it's the creation/deletion of roads. Sometimes a road can be created on top of an existing road thus making the manager delete it. I believe this could be the culprit but we'll find out soon enough.
Agent Movement and Location Realization
Agents can now be selected and moved to a desired location. Their speed does keep into account game speed, therefore keeping everything in uniform.
Agent Selection and Movement
Locations can now realize agents and store the data into the database in real time. Database calls don't seem to be that intensive at the moment but could be at a later date. This will need to be kept in mind as we move further along. If database calls do begin to eat up processing power, saving at periodic times will be the answer. For now, we'll keep it as it so we can see how well the system holds up.
A Location Realizing An Agent
I think that wraps up this month's development article. I hope you enjoyed everything and maybe even learned something new! Until next time and if you have any suggestions on certain topics that you'd like to know more about, then head on over to our forums and let us know. You can also email our support at Support@digimasteredworks.com.
Roadmap
Milestones To Do:
Milestones Completed:
SECRET
Approved for release: 01/18/22 ID: IB7007
1