Wednesday, April 6, 2016

Gloobs Progress Report #2

Hello World,

Welcome back to another Glooby Update. A few things have been been crankin' under the hood since we've last met. So without further, ado:

First thing of note: THE INDIEGOGO IS STILL GO-GOING. Check it out if you haven't. Now what you really came here for.


1. Bug Reports

Don't spam the screenshots, they are saved locally on your phone
We are human, after all. And while I am a well seasoned Unity Veteran (/s), bugs happen. We've tried to make the game stable, but we can't cover every corner case. So, if or when they appear, we wanted you to be able to tell us about it in a quick and simple way. So, in came the Reporter. You type the problem, and send us the problem, all from the comfort of the... petridish... And it takes screenshots!


2. Detail Cards
The big one on the right moves!
This one is kind of cool. I guess I haven't talked about the Gloobiotic Table at all, but that's because I didn't write it. This is my blog, and I am a selfish person and this is my pedestal (/s?). This panel holds all data on the Gloob in question. That little sign saying unavailable will disappear at some point. It might also not be a log book either, but it's a 'working title'. I kind of know what I want to do with it.

3. ANALYTICS
Look at that professional quality censorship!
I made Google work for us! Keeping track of data is important. This will do that for us. Side note, the documentation for Google Analytics has left much desired from me. My body was ready for something I did not receive. Regardless, I made it do my bidding.

To be fair, they did make a Unity Plugin which expedited the process. It has a lot under the hood, so I imagine that a lot of work I didn't have to do was put into it. Which is a huge +1. So I made it a bit easier to use across the game, and plugged it in. 

And that's a wrap for this post. I'll be back in a yet undetermined amount of time with more screenshots and updates about the game. Again, let me know if you've read this, or what you think of Gloobs, me, or if there is anything lacking with my writing style. 

Until next time,
-Eric

Friday, March 25, 2016

Gloobs Progress Report 0&1

Welcome back!

So I've been Gloob'n it up for a little while now, and I've gotten a fair share of tasks completed. Apparently, there was some progress stagnation before I joined up, and I was the breath of fresh air that the group needed for a nice motivation boost. Which makes me feel all bubbly inside. In this post, I'll touch on the tasks that I've completed so far in Gloobs. Since I've been there for a little while, this might be larger than furute posts, so it gets numbers 0 & 1.

1. Wheel of Gloobs

This was the first thing the team wanted done. Luckily for me, this meant that the art assets were already done, and I love making something when the visual assets are already completed. It gives a real sense of accomplishment, making some static images turn into a working game mechanic; as opposed to just white boxing it and having some moving lines.

When I started to dig in, I discovered someone had already started on the project. However, it was... pretty janky (in my opinion). The way they were doing it was to have the diamond pointer at the top "read" the object it was touching. Which meant they needed the wheel to be separated into segments and re-aligned into a circle in-editor. Then each segment would need a script attached to it hold the values of itself. It would probably work, but that setup seemed messy, hard to organize, and had the possibility for the wheel segments to have ugly gaps in it and cause the diamond pointer point at nothing. So I started this one from scratch. I'm not in the habit of deleting old things (even though we're using a repository), so I threw the old scripts into some dusty folder that needed some love and set off.

My implementation only has 2 parts. The wheel and the manager. Technically, there are 3 wheels, the main colorful wheel above and 2 silver multiplier wheels.

I made a generic WOG_Wheel script that could accommodate these and just tell whoever asked what the top prize is. This script asked for how many prize slots there were, and if they were all the same size. If yes, life is easy. Each slot is the same size, so a simple equation would discover which prize tab was on top.

return wheelZones[Mathf.FloorToInt(zRotation/anglePerZone)];

Nice and easy. But there are two problems that need addressed. One I've mentioned, The other though is a little less obvious. 
  1. What about tabs that are different sizes (see the gold tab on the silver wheel above).
  2. The wheel GameObject starts at Rotation=0. But the pointer is in center of the tab. So the actual rotation is not 0, it is halfway through the first tab. So we have to compensate. And this only got stickier when you have tabs of different sizes. 
I should note, the gold sector of the wheel is NOT the only sector with an adjusted size. The two "x1" sectors gave up a part of themselves to make the gold area, therefore they are also smaller than the rest of the sectors.

I'm sure other people have solved this issue before, and perhaps more cleanly than I, but I like my solution. In the WOG_Wheel script i made a struct that could be edited in the Inspector for each wheel tab. This struct contained what the prize of the tab was (using an Enum, just to be safe from typos [such as "type='prize_multipleir']), it's value (allowing for different tabs of the same prize to have different values), and its "altered angle size" or AAS (internal angle of this particular circle sector). The AAS is hard to find from Unity, I had to make a small snippet that printed out the circle's current angle and do some math at different angles to get the right numbers. However, these adjusted angles are the only ones you have to worry about, and the script will fill in the rest of the mathematically correct sizes.

The manager is more complex, but easier to describe. It manages which wheel is active, which state of movement it was in (spinning, idle, or coming/going), told wheel when to spin (via player input), and awarded the prizes to the player. The hardest part was getting the wheel to spin in the correct direction relating to your finger. 

2. A Resource System

Each time you started the game, you would just be assigned something like 500 GEL and 10 gold, the in-game currencies. This is obviously a problem because if someone works hard to get their points, and then stop playing, they reset to those base numbers. So I dug into PlayerPrefs and saved them. In order to keep them safe, we looked at 2 options.
  1. Use a 3rd party PlayerPref Encryption
  2. Do it ourselves
We tried some 3rd Party things, but they are a little slow for mobile. So I did it myself. It isn't Apple quality encryption (But the Government doesn;t want to crack our phone game). I won't go into any details about how I implemented this security for obvious reasons, but it'll keep the script kiddies away, and those who want a (little) challenge can try to break it. If you do break it, come tell me about it, I'd like to know. 

3. A loading Screen + Mini Game

For those who didn't know, Loading Screen mini games are no longer patented. So I thought this would be a good opportunity to make use of that little fact. I have plans for at least two more potential games that could appear when the game loads. For now, I have one implemented for the Beta release.

You don't appreciate how hard it was to take this screen shot


It's simple enough: tap the GEL, Nommy eats it, you get points, and that GEL is added to your GEL Reserves. It's simple, and honestly pretty addicting. Although it is pretty hard to do with a mouse.

4. A Better Tutorial

There was already a tutorial for Gloobs when I got there. But it was pretty linear, and easily disrupted. So they wanted a better system, and I jumped on the case. In the making of it, I reduced the number of gameobject in use, made it completely discovery based, and attempted to made it "fool proof".  

As I said, the old version was very linear, having the player follow instructions to make their first Gloob. But it didn't explain anything, and you get stuck at certain points. I restructured it to be less linear, more discovery-based. The only thing we really instruct is "This is the tool that does things" (in the corner) and "this is how you interact" (touch it). Then you're off! When you click on something new, you get a quick few lines of info, and your back to the game! To help with debugging, I also made a quick-n-dirty editor to show which tutorial flags had been triggered or not. This window causes some bugs when compiling the game, but that's fine, we just delete it when we make the builds and SVN puts it right back when we want it.

That's all for now. I have added some other things as well. Better keyframes, reorganizing some HUD pieces, etc. But they are small and mostly just visually pleasing. Lemme know if you've read this, or what you think of Gloobs, me, or if there is anything lacking with my writing style.


UPDATE ABOUT OTHER THINGS
We have an ongoing AMA on Reddit. Feel free to stop by and ask something. I am /u/GloobsGuy. If you want to ask me anything over there, feel free to send a PM or tag me in a post.

IndieGoGo is going well. Smooth sailing and a steady uptick of the % reached.

Sunday, March 20, 2016

Gloobs!

So I've officially entered Lantern Light Studios as a game dev. And we have a working version!

If you want to see some the progress we've made, come check out out IndieGoGo.

Either way, here are some gifs of the game:





Or if you have any questions for me about, or you want to ask anyone on the team, feel free to shot me a message.

Thanks!

Saturday, July 18, 2015

Indies Vs Gamers 2015 and the importance of a good repository

So I have assembled a team and have entered the Indies vs Gamers, hosted by GameJolt. Our game can be found here.

This team was set up very short notice, and I had made an assumption. Because my teammates are all in different locations, we would need some form of Subversion. My assumption was that my teammates knew how to use Git to some level. So the night before the Jam started, I created an empty project on my GitHub, made the initial empty push, and went to bed with some level of preparedness. When the next day came and we had our meeting, a mere hour before the Jam theme was announced, I discovered none of the other members knew how to Git. A slight problem.

So, in that one hour time span, we attempted to setup a different SVN. It was all for naught, as none of us knew how to setup any others. The list we looked through was TortoiseSVN and VisualSVN. Visual looked like it would be the easiest to setup, but with less than half an hour at that point and everyone wanting to get started, we decided on the fallback option that a few of us knew we didn't really want to use. Dropbox.

Dropbox is NOT a SVN substitute. Only 1 person can really work at a time effectively. If 2 people are in a scene, Unity's backend files will mess with the other person's work. For example, I was working in the Main Menu scene, and a teammate was in a level scene. I swapped from Unity to Mono, changed a script, came back, and my scene had been replaced with everything in the other scene, but was still technically my scene. Had to restart Unity. Another problem, if a teammate has any errors in a script, you cannot run the editor because that error will prevent you. And if you fix it and save the script so YOU can work, your save completely overwrote everything your partner had done since his last save. It's a mess.

There may be someway to make working in DB easier, but I do not know it. If anyone reading this happens to know a way to setup a simple repository on a windows laptop that select outside users could get in and work with me, let me know. Or, if you know of a good GitHub tutorial, that will also suffice.

Now for the Jam. The theme is Arcade, so the game we are making is called Meta Arcade, or METARCADE. You control a person in an arcade, For the jam, we are probably only going to make one game in the arcade, but it will be the main game. If I have time Sunday night, I will make a small mini game to put in as well. I will probably do that as well, but after the Jam. I've had the idea for this type of game for a while, and now that I've looked at the GameJolt API, it seems like that would be the best place to host it for a number of reasons.

I might put more down later, but I should really get back to the Jam :p

Later all
-Monte

Sunday, July 12, 2015

BrickBreaker Clone Update

I did it! The Brick Break clone can be found on GameJolt. It's not totally complete, but there is a working version up and running.



The project took ~48 hours. It is a very simple game: 3 lives, 1 play mode, no HUD. I realized after putting it up that I forgot to enable the trophies... I'll probably do that at some point in the future. If literally anyone asks me too, I might go back and finish the other modes too ;)

The entire point of the project was to practice with the GameJolt API and setting up their scoreboards. After realizing that the old tutorials were virtually worthless for API 2.0, it took some documentation digging. But I got all of the scoreboards working in one day, so it wasn't to bad. I consider this little experiment a success.

Saturday, July 11, 2015

Hello World!

Hello World!

Now that I know it's working, I can type!

This is going to be a place for me to post about what I am working on. I've got a few projects in my queue right now. All in Unity, because I like Unity!

They are:

Racer

Brick Buster
and a Card Game

For now, I am working on Racer and BrickBuster. Which is probably a shame, because Card Game is pretty far along from being complete, but I hit a snag and got very, VERY angry at it. And as far I remember, it is the only issue I remember having with it. But the issue causes the game to be unplayable, so on the back log it goes.

I'll keep updates posted, hopefully on a semi regular basis. Weekends look like a good time to do so. But other updates might show up at some point.

Next weekend, however, I hope to be participating in the Indies vs Gamers game jam. That's why I started the Brick Buster so suddenly, so I could have something simple to test their API with. So, Brick Buster takes priority for now.

More updates later, as I'm just going back to the grind for now. See ya'