Unity script .meta files

First of, a little announcement – not only is this my first post on Ninjacrab but it is also my first ever blog post. Cue fanfare and digital equivalent of confetti (twitter posts?). Will try to keep posting here as we progress on the project, mostly for the externalization of memory as my internal memory has been proven time and time again by various parties (well mostly just one person) to be unreliable. Oh and also hopefully the tips/tricks/gotchas we post here pop up on someone’s Google/Bing search sometime and save them some time and stress.

Anyway, we learned something new about the .meta files that Unity automatically generates for .cs scripts. Thus far these have been merrily version controlled along with the rest of unity/code files. Min recently wanted to see if we can do without versioning these to clean things the repo up a bit, and just allow Unity to auto generate them on each individual developer’s box. Seemed like an OK idea – until we ran into an issue. The script’s .meta files contain a Unity-assigned script GUID, that is then referenced in the Unity objects when assigned –

Example:
ExampleScript.cs
ExampleScript.cs.meta
guid: c4dd34a10729e324592f904cfe9a64da

ExampleScene.unity
m_Script: {fileID: 11500000, guid: c4dd34a10729e324592f904cfe9a64da, type: 3}

So when I grabbed latest, Unity did not see a .meta file for the script so it presumably generated its own (desired), but then the newly generated GUID didn’t match up with what was assigned in the .unity file. Makes sense in hindsight.

K, time to do some coding.

Honey bunches of Changes!

So I made a bunch of changes tonight. Optimized a bunch of things here and there, fixed a number of bugs but the most exciting change is finally building some logic to extend past just one level. Intelligently moving from one scene to another, I definitely side skirted some aesthetics, but I was definitely in the mood to get some of this done. It’s humorous, as I finish more tasks, I think of more tasks to complete. Regardless, February is almost over and I’ve committed to myself the game is coming out this year. So we can all expect more changes.

When running the alpha, you can quickly see that the game now navigates to multiple scenes. There is a world selector after the intro levels and of course, there will be the option to skip the intro if the controls are already aware of.

….

Testing it on the web client… “New Game” isn’t working. It is on the android and in the IDE… so another bug to figure out.

Anyways, it’s late. Time to get some rest!

Unity is not subversion friendly

File location refactoring isn’t actually handled from the Unity IDE for some bizarre reason I performed it in there. I do realize that Unity auto generates the project and solution files from the actual file systems, so I could have actually moved them in Visual studio instead which actually would tell Subversion that the file moved through AnkhSvn… However, I must have decided that I wanted to punish myself tonight.

Sigh.. so I’m cleaning up some stuff right now.

As for new changes. I’ve implemented a little loading dialog in the game, so that on the android platform, the player will get at least some indicator that something is happening.

I’ve also implemented the logic to back up from the world selector, similar to the main game.

Scene freezing fixed & to my fellow nerds being bullied

So I finally figured out a huge performance bottleneck on the android platform that would freeze the entire game when the probes entered the screen.

I was writing what I thought was a really clever implementation to have prefabs or transforms loaded via code directly as opposed to be attached to a behavior script, which is attached to the scene. Well, it turns out that if you do this, then the resources are lazy loaded and when android has to load some resource, apparently it’s insanely slow. I created an Entity Container, kind of like dependency injection container so that on the scene I could have one place to look at where I knew all of the prefabs that were going into the scene. I haven’t consolidated all of them yet but I will so that I have a good picture of how many assets will be loaded for each scene. This idea is really inspired by Chris Pruett’s Google I/O presentation from a few years back where he mentioned on these mobile platforms you need to address the performance early on to prevent death from 1000 cuts.

I’ve also started implementing a brute force build process that would auto update the version, compile and deploy it to the web server. Interestingly enough, when you build from the Unity IDE, it hides a lot of details, such as how big the resources are and what’s going to make it in the final pack. Fortunately, Unity does perform a lot of optimizations, but this information is incredibly helpful as it will also allow me to make better decisions on what resources will go in. Anyways, next step is to install a continuous integration product on my windows server so that when any changes are committed, it builds and auto deploys.

Before, I end my post for today. I came across this video and was totally moved by it. So many reminders of a similar child hood with very few friends. I was that geek that was picked last for pretty much all sports, I did avoid certain hallways and I can’t even count the times that people messed with me.

However, I did make it out and I’m really happy now. They were wrong, indeed.

Smoothing out the swiping

New release of Conflicademia updated tweaking the swiping input so that the consumer of the swipe event can choose to process on a number of different attributes, such as total distance swiped or speed of swipe.

After the changes were completed, it seems that swapping weapons on the phone platform are much more intuitive. Additionally, I fixed the logic so that the swap can be received on the web platform too. Simply click and drag across the screen as if the mouse were your finger.

Additionally, I’ve posted a Youtube video that includes some random coding as I also really enjoy teaching and presenting. If anything this will help me become better at that specific task, as one day I’d love to pioneer some really awesome technology and then present it to the all those who are interested.

Good night!

Axploshuns!

While swiping is still work in progress, we’ve now implemented a simple particle effect explosion when destroying crates or killing aliens.

A lot of work was poured into the swiping, but it’s a tricky thing to get perfected. I think back on the days of street fighter vs pretty much all the other fighting games. Street fighter is awesome in so many aspects, but what I really think they nailed was how fluid and simple the input was even with tolerance for some clumsy input.

Thus, while working on my swiping engine, I wanted to make sure the user to easily navigate through the game yet at the same time quickly swipe to change weapons and not feel frustrated of it not accepting the command.

Still have a little more bit of polishing, but on the phone platform swipes left or right will change the weapon. For some reason it’s not working on the web platform and I’ll have that fixed hopefully next release. Regardless, it was a fun weekend and I’m excited about all the forward momentum.

Swiping

So now that world control is available, I’m focusing on user input enhance gameplay. Besides guiding the ship around there needs to be controls to enable firing or disable… perhaps for levels with shrapnel mine fields that you don’t want to pew pew cause they cause more harm then good or for other effects. I didn’t actually get much done the last week as I was on a cruise with the family. However, now that it’s over I’m fresh and pumped for more features. Soon, it will really be set to just crafting levels, optimizing and testing as much as possible.

Oh I almost forgot, I also got two immense 27″ monitors to support this project for multi-tasking. Having a multi-monitor setup at my 8 to 6 proves to be really effective for googling/coding/debugging and communication. I really wanted to go for a third monitor but with the limited real estate in NYC, I’m stuck with two for now.

Anyways, I’m hoping that I can soon wrap up my initial ideas on swiping and deploy another alpha release to demo my thoughts on how that will be utilized.

Moar world selecting enhancements

The world selector is now finally something to be proud of. There is a smooth camera animation when the world is selected and something that I’m relatively happy with for navigating what levels to play. There will be some added touches to it for improvement, but it’s good now.

Next I want to finish up some of the user input logic that I was writing to handle swipes. Being a New Yorker, I’ve noticed most people can’t dual wield their phones while hanging on to dear life in the trains or the buses. So I figured the game play has to be intuitive but also leverage as much flexibility and dexterity from one hand.

It’s now almost the end of 2012 and though I was hoping to be further along, I can’t complain about how many blessings I have as well. Hopefully we will see this as a launched product in 2013 the fan base of Ninjacrab will grow larger than my close friends and loved ones 🙂

Partnering up and adding new features

Well, I’ve finally found someone who seems to be as passionate as I am to work on Conflicademia!

He’s already added his first feature, an image extension to the dialog to depict the narrator and enthusiastically moving on.

I’ve made a few more enhancements to the level selector. I finally got my idea on how it should flow and function. I’m just going to polish it a bit more and then we can make headway with more of the story.

We also had a pretty awesome brainstorming session with some ideas on what might make it more appealing to players but at the same time, still release in some reasonable time frame.

All in all, I’m pretty excited! Oh, I also plan on adding a forum to the site for future collaboration.

Input handling and world selecting!

Logic for handling taps and also using mouse clicks for debugging on my desktop are complete. I also tweaked the code to move from the main menu to the world selector to the scene.

It’s crude and doesn’t handle various inputs, but it’s enough to get the point across and test that the input manager is working correctly.

I did remove the Genesis model from Daz tool and sadly that did not improve load times. Though it significantly improves render time, my problem is that I think users will be really put off with 10 second load times between scenes… not sure what is causing the lag.

I’m going to try to remove the large file sized images to see if that fixes it, but just seems odd.