Tuesday, June 23, 2015

Recovering...

I don't talk much about my personal life, so let me talk about my day-job for a little bit. It's not the most exciting job, but I've been working there for three years now. It's a clothing company named Express, they're among the more reputable clothing "brands" though, honestly, they're still on the same ethical level as American Eagle or Child's Place as far as I'm concerned. There's only so big you can get as a company before hands get dirty. That's why at Tiki Hub Games we plan on keeping very small tight-knit branches that each act as their own company but pool resources like a corporation. I love the people I work with. While there is always a revolving door of associates that just don't do their job (literally, at some point, they just don't show up to work anymore, and the rest of us are caught covering their shifts). I've had three opportunities to work in management with them, but I've asked them to hold off on that sort of promotion while I continue to work towards building a full-time career at game design. Of course, not all Plan As work out, so I'm very grateful for that resting opportunity. If push came to shove, Manifest will continue to be developed while the time I'm able to work on it goes down due to higher responsibilities at Express. The 3 full-time managers at our store work a lot of hours. It's not uncommon to work a 12-13 hours shift once or twice a week. As a more valued associate, I've had to pull those shifts with them more than once as we set the floor and do inventory with short staff. Typically I am in the back room doing shipment on a regular day. It's my preference, even though I tend to be one of the better sales associates, I've never been a big people-person. So the last few days I've been up to close one night and open the next deal, on top of a 5am floorset. It was pretty rough trying to get work done on Manifest in between it all, but I did get a few things done. Here I am with 3 days off now (Which just doesn't happen for me, I work pretty much every monday and friday, and rarely don't work a day between them) and I'm looking forward to getting plenty of work done on the game :).

So... progress! In the last post I talked about what has been hindering us for the last few weeks. A silly, yet educational experience which has greatly improved my ability to manage Unity's C# willy wonkiness. After a few days of work with little time to use my computer, I did get the old story backup installed and update TextMeshPro. Today I spent some time recovering from the issues that came with these two actions. First was the story, which I had to reinstall an older but equivalent version, as the newest one had corrupted a couple of files when working with our "memory leak". Next was TextMeshPro, which I had to modify our page GameObjects to work with it's new format, then do a little troubleshoot with Stephen Bouchard, the author of Text Mesh Pro (his support is *really* fast, it's impressive, he must be working on this asset all day long, it's almost weird lol). He suggested I turn the "Perspective Filter" he built into the debug of his tool to 0 until further notice. Here's what it looked like before that:


Next on the list tonight is to unwind and have dinner, then write some stories!! Man, talk about overdue :)

Thursday, June 18, 2015

The Memory Leak Conundrum comes to an end :)


Over the course of the last month a few things have happened. Bob's world has quieted down, his house is now a little bit more empty and he's been producing some incredible model work for the walls of the study in Manifest. We've begun searching for new talent again, in particular a coder to help us speed up the production of our assets alongside Manifest. Finally, the coder search is spurred by a memory leak we began experiencing a few weeks ago.

After a long bout of research on the subject of Unity's automatic memory management, I had tried everything I could think of. Loading up the story tool, opening the dialogue editor, and then finally - opening the attribute editor, that's when it would crash. I'd offer a picture of this, but I couldn't have taken one, it was that bad. Particularly when trying to open the window, Unity would overload the stack and fill up RAM. It happened so quickly, that my computer would freeze instantly and I would have to hard kill it (or in this case, hard reset using a button on the front of my tower) and start again.

So after weeks of research and experimentation, I decided to step back and look at the problem with a different perspective. What had changed? My initial thoughts were nothing. I had done some updates to the in-game UI, but nothing that should affect the tool. My worst fear was that I had made such an unmanageable mess of the program that the last update had caused the stack to finally just barely overflow to the heap, and the heap was just not enjoying what I had set up. Then I thought, maybe it has to do with the age variable and modified value options I had added a couple updates before, but the error was simply only happening now.

The answer, of course, was it wasn't me or my code at all. At least not directly. At some point during a compile during the most recent update, I had a strange error occur. Just like vexe, I'd had a layout crash. Apparently, when a compile error happens in Unity, there is a slight chance it will corrupt your layout config? I'm not entirely sure how this error happens, but something along those lines. Anyway, the result was that a simple reinstall did not fix the problem. So I had passed off the concept that it was Unity early on, thinking I had already tested for this. Also like vexe, I had to remove every trace of it from my computer, where this thread came in handy for locating all those problems.

If you've had a layout crash in Unity or a custom editor window you've been working on randomly ceases to work, hard clear your installation and reinstall!! Registry and all! I suppose this is a bit of a pain, but it seems to be caused by user-error in the long run and a wipe isn't so hard to achieve. I just wish I hadn't spent so long trying to fix this error... At least I've become very well acquainted with manipulating Unity's GC :)


Monday, June 1, 2015

Memory Leak!

We've struck Gold!! Er... not quite actually. Black Gold? Not even, but we've sure dug a hole :p.

When creating an advanced program in c# there are always wonky problems to be expected from the auto memory management. In this case, it looks like Unity is using an older version of Mono to compile the code which still uses Boehm's Garbage Collector. There's a great article on this over here at Gamasutra which includes a lot of basic information and background on what memory leaks are :).

The line in particular we're having trouble with is a the Init (Initiation) function for our Attribute Editor, particularly when being used/referenced in the Dialogue Editor. You open the Dialogue Editor from the main story tool, and this uses the same memory referenced style as the Attribute Editor. Similarly, the code for this was working fine, and has not changed. This comes after a series of changes in the main UI one would think have nothing to do with our problem. I'm kind of at a loss. While I decide on how I want to approach setting up some discovery tools for memory leaks, me and Bob have decided this is an excellent time to reach out in our area and find another coder willing to step into the project.

Meanwhile, Bob is nearly done with a revised version of the desk, has already completed quite an amazing pocket watch we can include as an in-game clock...

I'm terrible about keeping social schedules, despite my work ethic, but I'm going to try and view this as a job, and make sure to get out a regular blog on here now that we've reached our Alpha release and put a little polish on it. Especially while we're searching for a coder and stuck behind this memory leak. For now, I've got to leave for work in a little over an hour (can't wait for *this* to the work I leave for !), and I'm going to do a little more research and experimentation before I get ready.

Unfortunately, because of the nature of this memory leak, it can take a while ( and often a restart ) to stabilize my machine after testing until the memory leak is fixed. So it has been taking quite a bit of time to achieve progress on it :(

Friday, May 1, 2015

Alpha Release, Advertising, Story Writing, and Work

All the things that make up my life right now :). Work is alright, we have the full-time sales lead from my old store working as the co-manager of my new store, that will be fun to have her back. Otherwise, we've put out our alpha demo at www.tikihubgames.com. Really! You can try it right now! It is a Procedural Story-Telling Game called Manifest. The concept puts you in the role of a writer developing a story through options in a notepad and a book which fills pages from beginning to end with a different story depending upon your choices.



I've been spending a lot of time trying to bring the demo to anywhere people invite playtesting, feedback and introductions. Twitter and facebook have been handy tools as I work through the process, but altogether, I think it comes down to a simple matter of time and effort. The more work I put into the game, update online for people to see, and repeat, the more exposure I seem to get. Seems like an honest way to find followers, customers, fans and just attract new eyes in general, so I'm full-speed ahead. The game itself has come a long way, with a full 3d GUI integrated, one we can use later on in a larger action RPG to write your own stories for lore... we'll get into that another time though. Fact is, this is what we've been waiting for, debugging, writing stories, making art, all the fun stuff! :)

Wednesday, April 22, 2015

Manifest Kickstarter Preview!

It's been a long time once again, but with good reason. We buckled down and completed Manifest's engine and UI. Yesterday night we finished setting up our kickstarter, which we sent in for community management review. This is SO exciting to me. I feel like my whole life is beginning with this day. I finally get to start showing off the game and working on stories regularly, I can even do a little artwork :). Bob has been instrumental in accomplishing this, his models look incredible, and his texture work is so detailed! I was blown away by the final result of our visuals, here's a preview! You can also check out the demo at www.tikihubgames.com, which we will begin adding content to *today*.

Kickstarter Preview:
https://www.kickstarter.com/projects/1137395854/1786273707?token=dda8c481

The flame lights up and you see a place to enter your name and age. After doing so, you are presented with a number of choices based on your age which represent your time-developed personality. You are then given a choice of item and two roles within a world that fits your created personality. From here, you choose options to direct the story.

I want to say we spent about six months developing this game so far. Maybe less. I did spend a good chunk of that doing retail work in season, at which point I was hardly able to work on it for weeks. I invested a few weeks myself in bringing Inventorium to a near-complete status (it's still coming I swear, just like the dragons!). So all-in-all we probably spent something more like 4 to 5 months of development in our spare time. It was fun, hard, and the end is becoming pretty stressful, but it's worth every second and penny of it. This is the life I want to live, working on products like this, producing something that everyone can enjoy or benefit from. I don't think I've ever done something that's felt more rewarding than this project, and I look forward to topping it in the future!

Kickstarter Preview:
https://www.kickstarter.com/projects/1137395854/1786273707?token=dda8c481

Our Website:
http://www.tikihubgames.com

Thursday, March 26, 2015

Inventorium Update



We've been working incredibly hard at a number of things over the last several months. Game Design is a lot of fun, but it can also be frustrating. Coding bugs, compatibility errors and the fast-paced change of the industry can all leave you feeling a little down sometimes. Some people might just hunker down and get through it, it's a part of the job to them. For me this is such a passion, that I find I thrive on it, even if my body doesn't :p. Sometimes the stress of this job can be something that makes you feel exasperated, but it's also a sign of innovation and creativity. When you are at your most frustrated and angered, it is (for me) always when the turning point is just around the corner. The last few weeks I've been working at our new Asset Store product - Inventorium, which is just about done, but the last few days have been torture.

Sifting through code for one-off bugs I'd overlooked when overhauling a local declaration system, sheesh, they seem like they never end sometimes. There is this moment though, and it's always just as surprising. After try and try and try, fix and fix and fix, you grow accustomed to the pattern of creating bugs by squashing them. You start to feel like the bugs are multiplying, like they're alive, when in reality, you're just trudging through them one by one. Sometimes you lose scope of the fact that there will be an end. It applies to everything, but lately it's applied quite often to programming for me - you have to remember that feeling of victory when everything works as it should. That relief, and shed of burden, when your work is complete, is the reward. You have learned, accomplished, created, and are ready to move on to newer, bigger things - a better coder, a better artist, a better designer, a better you :).

Inventorium Web Player Demo (Temporary Link)

Press E to pick up and put down objects physically. Click to move items through inventory management. R to rotate. I (i) for inventory list. Cylinders are three different items I set up, a sword, an axe, and an apple. The blocks are containers, there are two, the double up arrow is a large "backpack", the other is a small "satchel".

Saturday, March 14, 2015

What a ride!

I don't even remember the last time I posted here! I feel bad actually, this is a nice outlet with all the work we've been getting done. Our Procedural Story-Telling Game: Manifest, will be out soon, and the demo even sooner (2-3 weeks). We can't wait to start showing it off! The response from the previewers we've had has been amazing, and we're growing quite confident in the product :).

http://www.twitch.tv/tikihubtony/c/6222946 for a preview!

In the next few days I'll be wrapping up "Inventorium", a Unity Asset Store tool that allows you to easily set up containers and items with multiple slots of any configuration (like Diablo's inventory system, or Path of Exile's), and rotate them. The UI and tool is done, all that is left is the logic for storing items in containers, then pretty it up with some custom models for examples and package it up for the store!

We also stream that at our twitch, but you can find a WebPlayer demo here:

http://tikitemp.netii.net/Players.html
E to pick up objects, and to place items back down. R to rotate, I to show your inventory master list.

Finally, we of course set have updated CityScaper several times, and have some new features planned. Check out the feature list on the official thread:

http://forum.unity3d.com/threads/released-cityscaper-procedural-city-generator.247856/

In the next patch we are planning a new Saveable Settings Editor Window for setting up multiple city generation types, run-time functionality, a WebPlayer demo, and multiple material slots per building by request! It will be like a completely new program in 1.1.0. That update will take some time, but we will be able to focus on it shortly.

Thanks for reading our update!

Thursday, July 24, 2014

Tiki's Corner

Since this is my personal blog about the business, I'd like to post some things about myself, apart from the business once in a while. In the tradition of work, let's start with my newest job. While I'd been working the stock expert at a clothing store (I still work as an associate on the floor a day or two a week), I'm now working as an embroiderer. I'll post some pictures soon, but I made my first patch for a hat today. Sure, I redid their logo in photoshop and converted it, but I did it :). Hopefully there will be some print in the future as well with this job. For me, it's a great relief to have something that's not typical retail, and allows me to use my skills as a digital artist.

Talking about Talking

One of the more innovative ideas I've been working on is what I call procedural storytelling. To explain what this in more depth than I have elswhere:

Procedural Storytelling is the art of telling a story using multiple parts, to create a cohesive narrative that is still entirely unique to the player. Differing from branching story gameplay, procedural storytelling aims to play events based on requirements met by the world and it's actors/pieces. One of the biggest drawbacks of such an engine is Voice Acting is impractically expensive, and would require a highly sophisticated automatic voice algorithm to make it affordable and worth it. On the bright side, with it being such a new idea, there is plenty of fun to be had with nothing but text while the newest flash-based supercomputer prototypes are still being built. That's all I'm willing to release on it before we begin sending out demos to reviewers, which should be within the month. We haven't settled on a title for the first game, but we've finished the toolset, the base of the UI, and have only a small set of graphics and a large volume of stories to create to bring you an engaging and unique experience...

Meanwhile, I've made contact with our first feedback customer for CityScaper, who's already helped me largely prevent compatibility errors. If you've been getting LibNoise compatibility errors, they will be fixed in the next patch. Contact us at 'thetiki@gmail.com' with your order # if you've already purchased the asset and would like the updated version early. We are still looking for more feedback and errors, if you have another problem, don't hesitate to email us as well with your debug. No problem is too small for me too look at!

Finally, the Inventory System has been put back on the top of my priority list, withholding responses and patching for our CityScaper feedback. I've managed to fill in some of the holes I had left previously and now you can pick up the backpack and attach it to the character. All that's left now is to draw the GUI, and then I'll be spending a bit of time doing back and forth with the people who had requested this asset before releasing the *first* asset. From there I plan on releasing several small add-ons, as well as a final pack including all of them at a discounted price when finished.

Sunday, June 8, 2014

Training and our Think-Tank

Tiki Hub Games is a little more than an Asset Store Publisher already. I've personally been training a small group of people down here in SouthWest Florida, with what experience I have, to make the things they've always wanted to create. We've already got a wide array of ideas we're working on, some particular ones among them that I think will really take off in the game design world, as it represents what seems like a natural evolution to me. I can't bring myself to say anymore, except maybe that I'm proud of the new Lord of the Ring "Wraith" game for taking the first baby steps towards what we're working on.

Hopefully we can get some basic demonstrations up soon and be able to kickstart, early access or otherwise crowd-source, but we're still setting up the base systems of our games at the moment and don't want to present our ideas until we feel we've appropriately portrayed them.

In the meanwhile, the game we're farthest in production on is the one we'll be using CityScaper in, and we have a couple of other assets planned to go with it as a result, both of which play into our game. So without giving away the game, I'll say we'll be releasing an engine that generates a single street in much, much more detail, and attach it to a CityScaper generated city during load times, which will be used for a sidescrolling city-to-city gameplay. The third asset is a "snow engine" that recognizes particle collisions and raises x points per frame on a terrain mesh after converting the texture to snow, each of those points being based on actual particle collisions, creating the illusion of slowly gathering snow.



We can't wait to get all of these other things out to you, but right now we're limited by the time we have to work on them.

Personally, I work a part-time retail job and am back living at home temporarily, so what time I'm not spending doing irrelevant retail work, I often spend trying to drum up extra funds or keeping an eye out for other job opportunities. My lead designer has 20 years of experience with USA Today as a graphics and 3d designer, but he's recently moved as the Newspapers make more and more budget cuts, and spends much of his time doing freelance work. My newest designer is fresh out of high school with lots of time on her hands, but very little experience, so the last couple of weeks I've spent 2 days each with her training her in Unity, C#, modeling techniques and more. Finally my coder is still in his higher education system taking programming lessons, and hasn't much time outside of classes and working to pay for it.

So unfortunately, the pace goes rather slow right now, and I try to push every hour I can into this work, but without the budget, I'm left without much choice most of the time. The sooner I can get a company budget going with these assets, the sooner I can get crowdsourcing from a solid demonstration, the sooner I can be doing this full time, and start giving others the chance to do this full time.

Another Week, Another Update

CityScaper has been coming along, though I spent some misdirected time. I guess to explain further, I have to talk a bit about how CityScaper works. It's not terribly complicated, but if you've never done concatenated programming before, it might be hard to put all the pieces together in one read-through. Spend some time looking through smooth voxel programming, as it's one of the most useful purposes for concatenations these days, among game design programmers at least.

So basically we have a cross formation:
   o                  o 2
o o o       16 o o o 4
   o               8 o

Running this cross formation through a noise algorithm, which we utilize the very versatile libnoise engine ported to C# in Libnoise.Net by Jason Bell, we can retrieve true and false values for each point in that cross in a coherent pattern. The total possibilities (permutations) comes out to 32. Each point represents a number, in this case ( starting from the center, then going to the top and finally clockwise all the way around ), 1, 2, 4, 8, 16. By doubling these numbers, you can then add together the ones that are true for their place in your 32 possibilities. When you reference an array of a size 32, each one of those indexes represents values for a possibility that represents a street mesh. If the center isn't true, there's no street there. If it is, we check the arrays and generate the correct piece with the correct rotation, and place and rotate buildings around it later on. That's the basics of it at least.

When trying to integrate diagonals, I had approached the permutations 6,12,18 and 24, which will be wonderful for recognizing larger curves, but represent a problem when trying to add diagonals, as they do not have a solid center, and thus can (among other things) generate two pieces for the same thing. While this can still be done with some more patter recognition, it's an unnecessary amount of time to add to the generation process IMO as the corner pieces can simply be swapped out with a variable chance for diagonals, also allowing us to smooth the city out around the edges.

So the end result looks something like this:


Saturday, May 24, 2014

CityScaper! - and about the blog.

So CityScaper is a big deal for me right now, this could be a big break, or a little one that's just as welcome, either way I'm breathing a little easier with it out now. I'm very anxious and excited to get to work on updating it and communicating with clients. It's a win-win situation really. I get QA and profit, they get a great tool and service to match. Check it out on the Asset Store now if you have need for procedural generated cities.

CityScaper on the Unity Asset Store
The Interface



Results of the CityScaper with only 7 models entered
This script only uses meshes you input, giving you freedom over the aesthetic outcome. Combine this with the libnoise variables that are exposed, and you can create city scenes on the fly that are incredibly varied in only a moment, just quick enough to squeeze it in your load sequences. Now all you have to do is model the buildings, place them in this script, and modify a few variables until you get the city you like. From there you can generate it directly into the scene during the game, or save it in Unity's editor and start detailing an already detailed and interesting city. The more buildings you add, the more interesting the city becomes, and you can keep making gameobjects with new city types. This is my baby right now, but I plan on having quite a few more ... bad metaphor?

Here's a little tutorial on using the CityScaper, don't watch if you aren't interested in picking it up, I'm afraid the sound quality is quite rough at the moment, we plan on replacing it asap.




As for the blog, I plan on taking this blog not only through my own experiences, but through the processes I learn along the way, so expect the next couple of entries might be tutorials for programs you've been dying to get the hang of. Unity, of course, will be central across that theme.

Some Ketchup

I'm starting up this blog to keep track of my own thoughts, but also to share my experiences with other developers and entrepreneurs alike. So here I am, months into production on a game by myself, and after several candidates, I've stumbled onto three I very much like. Of course, these things change with people's motives, and I know any of my current trainees may one day jump ship. Until then, we've got a great artist and coder, and some fresh blood with interest in learning everything she can. The hope is to turn all of them into game making machines, but for now, I'm turning them into developers.

So far:
I started on this path with the intention of creating a larger project, but have since settled for a number of smaller project as practice and funding for the goal project. The first release we're planning is a post-apocalyptic snow RPG, which we'll release more details of as we continue its production. It consists of about six main parts, which I've completed the three major coding pieces to an extent. My current goal is releasing the first three pieces as assets on the Unity Asset Store. Step 1 is already complete, check out CityScaper now! I'll do another post on this shortly to explain it in depth. Next is a front line for this city generator, which will be sold as a separate attachment capable of multiple uses, similar to CityScaper. I've already got them working together to recognize eachother :).

I chose Unity because it's an amazing platform as an indie developer to jump right into game development with the hassle of building a game from scratch. The Unity Asset Store also helps us drive a little bit of income as we go along as well. There are a lot of success stories on the Unity Asset Store, but time will tell if this is one of them. About 24 hours in, and we've sold two copies of CityScaper, it's promising, but not bedazzling. The bright side is the Asset Store provides me with a dedicated QA team who benefits as much as I do from our cooperation. You can see how that goes on our Support Thread here.

The big goal of this company is to build procedural games and develop them to their full potential. Look to projects like the new Wraith game for Lord of the Rings, or Dwarf Fortress's Adventurer mode to understand where we'd like to go with our content in the future. For now, we're content to experiment with some of our own concepts on a smaller scale.