What is a project Lead?

I have been placed as the lead on our upcoming project, what does that mean? I’ve been a project lead before, and I’ve been overstretched because I did not know what the role meant. I don’t really want this to happen again. So, how do I keep myself from becoming overwhelmed on this project and others? If I can figure out how to do this, I will be much better prepared for continuing with my degree and my career as a developer.

 

So, from brief research it appears that what a lead does is to make sure that the pieces being designed by the rest of the team is good and fitting to the overall design, giving pointers and tips or even scrapping things when necessary (hopefully not). It also appears as though they do design of their own as well. But their whole job is not entirely design, it is instead split between design and management. This is according to Gamedesigning.org, but I have no idea if this site uses the same terminology that I am used to and if it was written to try and divide between those who actually want to design games and those who just like games. However, this description of a project lead is what I thought a project manager would do (which might explain why I am terrible at separating those roles). From what I understand, a project manager keeps tabs on other members progress and keeps the project going forward and finishing on time. So, from this confusion, I’m going to try and find the separation between the two by looking at an analogy given by my lecturer Adrian Forest. He said that the difference between a project manager and a project lead is like the two people in a rally car. One person in the rally car is there to drive and keep the pace, they’re there to make the car go and go fast. The other person in the car is there to make sure the car is going the right way, and to make sure the driver is ready for what’s coming next. Adrian said that in this analogy, the project manager is the driver, and the lead is the navigator. Because a project manager can keep a game going, but it’s not their job to make sure it’s the game that was intended. The project lead is there to make sure that the game that is made is the game that was intended, but they don’t need to worry about how quickly it gets there.

 

So, from this I think What I need to be doing on this project is making sure that our team is heading the right way and is making the game that our stakeholder wants. To do this, I need to know what they want as best as I can. I need to be ready to ask and answer questions when they come up both from my team and for the stakeholder. I also need to make sure that what my team is doing fits this vision, it’s my job to keep them on the path, but not my job to keep them on track

Advertisements

Story time

The story telling in shared house was very much done through notes, symbols, and objects. I was trying to create an experience that would let you learn as much as you wanted to about the character or as little as you wanted. But of course, this came with challenges. I didn’t want to create a game that you would always win by just not interacting, so I had to make an effort to spark the players interest, something much easier than it initially seemed because people just like to find stuff out. This was instead a problem with trying to make them feel guilt for discovering parts of the character that they didn’t want to see. However, I did try and spark the players interest by offering them small pieces of information about the character in spaces that weren’t invading the characters space. For example, the note to Lloyd acting as a window into the character before entering the room, as well as the two notes to the player from Zeke inside the players room. This also came with an invitation into the room to borrow vhs tapes. Letting the player feel ok with entering the room, but this may have made them feel too comfortable about being in the room. But now that the player was interested in the character, when they entered the room, they can see a link to something mentioned in the note to Lloyd, the NES still on. Seeing this makes the house feel more alive and active because it appears as though someone was here recently. It also was a little joke to show that even with the note, Lloyd doesn’t pay attention, giving character to both Lloyd and Zeke. The next things they see is pretty much the whole room, except for things around the corner. The player then has the option to investigate one of the things that they can see or to look around the corner.

 

If the player chooses to investigate the shelf of vhs’s they can see a variety of tapes, but not the one that Zeke mentions in his notes. These tapes give character to Zeke because they are mostly B movies or cult favourites. The player can then move on from there knowing more about Zeke’s interests. If they investigate the Whiteboard they can discover that it was recently Zeke’s birthday, and they can find a card from Zeke’s friend, mentioning a larger group of friends named the Herd. This characterised both Zeke and his friends as people who enjoy community. On the floor by the whiteboard there are two textbooks for biology and entomology. These tell the player what Zeke is studying and might be interested in. Beneath the TV there is a report card filled with bad marks, showing that Zeke might not be very successful in his studies. On the bedside table there is a postcard from a friend of Zeke’s who is in Rome, this tells the player about Zeke and his friends. He misses the person who sent the postcard because it is on his bedside table where he can read it at night. Just below this postcard in the drawers, there is a BOYZ magazine, which can show what Zeke may be more interested in reading at night. This is more hidden because it is in a drawer where people have to make a more conscious decision to find it. To see any more of the room, the player now needs to go around the corner. When entering this side of the room, they can see the shelf at the far end of the room, the drawers and the desk. On the desk there is a todo list, which characterises Zeke as someone who gets distracted and needs a list. This todo list combined with most of the sticky notes tells the player that Zeke likes to doodle nonsense. The is an in tray on the desk filled with scrap paper, underneath this however is a draft letter to Zeke’s crush Antony. It is mostly hidden by the scrap paper, but showing enough to make the player interested. Over on the Pc there is a stocky note that shows the combination for the lock in the centre of the room, along with a few other little things that further the doodling. On the shelf there is another report card, this one with much better grades, the original intention of this was to show that Zeke hides his failures but keeps his successes close to his work space. But it could be interpreted in many ways because they lack details such as dates. The code for the lock appears on both the report cards as the second half of Zeke’s id number. On the shelf there is also the copy of ReAnimator that Zeke mentions in his note in the player’s room. This is on the shelf to make the player explore more about the room to find it. Next to it there is also two pictures and a note. The two pictures are of Zeke and his brother skateboarding. Showing that Zeke has a good relationship with his brother and enjoys Skating. The note is a letter to his parents. This letter is kind of abstract and requires more information to interpret fully. It is a reaction to Zeke’s fears about coming out to his parents, he believes that they would not accept him due to their faith. He then references the fact that they are divorced and can’t even love each other. He references a bible verse Matthew 7:3 talking about hippocrates and how they shouldn’t comment on him when they aren’t perfect either. This is all in his head of course, as he is a character that writes things down before he says them when he is afraid or nervous. In the drawers there is only one drawer with interesting things. This is a bible accompanied by a note that expresses Zeke’s feelings about his faith conflicting with his sexuality. This shows a lot about Zeke, obviously. On the floor next to the shelf there is a note that describes Zeke’s confusion with his label, and shows his small journey to fitting with the label bisexual.

 

Lastly, there was the chest. Inside there was 4 objects, a tape two notes and a picture. The tape was called Sex in Chains, a silent film from German 1928. The picture is of an ex girlfriend, Marsha. This is signified by crossing out the name in a heart. The two notes were a break up note from Marsha, and a draft coming out letter to Zeke’s parents. These being hidden away shows a lot about Zeke and what he is willing to put on display and what he hides. He doesn’t want people to know he isn’t over Marsha, but he also isn’t ready to tell people his sexuality.
There was so many secrets hidden in the room that most people wouldn’t find them. This means that each person constructs a different image of Zeke. They aren’t being told things about Zeke, they are learning themselves.

Analytics n stuff

So during this project, we got a lot of our feedback through analytics, but what did we learn? Well, from investigating the analytics I discovered a few things. One major things was that people did not know how to use the combination lock. So my initial concerns about people not being able to find the code for the combination lock were not a large problem, the issue was people working the lock itself. Because they didn’t know how to use the lock, they would just brush over it and never think of finding the things inside. To fix this I created a new game tutorial in the menu that required you to use a lock before you can play the game. Another thing that we discovered from the analytics was that people like to throw things in vr, a lot. This really distracted people from the purpose of the game because they didn’t read the text on objects, they just threw things about. To help stop this, we really limited what people could use and stopped them from moving larger objects, but this didn’t entirely fix the problem since they could still throw things. This is always going to be an issue in new VR games, people are mostly interested in understanding the physics. One way we may have been able to fix this further would be to stop the throw force from being added. This would make throwing things really unsatisfying and disappointing but may have frustrated people. Finally, one thing we weren’t able to learn from the analytics is what people couldn’t read and used the UI interaction to get clearer text. This is because the UI was not used in the end because it was going to take too much time to get working properly. From what is seen from watching people play and talking to them afterwards, there wasn’t anything they couldn’t read. I could have gathered better detail if I had used a survey, but it’s a little too late now. All in all, we learnt a fair bit from the analytics, we were able to make sure that people could find the things that we wanted to, and were able to minimise the distractions in the game. We would have been able to refine our hand written text more if we had our UI system working, but it wasn’t an important element of the game, and it still worked well without it.

Shared house post mortem

Shared house was made to express an idea of home and what home means. This idea is that home is a private place filled with personal things and information. But, instead of expressing the game as the players personal space, the player is invading someone else’s. To do this and to deliver the feeling well, it was important to make the player feel like an invader. The way I tried to do this was by filling the room with secrets about it’s owner. These secrets were varying in severity, some being somewhat harmless and others being almost devastating if they were to be spread. Another important part of the game is trying to make the player feel like they are playing as themselves in the world, rather than someone else. Part of doing this was to make the game in VR. This let the player be in the space themselves and rather than embodying another character or person, they embody themselves. This was accompanied with a few other things to try and let the player feel like themselves in the game.

 

Construction:

 

Room building

Building the room was a key part of the games development, since the game takes place almost entirely in the room.  I started this by thinking of an interesting shape to make the room. I chose an L shaped room to create a space that didn’t instantly tell you everything about the room, but instead made the player interested in the rest of the room when they enter. It was also important to have the room in proportions that make sense to people, so that the room feels like it’s part of the house rather than any other type of building. Once the room was set out in shape, it needed to have furniture. I placed the bed in the far corner so that the bed can be seen from all points in the room. Putting the tv and a shelf next to the door, with a couch across from them. Then around the corner I placed a desk against the far wall, some shelves on the at the end of the room and a set of drawers across from the desk. This allowed for a flowing path past all the key locations to the point where I placed a key item for the game, making the player see everything first and travel to the end of the room, then turn around and see more on their way back out. The players room and the hallway were designed to fit the main room and also furnished to block off areas that wouldn’t be used. However, the rooms initially were not built with windows, so they did not feel anywhere near to a house. More like a bunker. So I placed 3 windows in the full structure, two in the player’s room and on above the desk in the main room. The rooms looked like this in the end 

 

screenshot 3screenshot 4

Secret writing

Pretty much the most important part of this game was the secrets. They were what would convey the largest piece of the story, and what would hopefully make the player feel like an invader of someone’s personal space. To start with these, it was important to have the character set out, thankfully I had done this quite a while beforehand. I knew that the character Zeke would be bisexual, have split parents, be raised religious by his parents but is questioning it now, and be into biology and entomology. From this, I created pieces of information in rough blocks that would tell these pieces of the character in small parts. For example, when it comes to his sexuality, there was 6 different written notes alluding to this. Two of which were related to partners, and ex girlfriend and a crush. Because bisexuality is harder to express with just one relationship, I needed to show two to make it clearer. I also needed to show his struggle between his faith and his sexuality, as the two would be conflicting pieces of himself, and with his faithing coming from his parents, he would not be confident to come out to them. So I created three notes that describe his relationship with his parents, the first being a half written coming out letter, another being an aggressive not lashing out at the fact that his parents are split and can’t make comment on his struggle when they can’t follow their own faith, and the third being directed at his struggle with his faith. But the point of the notes and other secrets were to describe the character in many parts, so that the player creates a slightly different idea of the character based on what they do and don’t find.

 

Secret implementation

The secrets were one thing to write, but I also needed to put them in the level. It was really important to make them feel hidden, but also make the player know how to get to them. This was done by placing things in more obvious viewing positions, colouring things to make them stand out and a few other methods to attract the players eye to the secrets. One key one was positioned in a very out of place spot, but so many people still found it due to the signs that I placed to lead them there. This was a written note about Zeke’s struggle with his sexuality and figuring out the label that best suits him. It was placed beneath a set of drawers next to a bag, with not much light on it. But what lead people to it was a sticker I had placed on the side of the drawers that isn’t visible to the player until they go right to the shelf at the far end of the room and turn around. This sticker was my interpretation of the bisexual pride crescent moons. Most people didn’t understand the symbol, but it caught their eye enough to make them interested in the area. Once they are interested in the area, they can look down and see the corner of a note sticking out and investigate further if they wish. Another of these would be where I placed the code for the lock. I wrote the code at the end of a password on a sticky note that was stuck to the pc. The code was the end half of the password but the numbers were underlined to stand out. There was also larger images on the note to attract attention and it was a green post it note on a grey pc so it would stand out more.

 

Making the room a home

There were a few key decorations to the room to let me make the room feel lived in, and actually be a home rather than a display room. These were the posters on the walls and the dirty clothes on the floor. It was important to have these in positions that would attract the eye and fill in the large blank spaces, because to make a room feel like a home it’s important to have less perfect lines and more angles and broken segments

 

Team work

We worked really well as a team on this project. There were points where our communication broke down slightly, but for the majority, we were able to complete tasks well and within our standards. There were a few things that could have been improved if we had some better communication between our team, but that could have also been done with some more time, which is always the dream.

 

Audio

One thing that I would have loved to improve if I had time was our game audio. We only had one person doing the audio for our game, and so we had pretty limited sound effects. If I had more time or better communication skill I would have asked more people to be working on the audio. But that wasn’t the only part of the audio that could have been improved. This was the first game that we as a team had used fmod, so we really weren’t aware of what we were doing. We didn’t  devote enough of our time to understanding fmod so that we could implement the sound to the best of our ability.  Lastly with the audio, the person that we had doing the audio is much better suited to engineering audio rather than composing music, so if we were able to do it again, I would have liked to have someone who is more musically minded to work on the main track to better deliver the desired mood. But that’s getting really nit picky.
All in all this project went really well, our team learnt a lot about VR and I was able to apply a lot more knowledge about design to deliver the experience to the best of my ability. There’s obviously things I would change, but that’s the case with everything I work on.

Preparing for analytics

The analytics we are planning to gather from this playtest are a few things. We are collecting the positions of the controllers and the head every 5 seconds, the objects that are picked up and when they are picked up. We also want to record when the player interacts with the object to see when they need to read clearer text rather than the handwritten text. However, the ui is not yet functioning fully, so that is yet to be implemented and may be removed in the end. The reason we want to record these things is to know more about the players movements and what they interacted with. Because the game is about finding hidden secrets, it’s important to know what they found and how much they paid attention to it.  It is also nice to know where the player went to see if they went to the space of a secret but never found it. For example, one major secret requires a few steps to gain access to it. First you have to find one of the three places in the room that a 3 number code can be found, these being on a sticky note and on t. They the have to two pieces of paper (the sticky note having it underlined and the papers being part of a 6 number code they then have to take that three number code and put it into the lock on the chest, something that should not be hard to find. They then need to open the chest and pick up the objects inside. This process could have hiccups, so we need to know what they interacted with and when to see what told them the code and whether they recognised it when they saw it. Looking at what Nic Lyness experienced from his analytics it seems that he was only able to gather information about position and guidance rather than writing through his analytics. He was able to use a survey to figure out whether or not his writing was insensitive or missing the mark. So, I think that it may be difficult to get the right information about people’s thoughts without a questionnaire, but that will just be a limitation set upon me that I’ll need to work around. You can read about his experience here 

I hope to use the information that I can gather to better position or signpost secrets depending on their level of importance. But only time will tell what I can change.

Management plans

With this new project, it is clearly a good idea to try and get our project management sorted out. Looking back at our previous game, we had some pretty decent project management. Izzy was our project manager and he did quite well at keeping in touch with all of our team, including our collaborators. However, I often was unsure about what to do next, and decided to go forward and do what I thought needed to be done. However, while this was an issue, the project was still delivered on time and was working full. The only things that could have been done would have been further extensions of the game, rather than features or polish. For project 4 I would like to take this level of communication with our collaborators if I can. Because it constantly felt as though they knew what was going on and I felt like I was aware of their progress at all times. I would also like to improve the work list so I and my team can better know what is needed to be done. To do this, it is important to have a larger list of what needs to be done, and also an order of priority. This should let us create lists of what needs to be done in each day and should let us move on to more work if we run out and find ourselves needing more to do. This could be difficult though because it will require us to think about our project in a great amount of detail before it comes time to implement it. Because it is almost impossible to know all of the needed elements at the start of working, we’ll need to be able to update this list as we go. This could bring about issues because it may result in feature creep. I am a little concerned with how I will be able to implement this because I will be the sole designer on this project, so taking on that role as well as being the project manager will almost definitely be too much for me. So it will be best for another member of the team to be the project manager. This will probably result in slightly different methods of project management, but for the sake of my sanity, it will need to be done. Being the vision holder I would not do well being the project manager, because the game would definitely be wrought with feature creep. But, even with all this preparation and consideration, we will clearly run into more problems and so can only be so prepared.

Demoing VR

So, in the coming weeks I will have to demo my VR game to a public audience. What does this mean? Well, other than the sudden rush of anxiety, it means I have to introduce a lot of people to VR and set them up with the headset so they can experience the game in the best way possible. This can be more complex than it appears. Most people haven’t even experienced VR yet, so playing this game will be the first time they’ve ever experienced it. Because of this, it’s important to teach them proper care for the headset, and to overcome their urge to put the everything on at once, especially with the vive. There is a specific order to putting on and and taking off the vive headset so you can get the most comfortable experience. Often this means having someone else to help. The first step is to put on the headset, but because everyone’s head is differently shaped, it needs to be almost fully loosened, then placed eyes first with the straps loosely over the head, allowing the person wearing it to hold the headset at a comfortable position, and then tighten the straps on their own or with help. For demoing, I, or a member of my team, will need to be the person helping. So once the headset is on, the person needs to have their controllers. For anyone waiting outside the headset, it is best to hand the player their controllers by holding them upright by the base. So that the person inside the headset can easily take a hold of them without interference from the person outside. But it is important to make the player take a step toward the controllers to get their mind into the room scale experience rather than standing still for the whole time they have the headset on. Since I am going to be using someone else’s vive for this demo, it will be important to use the wrist straps for comfort of the player and the owners of the vive. To handle this, I believe it is best to hand the player the controllers one at a time so they can use both hands to put the wrist straps on, without having to juggle two controllers. Now they’ve got their controllers and the headset, they need headphones. These need to be separate to the headset initially so that putting on the headset has one less cluttering object. But when the person assisting needs to give the player their headphones, they should approach from behind, and continue to talk to the player telling them they are going to put the headphones on now. Plugging in the headphones first and then placing them on the player’s head.

So now the player is all set up with the game. But do they know what they are doing, mostly with the game, it should be set up to be self explanatory. But one thing that is important to teach them is the chaperone system. If they don’t know what this is, they might get confused or ignore it entirely. So to introduce them, it is best to let them discover it by walking forward. This can take some encouragement, so it is best to tell them to take a step at a time until they see the blue. Once they see it, then the person outside should tell them that the lines are a representation of their playspace, and that there may be people outside it. But how do you talk to them when they’ve got a headset on and are in a loud room without shouting at them? An inline mic is the solution to that problem. We can use it to talk to the payer calmly and without shouting to give small instructions if anything were to go wrong.

So now the player can play and can be given instructions when things go wrong. Now they can start playing. But it is important for the demo instructor to pay attention to the player so that they know when the player is ready to finish and start the process of taking off the headset. This being to take the controllers first, then take their headphones allowing them to take the headset off themselves. Once you unplug the headphones and put both the controllers and the headphones down, you can take the headset from the player. It is important to pay attention to the player because they may want to stop playing quickly and will want to pull the headset off first. So it’s important to be ready to take things from them quickly.
My team and I will need to pay attention to these things when we are in our upcoming demonstration to create the best possible experience for our players. Here is a video explaining more about this demoing process:

Horizon post mortem

Horizon is a music video game that was created to demonstrate the works of musician Jbox. It was made to shuffle through all of his songs and have elements that responded or acted along with the music. The game was focussed on the idea of a journey rather than a destination. So it was created to be an infinite drive game, with continuous terrain to focus on the journey. Another emphasis was on colour and colour explosions as this was a key thing that Jbox wanted from the game. We made a decent effort to create this but due to scheduling, format and communication faults and limitations, we weren’t able to fully accomplish this aim.

 

Construction:

Terrain Gen

The terrain generation system was my main focus during development, since it was a key part of the game. I started by planning out how it would need to be put together. I knew that it’d need to be built out of preset pieces of terrain to create corners and bends in the road I decided these pieces would left and right turns, inward and outward S bends and a straight road. So I started by building these pieces inside of unity. I then needed to figure out how to create a system to piece them together one by one. This was done by instantiating the pieces one by one onto anchor points that were at the end of each piece and deleting the pieces after they were around for too long. This worked well but would often take the road too far from unity’s origin point and things would start to freak out graphics wize. So I needed to adjust the system to guide it back to the origin. But once it was doing that, I just needed to create more decorated versions of the terrain pieces to select when spawning and then it was done. I also had the car move along with the road through an animation, this could have been done better as the animations were quite clunky. The pieces of terrain that I created were also very clunky, I’m no 3D animator. It would have been great to have modeled terrain pieces rather than clunky pieces made from unity primitives. But our communications with our animators had problems and we weren’t able to fit the models into what we could get from them. You can read more about how I build the terrain generating system HERE

 

Time Changer

The next system I needed to create was the ability to change the time of day within the game smoothly with simple inputs. So, to start, I decided to create 3 states of time that would be used as our times of day. These were day, sunset, and night. The next step was to get predetermined positions, rotations and colours for all the elements that would change with the time. These elements being, the rotation of the sun and moon, the scale of the stars, the colour and rotation of the directional light, the offset of the skydome texture, the colour and emission of the headlights and the light level of the headlights. Once these were predetermined for each time state, all I needed to do was create lerps between the points when the time states were changed. I did this to change between songs, but also decided to make a steady transition between closer points during the songs, so it wouldn’t be so stagnant. This system worked on the most part, but at times had some issues with jumping elements. This is probably an issue with the preset values, since not all elements were doing it.

 

Shuffle Player

The shuffle player was a bit messy initially, because it wasn’t nailed down what needed to be in the script and what each song was going to need to reference. Also, initially I wasn’t working on this system, and only took over after the deadline got too close and the person working on it hadn’t completed it to the level it needed to be. So I stepped in to finish it off so we could ship it on time. The style of shuffle I aimed for was to play through all the available songs once in a random order before it plays any songs twice. This is how most shuffle systems work. The shuffle system would select a reference number to a song, that would also refer to many other variables, such as song lengths and assigned time of day. The shuffle system worked ok in the end, but because it was rushed, the coding was a bit inefficient.
Team Work:

As a team we work pretty well. We created a final product that was satisfactory to the client and ran in the formats it needed to. But at times our balance was a little bit off, and a large portion of the work was done by one person, this lead to multiple problems. The main problem was that the other members of the team didn’t know how parts of the game worked if they didn’t make it themselves, so it was difficult for others to take over and “share the load”. This was also a method of dealing with difficult schedules from some members of our team, which is what pushed us in the direction of unbalanced work loads.  We also had communication issues with some of our collaborators and so we weren’t able to get that part of our game to it’s full potential, but some of that was outside of our control.

 

How this project feels

Some people say it’s difficult working on someone else’s project, because it’s hard to find your own motivation. But with this current project, I haven’t been finding that. If anything, I’m finding it difficult to work on other things. This is probably because of a few things. Often with projects for clients, you are involved less in the construction of an idea than with a self directed project. But because our client was very loose with his plan, we as a team were able to form an idea together, which let me be influential on the idea process and have more passion for the project. Also, often people working on external clients projects find it difficult to have interest on what they’re working on, but with the need for a terrain generation system, I have always had something to focus my attention on with full interest. Ever since our client mentioned the desire for an infinite shuffle mode, I was thinking about a terrain generation system, and so I have been focussing a large amount of my attention on building the system as you can see in the previous blog. So I haven’t had to waste any time on finding motivation or passion since it was there from the start. The only difficulties in my understanding is a loose structure because of the clients broad idea from the beginning as I spoke about earlier and a confusion in the communication with our animators and our programmer, but this is most likely because I am not the project manager so it isn’t important for me to be communicating with these people, and I am just feeling stressed because I am not aware of every element of the project, which is something that I can’t do in my position (or probably will never be able to do without being the sole person working on the project). I could probably smooth this out by being in more contact with Izzy (our project manager) or to ask him to keep a better record of what our externals are doing. But I’m not sure that will fix anything because I already have a pretty good idea of what they are doing and I still feel this way. I can’t be certain, but it’s not a large amount of concern, since other than this, the project is going great.

Terrain Generation

So I’ve been working on a terrain generation system for the musicvideogame we are working on. This terrain generation is to allow the game to run for ever in it’s shuffle mode. To start with building it, I needed to have a collection of tiles that could fit together in any order and still look like a consistent road. To do this, I decided to have 5 different pieces to make up these tiles.

Road Bends

 

These pieces in order from left to right are the left turn, right turn, straight, outward S bend, and inward S bend. These pieces all needed to be oriented the same and have an anchor at the end of the road segment for the next piece. This lets me easily piece them together without any broken rotations. After the pieces were built(which took forever) I needed to create a script that would place them one after another in a general road structure. To do this I needed to have the script randomly pick a piece, and to place it at the same position as the next anchor at the end of the road. It then needed to reassign the next anchor and loop. This resulted with something like this.

Copy of terrain gen

 

But of course this wasn’t done, the road was always crossing itself and never deleted the earlier pieces. So, I decided to make the road have a limited length. To do this I made each piece be a part of a set array that cycled through. Each time a new piece was created the oldest piece was deleted to make room for it. I also created a system to limit the number of corners the road could take to prevent looping. I did this by only letting the road make a left or right turn every 10 pieces, and when it had the opportunity to create a corner, it was still only a 1 in 5 chance. This new system created a road that moved like this (sorry for the small size). 

terrain gen mkII

 

So this was now creating a road that would snake around the world all crazy like, but the car wouldn’t follow it. So I needed to make a collection of animations that would move the car along with the road. With these animations, it was extremely important to make them pass through the anchors, otherwise the car would drift away from the road over time. Also with the new animations, I was able to get the code running every time an animation ended instead of in update, meaning that the road could move along with the road. Also to have a reference to the animations names, rather than creating scripts for the pieces of road to hold the names, I added them as tags to the object, letting me reference the object’s tag as the string for which animation to play. This new update to the system let me have the car drive along with the road, meaning in some form, it was ‘done’. But, an issue with unity is that the further away from the origin you get, the less accurate the positions get, which cause shadow to flicker as the road got further and further from the origin. This was a big problem for a game that is focussing on visual pleasing scenes. To fix this, I needed to alter how the road would decide whether to use a left or right turn. To do this, I added a variable that would track the way that the road was heading (cardinal directions based off Z+ being north) and then depending on the direction it was traveling and the position on the x or z axis, it would pick a corner that would lead it back to the origin. But the problem with this system is that id would eventually just create a forever looping circle that would only ever pick left or right and never a mix of the two. So I decided to add a function that would let it randomly pick a corner or straight if the road was within 1000 units of the origin. Which resulted in this wonderful road.

terrain gen Fixed
After this I needed to tweak the anchors and the animations to not have holes in the road or big jutting out walls. But that is all I have done to the terrain generation system so far. I still want to make the road pick a type of terrain based on some sort of curve so that we can have more than the cliff face we have right now, but I need to work on creating the tiles for those first before I can create a system to spawn them as part of the road. But that task is for later, as I also need this system to spawn decorations such as beach furniture and boats.