After much deliberation, we finally decided that Vinyl needed some kind of scoring system. We resisted this idea for a long time, because we didn't want to enforce a "right way" to play our game and scoring systems naturally imply a proper method of play. However, without one we kept running into the problem that playtesters didn't understand what to do in our game.
The biggest issue we had with a scoring system is the game has always been about audio manipulation, and if people want to make their songs sound weird and silly, we didn't want to stop them. We had all but abandoned that notion, until JJ and our professor came up with an idea of "genre changers" which allow the player to have some more agency over the type of manipulation that is happening. This system has no impact on the score, so the player is still free too play with the sound while still trying for a high score.
We tried a few scoring solutions, all revolving around the idea of a streak. We initially tried basing everything on that one number, but it got confusing when your streak would suddenly go up 15% for hitting a filter since your streak no longer meant how long you've gone without hitting an obstacle.
We have since decoupled the score and the streak, so the streak adds to your score, and other things like filters also add to your score, but the streak is always how many obstacles you've passed since the last one you hit. It works well, but we've struggled with the growth curves, since certain actions are more beneficial to you once you already have a big score since they are percentage based, and others are just linear. Since all of this math is hidden from the player, it's probably not a good idea to make boosting worth tons of points near the end of the song, but have it be essentially worthless at the beginning.
I ended up coding several options for growth curves and score bases into the system so that we can play test quickly with different combinations of options that can be quickly tweaked from within the Unity editor. I think the system is well designed, we just need to find the right balance to make it feel right.
Thursday, November 28, 2013
Friday, November 15, 2013
Vinyl : IGF Edition!
We have officially submitted our game to the IGF Student Competition! Actually, we officially did on Halloween... and then a couple more times after that, but I'm bad about updating my blog. The key things of note since submitting was our post mortem required of us by the professors and general team grooviness.
I've said for awhile now that the engineering team generally works fine, we get all our tasks done and are typically all on the same page. The same can't really be said for the team as a whole, and we've been making some pretty serious strides to remedy that. The post mortem focused generally on us having entirely too many meetings where nothing useful is accomplished and general communication and team morale problems.
I think my favorite remedy to come out of the post mortem is our new policy of putting everyone's contributions to the game in regardless of quality, and not replacing them until we have something better. Before we would either not put something in the whole team didn't like it, or we would take it out fairly quickly. This discouraged the artists and left the game looking the same (programmery) for so long that actually refining an art style became incredibly difficult.
Since then, the art team have collaborated with the programs other thesis project art guys to come up with an art style we can seriously push forward with. This probably should have been done six months ago, since we will ideally content lock in less than a month, but its refreshing to see the rest of the team have the enthusiasm that we all had when we started again. I think with a bit of minor crunching, and maybe leaking a few weeks passed our deadline we'll have a much better looking game.
The engineers are almost entirely working on simple implementation changes, UI stuff and minor design tweaks, so while we have our hands pretty full, it's not with the kind of things that are difficult.
Aside from that, we've also become a bit more agreeable with design changes. Largely, I think that is due to the fact that the game is in a state that we like, so changes are very minor. Additionally, we are trying harder to take a "implementor gets creative authority of how a feature works" approach. Which I thought we were kind of doing before, but I guess some people thought otherwise, once again due to communication issues.
All in all, I'm excited to see what Vinyl looks like in the next month. Check out the current IGF build at www.thevinylgame.com
I've said for awhile now that the engineering team generally works fine, we get all our tasks done and are typically all on the same page. The same can't really be said for the team as a whole, and we've been making some pretty serious strides to remedy that. The post mortem focused generally on us having entirely too many meetings where nothing useful is accomplished and general communication and team morale problems.
I think my favorite remedy to come out of the post mortem is our new policy of putting everyone's contributions to the game in regardless of quality, and not replacing them until we have something better. Before we would either not put something in the whole team didn't like it, or we would take it out fairly quickly. This discouraged the artists and left the game looking the same (programmery) for so long that actually refining an art style became incredibly difficult.
Since then, the art team have collaborated with the programs other thesis project art guys to come up with an art style we can seriously push forward with. This probably should have been done six months ago, since we will ideally content lock in less than a month, but its refreshing to see the rest of the team have the enthusiasm that we all had when we started again. I think with a bit of minor crunching, and maybe leaking a few weeks passed our deadline we'll have a much better looking game.
The engineers are almost entirely working on simple implementation changes, UI stuff and minor design tweaks, so while we have our hands pretty full, it's not with the kind of things that are difficult.
Aside from that, we've also become a bit more agreeable with design changes. Largely, I think that is due to the fact that the game is in a state that we like, so changes are very minor. Additionally, we are trying harder to take a "implementor gets creative authority of how a feature works" approach. Which I thought we were kind of doing before, but I guess some people thought otherwise, once again due to communication issues.
All in all, I'm excited to see what Vinyl looks like in the next month. Check out the current IGF build at www.thevinylgame.com
Monday, October 14, 2013
Vinyl: Installer Edition!
This is going to be a more technical heavy article, which is really what most of my posts should be about. Anywho, one of my tasks this last week has been to build an installer for our game. Given that we are building the game in Unity, it'd typically be pretty easy, there's a very easy build system built right into the editor. You select the scenes you want, in the proper order, click the button and let it go!
When has that ever worked? I imagine it probably would work pretty well for a normal game, but ours is running three separate programs, two simultaneously to handle all the weird stuff we do. To start, when the game launches, we allow the player to select any mp3 they want. This was a problem in itself because the file dialog box we were using was only available in the editor, so just to build I had to find a workaround for this. Once the file is selected we launch a C++ program we wrote to parse the mp3 and generate the level from it. From there we launch the game in Unity, and PureData, an open source audio engine, since Unity's Fmod wrapper doesn't give us anywhere near the amount of control we needed to manipulate the song in real time.
Because of all these shenanigans, we are constantly referencing song and level data files that are stored outside of Unity. Turns out Unity isn't a fan of that, their system has you throw every asset required for the game into a Resources folder that then gets written to a giant binary file. That won't work for us, so I've been figuring out a work around. When you build a Unity project it creates an exe and a game_data folder which is apparently uses as its working directory. If I copy over our External folder into the game_data, everything is then in the right place. However, several little things have been causing a problem since, such as even though the relative paths are right, I can only seem to get files to successfully open with absolute paths. Additionally, each method we use behaves a little differently, some require forward slashes, while others prefer back.
Once I get all the file reading to work properly in the built version, actually creating the installer should be fairly straightforward. Since this game is going to be Windows only, Visual Studio has a Install Wizard project type I can use. I just have to tell it what folders and files are required for the install and it more or less behaves like every other Windows install wizard you've ever seen. It's pretty fancy stuff.
Hopefully we'll have a working installer we can send out to appease the masses by tomorrow.
When has that ever worked? I imagine it probably would work pretty well for a normal game, but ours is running three separate programs, two simultaneously to handle all the weird stuff we do. To start, when the game launches, we allow the player to select any mp3 they want. This was a problem in itself because the file dialog box we were using was only available in the editor, so just to build I had to find a workaround for this. Once the file is selected we launch a C++ program we wrote to parse the mp3 and generate the level from it. From there we launch the game in Unity, and PureData, an open source audio engine, since Unity's Fmod wrapper doesn't give us anywhere near the amount of control we needed to manipulate the song in real time.
Because of all these shenanigans, we are constantly referencing song and level data files that are stored outside of Unity. Turns out Unity isn't a fan of that, their system has you throw every asset required for the game into a Resources folder that then gets written to a giant binary file. That won't work for us, so I've been figuring out a work around. When you build a Unity project it creates an exe and a game_data folder which is apparently uses as its working directory. If I copy over our External folder into the game_data, everything is then in the right place. However, several little things have been causing a problem since, such as even though the relative paths are right, I can only seem to get files to successfully open with absolute paths. Additionally, each method we use behaves a little differently, some require forward slashes, while others prefer back.
Once I get all the file reading to work properly in the built version, actually creating the installer should be fairly straightforward. Since this game is going to be Windows only, Visual Studio has a Install Wizard project type I can use. I just have to tell it what folders and files are required for the install and it more or less behaves like every other Windows install wizard you've ever seen. It's pretty fancy stuff.
Hopefully we'll have a working installer we can send out to appease the masses by tomorrow.
Design, Communication and Faculty
So anyone who has read my blog posts from the end of last semester knows that we made a lot of dramatic design decisions with the game in rapid succession, without really settling on the best and without really having time to implement any of them. We got more or less got to an alpha build over the summer, largely thanks to Cody and Sherly, but as soon as school started and everyone was back to have an opinion on design we seemed to lose focus once again.
Our biggest problem is probably communication, because if you were to actually track what the engineers have been building over the last 6 weeks you'll see we've more or less been on a similar track this whole time. We've have a couple weeks where we tried new things to see if they were fun, but for the most part we've been working toward the same goal this whole time, while discussing potential designs a little too loudly, that were never meant to be officially implemented ideas.
In addition to that, the art side of of our team has fallen behind due to lack of communicating our needs. With both of those combined, every member of the team had a different idea of what the game was supposed to be, which became painfully obvious when it came time to present to the faculty last week.
With the lack of art assets and direction so close to our IGF submission deadline, everyone was worried. In retrospect, I think the problem seemed a lot bigger than it was, but it finally got us to sit down and plan out exactly what we want the game to be before and after IGF. After a couple hours of design discussion we decided to change how a few features worked, which makes the game feel more comprehensive as an experience and is just more fun to play. Ironically, its quite a bit more like the original prototype than it has been since May.
On top of that we have outsourced a bit of art, put Zeph in charge of the in house artists and seem to have a bit of a content pipeline going. Of course, fall break just hit, which put a bit of a snag in our new found groove, but all the engineers are still meeting twice this week to implement a bunch of the mundane but necessary things such as fancy menus and building an installer (which I'll write about next, because it's proving to be quite the ordeal.)
Things should hopefully be going a bit more smoothly from here on out... we shall see!
Our biggest problem is probably communication, because if you were to actually track what the engineers have been building over the last 6 weeks you'll see we've more or less been on a similar track this whole time. We've have a couple weeks where we tried new things to see if they were fun, but for the most part we've been working toward the same goal this whole time, while discussing potential designs a little too loudly, that were never meant to be officially implemented ideas.
In addition to that, the art side of of our team has fallen behind due to lack of communicating our needs. With both of those combined, every member of the team had a different idea of what the game was supposed to be, which became painfully obvious when it came time to present to the faculty last week.
With the lack of art assets and direction so close to our IGF submission deadline, everyone was worried. In retrospect, I think the problem seemed a lot bigger than it was, but it finally got us to sit down and plan out exactly what we want the game to be before and after IGF. After a couple hours of design discussion we decided to change how a few features worked, which makes the game feel more comprehensive as an experience and is just more fun to play. Ironically, its quite a bit more like the original prototype than it has been since May.
On top of that we have outsourced a bit of art, put Zeph in charge of the in house artists and seem to have a bit of a content pipeline going. Of course, fall break just hit, which put a bit of a snag in our new found groove, but all the engineers are still meeting twice this week to implement a bunch of the mundane but necessary things such as fancy menus and building an installer (which I'll write about next, because it's proving to be quite the ordeal.)
Things should hopefully be going a bit more smoothly from here on out... we shall see!
Thursday, September 26, 2013
Vinyl Shockwave!
During the last couple weeks of Vinyl development I've been implementing various gameplay features. The biggest two have been obstacle generation and the shockwave (pictured above with programmer art). We have already been generating obstacles based on beats and notes of songs for a long time, but it was thrown in quickly and the different types of obstacles could prevent you from hitting the others. For instance, a ball could spawn at the same spot as a chorus filter, and the player could not hit one without the other.
I went through the generation code, and made sure things would spawn out of the way of other things, and added some functionality for spawning chains of filters for potential combos.
The way cooler thing I worked on was the shockwave. Now when you jump out of the halfpipe, when you land everything within a certain expanding radius goes flying up and out of the pipe. It's pretty satisfying. As of right now, it just radiates outward from the initial impact of the player to the designer specified max radius over the specified time, blasting everything it hits out of the way as it goes. I threw on the fancy static ball shader for now, so that we can visualize why the obstacles are flying away.
Wednesday, September 11, 2013
Vinyl After the Summer
Alrighty, Vinyl got a pretty major overhaul over the summer. Basically most of the work we wanted to accomplish last semester, but had no time to do is now done. Big props to Sherley and Cody for doing the bulking of the programming since the rest of the engineers had internships and were out of town. I managed to throw together a useful main menu from Montreal, and sit in on several meetings via Skype, but for the most part I was busy with internships and had dodgy internet everywhere I was staying which made VPNing into the university network rather difficult.
Anywho, here's a short video of what the game looked like at the beginning of the semester, since I'm a couple weeks behind on these posts.
Anywho, here's a short video of what the game looked like at the beginning of the semester, since I'm a couple weeks behind on these posts.
As you can see the pipe is now generated by the song itself and curves to the left like the groove in a record. There's some filters that carried over from the prototype and scratching, as well as a remixing system and some grinding rails that I believe were cut before this video was made.
Since the semester started we've been doing a bit more of an art pass, building the style we want for the game and bug fixing. I personally fixed a few bugs involving the mesh generation and primarily worked on getting a rope made of tiny boxes to tether the player to the needle.
Here's an updated screenshot of the visual changes since the semester started.
Year 2 Start and Summer Recap
So this blogs been pretty inactive for awhile. Last semester was ridiculously hectic, getting worse and worse until finally coming to a sudden early end when I an internship offer from Ubisoft Montreal with extremely short notice and starting halfway thru finals week. I managed to wrap up everything I was working on and get to Montreal with about 12 hours to spare, but the blog suffered a bit for it those last few weeks of school.
Anyway, the Ubisoft internship was really fun and I learned a ton about enemy AI, or at least how UDK does it. It should probably be noted that this wasn't a traditional internship, it was kind of like a student project on a grand scale supervised by Ubisoft, that I got by competing in their game prototyping competition. We basically built the winning teams prototype into a full fledged hour or two experience in 8 weeks using UDK. It was an intense two months, but the end result was fantastic, and I was blown away by what some of those art students up in Montreal can do. Here's a teaser video that has a download link in the info if you're interested.
Since that internship started so early and was only 8 weeks, I was done by the end of June with two months of summer left, so after taking a week off I headed down to Baltimore to intern at Zenimax Online working on the Elder Scrolls Online. This was a more traditional internship and I spent the next two months building internal tools for the QA team. It was great to see how a real studio operates from day to day and month to month and the game looks great.
The best part of these two internships is all the talented and also connected people I met. I'm no longer worried about being able to find a job come May.
Onto this semester! I know we're approaching 3 weeks in already, but the end of my summer was almost as hectic as the beginning. I basically worked at ZOS until the Friday before school started, got back to Utah Saturday night, moved into my new house Sunday, started my new job as a TA on Monday and class started Tuesday. And the homework for the first week held back no punches, I'll talk more about that when it's done (hopefully this afternoon) and make another update about Vinyl shortly!
It's good to be back!
Anyway, the Ubisoft internship was really fun and I learned a ton about enemy AI, or at least how UDK does it. It should probably be noted that this wasn't a traditional internship, it was kind of like a student project on a grand scale supervised by Ubisoft, that I got by competing in their game prototyping competition. We basically built the winning teams prototype into a full fledged hour or two experience in 8 weeks using UDK. It was an intense two months, but the end result was fantastic, and I was blown away by what some of those art students up in Montreal can do. Here's a teaser video that has a download link in the info if you're interested.
Since that internship started so early and was only 8 weeks, I was done by the end of June with two months of summer left, so after taking a week off I headed down to Baltimore to intern at Zenimax Online working on the Elder Scrolls Online. This was a more traditional internship and I spent the next two months building internal tools for the QA team. It was great to see how a real studio operates from day to day and month to month and the game looks great.
The best part of these two internships is all the talented and also connected people I met. I'm no longer worried about being able to find a job come May.
Onto this semester! I know we're approaching 3 weeks in already, but the end of my summer was almost as hectic as the beginning. I basically worked at ZOS until the Friday before school started, got back to Utah Saturday night, moved into my new house Sunday, started my new job as a TA on Monday and class started Tuesday. And the homework for the first week held back no punches, I'll talk more about that when it's done (hopefully this afternoon) and make another update about Vinyl shortly!
It's good to be back!
Subscribe to:
Posts (Atom)

