VR Practice Test
Use this area to describe your project. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate, maiores repudiandae, nostrum, reiciendis facere nemo!
VR Multiplayer PvP
Music: Epic/Action Trailer Music
By: taylorlipari
Use this area to describe your project. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate, maiores repudiandae, nostrum, reiciendis facere nemo!
AR and a New Language
I am personally not use to using Apple products, so it took a little while to get use too. It was a new program, language, and operating system. The one thing I could not get use to is the mouse scroll wheel being inverted from windows, but I made do. The goal of this project was to make an augmented reality application that could help special needs kids. We decided to create a task list where you can set the time and text of what you need to do at what time you need to do it. Because I had never coded in swift before I jumped right into it and took initiative on our project. I started by creating a basic task list that stored the information in a database. I used two different tutorials for this. It did take modifying the database code to get them working together, but after that we had a basic task list that you could close and reopen with all the information saved. Once I got that working, I figured out how to get the time added into the task list so you could record the time with the tasks. We all worked together to figure out the few bugs we had with this part and fixed them. After getting all the base task list done, we worked on getting the AR part implemented. Luckily, Shawn got a basic anker point f set up so we could place spheres anywhere in the real-world space. Was it exactly what we wanted? No, but with some editing we could get there. After connecting the AR part of the application to the app, I got back to work on the hardest part; getting it to save the objects you placed on the anker points and having them place as text from the task list. I remember there where a lot of bugs with this, and it took longer than we were planning.
Tranq Penguins With Friends
The Cold Roads (free videogame loop)
By: Free Game Music 1
We were assigned a multiplayer group project. The new requirements for this one were to have two AIs in the scene. After discussing as a group, we decided a hunting themed game would be perfect to fit all the requirements. The first thing I did was set up the player movement controls while someone else set up the guns shooting. I started by setting up the controls, so you could move using W A S D; and setting it up so not just the camera would follow the player’s mouse, but the gun as well. One issue I had while setting this up was that you could rotate the gun and camera over your head so you would be looking upside down. After some quick research, it was an easy fix. I limited how much the camera and gun could rotate on that axes by using Unity’s Mathf.clamp “rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);”. After setting up those parts of the controls, I decided to add a sprint and a jump. The sprint works by holding down the SHIFT key, and it multiplies your walk speed by 2. The jump is set to only allow you to jump using the SPACE bar if you are on the ground. After I was done with that, I realized we needed to be able to squat down. We did not have a player model, so I just set it to shrink the collider when you hit control to make it look like you are squatting.
After I got all the controls set up and combined with the gun controls that Triton set up, I decided to take a break from coding and set up the playable environment. It was nothing special, just a simple artic tundra that we decided on to be the playable environment for our game. But, what’s an arctic landscape without snow? So, I started messing around with Unity’s particle system until I achieved a good snow effect. I first had it set to snow on the entire map, which I realized was a mistake. I shrunk the area of the snow just enough so that it wouldn't lag from having too many particles in the scene. Also, I made it so the player could not out run the snow. This gave the illusion that it was snowing over the entire area.
Next, we decided to use Photon instead of UNET this time to expand our knowledge and improve our problem-solving skills. I followed a few tutorials on how to set this up. I am going to save you the long boring side of things and just place the code below.
We ended up deciding we would hunt penguins, and there would be a monster hunting us. I set up a basic state machine that swapped between Idle, Walking, Eating, Running, and Dead state. I set it so the penguin would be in the Eating state mostly, but would randomly swap to the Walking state, so it felt more alive. If the player got to close, they would enter the Running state and run away from the player. If they are shot, they enter the Dead state where they play the death animation and die. I followed a simple tutorial about how to set up a Deer AI to figure this out. It was a great tutorial, and I have recommended it to multiple people already. I used the same AI for the monster with a few changes.
Finally, we were almost done. We just had to sync up the penguins and bullets over the network. This somehow ended up being the hardest part of the whole project. We read through some tutorials until we found one that worked and got them both synced up. After all this, I was able to start making connections on how UNET and Photon where similar and able to use it to fix problems with other projects that used UNET.
3D 2D Platformer Concept
One night I could not sleep and was just staring at the wall. Then, I just thought it would be cool to do a game that was both 3D and 2D in a way. Next the thought of a cube maze popped into my mind. The whole concept is to be a 2D platformer in a 3D environment, where you traverse through a maze that you can only ever see part of at a time. I first started by setting up my character controller. A to move left D to move right and SPACE to jump. Nothing to complicated.
Next was to set up the controller for the maze. First, I was trying to tell it to rotate 1 time whenever I hit the trigger and not to rotate again unless you leave the collider. This caused an issue where it would rotate endlessly. I changed it to work by adding and subtracting from an integer and then multiplying that integer by 90, to rotate it only 90 degrees. This worked amazingly. Currently, I have it rotating left and right but in the future, I hope to get it rotating up and down as well.
One problem I still had with the scene rotating is the player would get sent flying when it rotated. It was an easy fix. All I had to do was add the player to the maze parent object. Then, I set it so the player also rotated with the maze and could not move until the maze finished rotating so he could not walk off.
After all of that, the camera would not follow the player like I wanted it to. So, I set up a real basic script to set the transform of the camera to follow the player
Next, I set up the first prototype maze to get a feel for what I wanted the theme of the game to be. I noticed it felt like I was walking through underground caverns, so I built some textures based off that. After getting some basic textures and materials on the maze, I felt it just did not feel right being a cave that was bright. So, next I turned down the lighting in the scene. This caused me to revisit my player controller and add in a light that would face the direction of the players mouse, so you had to aim it to see everything in the scene clearly. Now, there is a nice dark cave where you use a flashlight to see. I felt like everything was coming along splendidly.
Next, I decided to add some dangers into the scene that would kill the player. I decided to add glowing mushrooms. This would add two things. One an obstacle for you to avoid, and 2 some nice ambient lighting. After getting the mushrooms to kill the player, I set up respawn points, so the player did not have to start all the way at the beginning.
After getting all that working I when to bug fixing. I had a few people test my game and find bugs. There where a few that took some time to fix but all the bugs that my testers found are fixed.
Now that the code is working it is time to work on the levels some more. First, I make a new tutorial level so people can learn the basic controls of the game. This consists of basic challenges that the game will have. After I make the tutorial level, I went onto improving it and my original level. Originally the maze was made of a bunch of cubes that made it so the player had to jump nonstop. I imported my levels I made in Unity into Maya and rebuilt them. I wanted to smooth them out and make them feel like ant tunnels, So I took my time and made all the cubes no longer cubes and flow together as one smooth object.
I have been really enjoying this project and plan on expanding on it.
Time To Have Some Fun
Music: XRKFX After Party Drum Loop Loop C Maj 143 Bpm
By: Free samples loops and fx XRKFX
I was excited for this project. The only requirement was using UNET to make a multiplayer game. We were put into groups and sent to work. We started brainstorming and asked ourselves what is the most college game we could make? Instantly someone said Beer Pong and everyone else was like yes. So, we started to think how we were going to do it, and we decided on making it a VR game.
We used the OVR SDK off the unity asset store to get started. It was my job to figure out how to sync everything up over the network. It was a lot harder to figure out than I thought. OVR’s built in player controller was not designed to be used on a network. I really wanted to use their moving hands in our game. I found out the upper classman were also trying to figure this out. I was excited. I could just ask them how they did it. The thing is they were also not able to get it working. So, I started looking online. Everything I found said to use photon or was how to do what I wanted to do with Photon. The ones I did find involving UNET were out of date and no longer worked.
So, I sat down and created a check list of what to try and what I could and could not sync up over the network on OVR’s character controller. I found out I could not get the hand synced up, but I could get the objects that the hands follow synced up over the network. I really wanted those hands, so I kept trying. Tristan even helped me with trying to figure this out. After realizing we were running out of time, I decided to get it working the way I knew how even though the hands would not be synced up.
After getting the player to spawn in the scene synced up over the network, it was time to set up a scene for the player to join from. One of the team members set up a custom network manager while we where trying to figure out how to sync up the player.
We decided to focus on fixing the few bugs in the scene first. Tristen set up the ball spawn and cup despawn, while I was working the working on the player model. Since he helped me, I helped him by changing up some of his code so it would spawn and sync up over the network. It was easy after all that time I spent trying to get the character working.
Next, was setting up the new network manager to work in VR. We had just a few days left. I went to work. I had him walk me through his code quickly then set it up, so you grab an object to create and join a server.
At the last minute, we grabbed some assets off the asset store to make our game look nice and make some of the object grabbable. We were going to have a drunk visual effect on the camera, but we did not have time to test it and decided it was probably for the best. Drunk effect in VR, no thank you.
Mobal Project
This Project started with us following the Space Shooter game unity tutorial. After everyone had completed the tutorial individually, we were assigned to groups to work off the space shooter project to make our own game.
The requirements for the game were to have a working database, and for it to be playable on mobile devices. I created the models for the bees and wasps. I also recoded the enemy movement. We could customize all their movements by just changing the variables. This way, enemies could move left and right at varying intervals. Also, each enemy was set to move forward, left, and right at differing speeds. Additionally, I made it, so all the different wasps fired stingers in different patterns and directions. I set it up so they were all worth different points and that they would drop pollen, that if you picked it up you would earn more points. I set up a firing pattern for a boss, which is a bird that spawns at 1000 points.
This was the project where we initially started learning unity and how to code in C#. I still look back on some of the code today to remind me how to do a few things that I coded for it.
Interactive Comic
For this project, we were given nothing to work from. We had to create an interactive comic using Adobe Animates canvas mode. I decided to focus a lot more on the art side of this project because I just really felt like drawing. In this project, we could not use Action Script, the coding language we had all come accustomed to by this point. We instead had to use HTML5. I believe the reasoning for this was to improve our problem-solving skills and to encourage us to think outside the box on how to get things done.
This was another group project. My group member’s name was DJ. Most of our time was spent creating the art for the project. We had a lot of stuff that we had to scrap from the project because of issues we had with HTML5. This made us lose a lot of the interactive parts of the comic we had planned out.
After we finished making the art, we split up the code. We probably recoded what we had a little over half a dozen times because Action scripts canvas can’t handle a lot. We first ran the backgrounds as gifs which causes a lot of lag. After trying to fix the gif from lagging, with no success, we changed the gifs to videos. We coded the videos to preload so they would not lag.
In my opinion, this was the project I had the most issues on because the coding syntax for HTML5 is no where near the same as action script. I feel this taught me how to adapt. Which I feel is a great take away from this project.
Making Somthing Smaller
With the first project over, we were thrown straight into the second. This one was a group project. My group member’s name was Julian Do. Now that I had some knowledge on action script and how much time it takes to make things, I knew not to think on quite as large of scale this time. In this project, we had to use kinematics and modify a simple state machine the professor provided to us. We had a lot less time for this project as well.
First thing, first was to come up with a game idea. We ended up deciding on a game where you play as a snake and chase mice. Julien wanted to work on the state machine, so I decided to work on the kinematics for the snake. I wanted the snake to move like a snake. To do this I gave the head the controls and used kinematics for the rest of the body so it would drag behind the snake.
Once I got the player controls working, I went to draw up some art for the snake. Julien was still working on figuring out the state machine, so I decided to add some more art for the game. I first made some mice that where different colors and a scene for the play area.
After getting the basic art made, I decided to do a few animations to make the snake and mice feel more alive. By the time I was done with all the art, he had the mice working. After we got all the mice set up and spawning, we still had a little time to add more to work. So, we coded a health bar and score board together and set up another state machine, which was a mongoose, to chase the player. This made it possible for the player to lose the game. With finals just around the corner, we called what we had good because we still had other stuff to do this class and others.
My First Project Concept
This was my first major project for GIMM. I was super excited and ready to get started. I ended up getting too ambitious. Most people were thinking small. In fact, 90% of the class just did an endless wave shooter. Me, I was thinking big to big. I had never coded a day in my life before this class and was thinking it would be easy to learn. I was so wrong. I got nowhere near as far as I was planning but I learned a lot. The goal of this project was to pick one of 3 projects and modify, add code to the project, and create new assets. The game I chose was a space shooter because I wanted to make something like Binding of Isaac. I started with conceptualizing my games theme and ideas. I probably should have skipped this step because we were very limited on time.
I ended up deciding on making a game themed around nightmares, phobias, and fears. I decided for the first level to do a classic nightmare that would work great for a tutorial level. In school in your underwear. I first scraped the old games character controls because they where not what I wanted. The old controls were W made you move forward, and A, and D rotated the player. I changed it so the player would move the direction of the key you held down. W up, A left, S down, and D right. After I got the controls working, I made the art for the character and the animations for walking. This was the easy and after getting that all working, I hit a wall.
I found out the hard way how not to do terrain collision in Action Script. I first tried to make the walls work by coding it, so the walls added a force to the character in the opposite direction the wall was to the player. This did not work. I tried to code this a few different ways, but everything ended in the same result. The player could force their way through the walls, or the force would send the player flying in the opposite direction without ever being able to stop. So, I decided to try something different. I felt like an idiot for not doing it this way from the get-go. I instead coded it to change the players velocity in the direction the wall was to them to zero. It worked like a charm. I still made some coding mistakes that I look back on now and realize that there was a more efficient way to accomplish my goals. I ended up giving all the walls their own variable and coding each wall separately to set the players velocity to zero which took forever. In retrospect, I should have just given them all the same variable.
At this point, I knew I would not be able to get a full level done by the due date. I really wanted to get the enemies working, because getting a basic working AI sounded like it would be a lot of fun to do. I will admit, I really overshot what I was able to do at the time. I kind of got the enemies working at first so I decided to take a break and create the art for an enemy. I was really inspired by Dark Souls at the time, so I made lockers with tiny legs and a giant tongue just like the mimics in Dark Souls have giant tongues. After getting the art made, I went back to coding. The lockers would run at the player, but they would only run in a straight line and through walls. Once the lockers ran at the player, they would just keep running off into oblivion. I did not want it this way. So, I tried to recode the enemies and completely broke it. I could not get it working how it use to work. I really wanted to get the AI to work. I spent the last few days trying to research how to get it to work. However, I could not get it working. So on the last day, I made some environmental art just to make what I had look nicer. I really enjoyed this project and learned a lot in the process. I hope to revisit this game concept in the future with the knowledge I acquired from this and future projects.