
seen from United States

seen from United States

seen from United States
seen from United States

seen from Guatemala
seen from Canada
seen from China

seen from United States

seen from United States
seen from United States

seen from Australia
seen from China
seen from United States
seen from China
seen from United States
seen from Spain
seen from United States

seen from Russia
seen from Canada
seen from Russia
The Power of Perspective - A Bachelor Degree Project
by Ivar Michael Tangeraas, Kristian Torsdalen and Christoffer Liseth
“The Power of Perspective is a bachelor project which takes on the challenge of creating new and interesting forms of gameplay using “the power of perspective”. We aim to use perspective to create new and exciting gameplay by placing the player in control of a boy and a dog in a fantasy setting, where they will on an adventure to save someone close to them. The player must switch between both characters to complete puzzles to further traverse trough the low poly, stylished world of Azgad”
So, after 10 months of hard work we have finally finished the prototype for our game concept! These months has been filled with blood, sweat and tears, but in the end is was all worth it. We have gained an immense amount of new knowledge and skills that will help all of us in the future!
Ivar Michael Tangeraas - Lead Level Designer & Visual Designer Kristian Torsdalen - Lead Modeler & Character Designer Christoffer Liseth - Lead Programmer & Server Manager
Music by Todd Umhoefer - Less Words by Old Earth
Many thanks to everyone who impacted the game through feedback, testing and kind words!
If you are interested in trying out the game or have any question, you can download it here:
https://mega.nz/#!R6B1mIIT!clOkY1GrhWRw8th5BZI1mYHnpkkQdbNtlsXP6iq7Sss
The view of Level 2 seen from the top of the shack!
All in all I would say that this was an interesting course, but it’s kind of unsettling that a lot of it was a recap of the first year assignment from Gameplay. I found the coding/programming aspect very interesting, and even though it was just an extra, it was the highlight of this course for me.
I am going to express my thoughts on the composition of the student groups yet again. Seeing as most of this course was done very physically and hands-on, placing campus and online wouldn’t match as one part of these would get neglected because the others focused so hard on what they were working on. Looking back to Game Assets 2, a lot of people were in groups with online students and that worker mostly fine because everything was done in a digital medium.
My final thoughts on ludic studies was that it was sort of a mess and a lot of it is either contributed to us not having available teachers and the composition of the groups.
Shortened down, the process went pretty smoothly. I focused on smaller JavaScript concepts before delving into Unity’s own library of functions and changes they’ve done to the JavaScript language to fit their needs (API). These were/are simple information-storing or text-converting programs. I then decided to build upon a code that I had already done in Unity, which made a game object draggable, which would let it stay at its new location after the dragging stopped. I essentially needed to add something that checked if it was close enough to one of the resource tiles, so it would register that it could snap to that tile. This was done after Josh helped me grasp some concepts that could be used in practice.
After implementing the drag-and-drop snap-to-tile function, I had to have some way that it would check if there were any other player tokens in the resource tile, which could easily be done when I applied the same script that I used to snap to the tile, except checking for specific tokens this time. After some issues with it not properly going through the if-statements (coding snippets that it would go through ONLY if it met the criteria that had been set for the object) and some positioning scripts (where the game object is placed) that would go in the wrong order. After some trial and error, I was able to apply code that would first check if there was a player token in the first spot, and if there was, it would move on over to the second spot and do the same thing. If both spots were taken, it would simply return back to its original spot in front of the player and tell them that the tile is full.
Now that I had the placements right, I had to make a proper turn order where each player could place the first token they had, and then after everyone had placed their token, they could each place their second token in the same progression. This was done making a variable (a number, string of text or whatnot that could be changed on the spot) on each of the player token game objects that I set up as an integer (whole numbers), but acts like a Boolean (only values are if it’s true or if it’s false).
At the start of each game (and when the game is reset), it would set all the player turn variables to “false” (0), dictating that it was nobody’s turn to move, but change the first player’s (Logistics) to “true” (1). Then when they place their turn, their variable would turn to “false” (0) and then find out, using an array and another variable, who goes next, making their variable turn to “true” (1).
During all of this, I also had to create several extra functions that acted as “checkers”, that would compare the token’s name to a list and return a number or string that would correlate with the arrays that I had spread about. These numbers and strings were used to more easily use functions rather than writing a new function within every function.
While my other group mates used C# (c sharp), I focused on JavaScript (using Unity’s API and some minor non-Unity programs). I feel confident enough in JavaScript to do projects of my own. However, I notice that C# is extremely close to JavaScript, so maybe, just maybe, I’ve managed to learn two languages in one.
From atoms to pixels?
After the board prototype was finished we were going to create a mechanic from our game and code it into unity, this got me really exited! FINALLY we get to have some fun with some code, and having lectures related to it! So we discussed in the group and decided what mechanics we wanted to make, i ended up with creating a grid movement system for moving the bears on the board! this was alot of fun and after dozens of tutorials i managed to get a working grid-move script in place!
As soon as we got our scripts halfway working we decided that we wanted to merge our scenes and try to make it all work together! Phong made a random generator for the map and we got our scenes working together pretty easy, Peter on the other hand made the random card deck and the mechanics for drawing cards etc, this was not as easy to implement but as I was finished with my script I ended up writing a code for a simple camera switch when you entered combat. this was alot of fun as I just had a read on some forums and then tried to make it without any tutorials (BIG STEP FOR ME)
And as you can see it was really simple as soon as i understood what to do :) https://i.gyazo.com/437d33b448343153ae7ae52ffffca44f.mp4 I did not find a way to put GIF’s in this blogpost so i put up a gyazo link.
I think this concludes this course! Hope you had a good read.
I had a concept that I had to make something drag and drop. This is something I would do in Unity using the so-called “UnityScript”, which is pretty much just Unity’s modified version (API) of JavaScript. When I first did this all I could do was to make an object draggable, and not the other functions I wanted it to do. My end goal was something where you would take a player token and move it to one of six tiles to gain what is noted on the resource tile. I could only do so I could move it. I was stuck and therefore I decided to practice my overall knowledge of JavaScript.
The first thing I did was explaining to my friend, Mathias, that I wanted to create an app that would store information about my or my players’ Dungeons and Dragons characters as well as add experience points from a session to the party. This would also need searching abilities and basic databases. My friend made the module that I would use as I started working with Electron, the same framework that Discord and Slack uses to create applications, which is based around JavaScript, HTML and CSS. I installed the Electron (Link) and Mathias’ DND (GitHub) modules and promptly got to work. I made a very basic window that would allow you to 1) open a new window to create a new character using <form>-HTML tags and getElementById-jS functions, 2) automatically find character level from entered experience points and 3) ping all the characters to the console window. I had a lot of issues surrounding incomplete functions, specific parameters (such as “The character can only be the classes from the core rule-books” and case-sensitive prompts but I eventually fixed after analyzing my code over and over. I then managed to create a new button that would open up a window to show the entire list of characters, rendering the “show list of characters in console”-function obsolete. This window would end up being the search window where you would end either the character ID or character name and search for lines in an array meeting those criteria. This ended up with me changing some stuff in the module my friend made to make it search non-case sensitive. All-in-all I/We are not yet done with this application, but I learnt a lot from doing the things I’ve done. If you’re interested in taking a look we have a repository on GitHub. >>>Link to GitHub repo<<<
After working a bit on the app I was chatting with my friends on an app called Discord. Sometimes, what we like to do is to create a string of emojis/pictures that are simple capital letters on a blue background and create giant text blobs with them. I thought to myself that, “Why don’t I automate this process? I can’t be asked to simply create a new sentence every time! It’s too tedious!”. So I joked to my friends about “Maybe I should just make a program that would do this for me.” and I got to work. This was very simple. It would require input fields in HTML that would send something to the JavaScript that would letter by letter see if it recognized this letter and change it accordingly. While I didn’t have huuuge issues with this as it was pretty much just a series of if-statements in a for-loop, I did encounter one grand issue. At some point my if-statements stopped working and simply let all characters go through that statement. After some debugging I found out that this was caused by me having to many OR (”||”) operatives in my statement. I found out after some searching around on the internet that I could simply check an array if that letter was found anywhere in that array using .includes(). Doing this made my very clunky statement tree much easier to read and also fixed it’s loose parameters. The app can be found on GitHub. >>>Link to GitHub repo<<<
Then back to today when I was still kind of struggling of “where I should start” when I was going to create a drag and drop function. I asked Joshua for help and he explained to me some simple concepts I could use. I was gonna open up Unity where I remembered I’ve already made the draggable token function, I just needed to have it recognize where it’s been dropped and then eventually move to the next player (if any). Me and Josh started experimenting with different commands and comparisons in Unity and found out that it wasn’t too hard after all. While in the beginning, it was sort of hard to wrap my head around it, it’s now fully readable for me and I feel that I am getting a grasp on this programming deal. Right now I have made a for-loop that activates when the item that was dragged has been dropped, which will promptly check if it’s close enough to the center of a tile to be recognized as “on that tile”. If it’s not it should be sent back to the start, ready to place again.