2/21/2019
First, I would like to state that I plan to start blogging more frequently, with more specific information. For now, allow me to catch you up to speed. Landscaping was the first problem in Unreal because it is the best way to develop large scale maps with textures. That said, the mesh on the landscape isn’t changeable at run time. The solution to that was building tiles that contain a mesh that can be altered on collision. This solution will work fine, but it has caveats to it. The biggest caveat is knowing when the entire lawn is cut. I need a way to keep track of how many tiles are able to be cut. I have been looking into making an array of the tiles where I can calculate the actual number of tiles cut by simple rectangular area. In the pursuit of this idea, I came across something called procedural generation.
Procedural generation is a way of placing objects in an algorithmic process that is either well defined or random. For placing some of the obstacles in the world, such as tress, I am hoping to make a random procedural process. As for tile placement, I don’t know that procedural generation will be worth the effort vs nested for loops. One problem I am thinking about into the future is how a tree could cover tiles in the area to be cut. Resulting from this, I need a formula that will take into account tilestobecut = totaltiles – tilescoverbyobstacles. The goal of the tilestobecut variable is so I can manually keep a count of each tile actually cut which allows me to say when the whole area is cut. Essentially, that cutting tiles underneath or directly next to trees may not be possible. Depending on tile and tree size, this can create some issues where the count might be thrown off by one or two tiles. Some hitboxes for a tile might be slightly outside of a tree, which would instead result in a problem where the player gets a +1 tile advantage. This could stack into a multiple tile advantage should multiple trees have this hitbox collision. This area of the project will probably just require various tweaks to get perfect. It also seems like something that realistically I could leave alone and say its a bug to patch later. That said, the completionist in me probably can’t accept that.
The second part of the project that is really important in design is the movement for the lawnmower. I have been looking into different movement and vehicle aspects. There appears to be a type of blueprint that already has vehicle mechanics built in, but I need to find a way to “hotwire” them into a lawnmower design with multiple joysticks. I know that you can start with a preset vehicle game design, but I have only been working from scratch. I plan to make a temporary vehicle project to learn some of the inner workings behind it. With that in mind, I have been watching a good majority of the official Epic Games Youtube tutorial videos for the engine. Epic’s official documentation and tutorial videos are a real gem. Within these tutorials, I found that they actually have a built in speedometer for vehicles. As of right now, I only saw that the speed exists inside of a debug command window, but I am hoping that I can access that information in a variable. If I can find a way to access the speed value, I can find distance with ease. The physics formula for distance is distance = speed x time. I already plan to build a timer, which I should be able to subjugate to a mini-timer that will keep track of start and stop time. This of course doesn’t handle change in acceleration. I might just cheat that by calculating average speed throughout the medium to find distance. I haven’t put much thought into that.
Finally, I am hoping that I can find some spare time to throw together a cheap blender lawnmower model so that I don’t drive a block around. I may find some free assets and throw something really chintzy together. Since I plan to make this first person, I may just have a seat with some wheels that casually roll around. Although, the front wheels also have some rotational physics to them, so I don’t look forward to that.
That is all for now!