Showing posts with label Umbra. Show all posts
Showing posts with label Umbra. Show all posts

Thursday, April 18, 2013

An Uneventful Week Or Two

Hello everyone! Sorry I haven't posted in quite a while. I've been in somewhat of a lull in all the projects I'm working on, so I'll catch you up on what has happened.

For Umbra, Ryan Olson said he has Zone 1 ready to rock with enemies. As soon as we get it packaged up and distributed to the class we can begin playtesting while he places the enemies into the rest of the zones.

As for the crating system, well I decided to take a break from it before starting on the larger inventory system that I want before I finish up the crafting button.

Super Monster Dance Party has been pushed back a couple days due to lack of songs. We ended up having to purchase some songs to use, since both of the guys working on the music ended up being too busy to complete the rest. We do have one song that Dan Langford did complete, and it sounds pretty good. We are waiting for  permission on two of the other songs that we want to use. The other three artists got back to us within a day granting us permission to use their songs. Nice of them to let us use the songs, thank you! Other than that we have just been working out some of the last bugs and cleaning up some of the art assets. We should be still on track for our end of the month release, it will all depend on how smoothly it exports and works on different phones. Dave Troyer finished up the final monster, so here is a menacing picture of him:


Kind of creeps me out...


I guess that is all there is for now. One of these days I'll write up my thoughts on some of the...management, for lack of a better word, of several projects the group is working on at the moment.

Until then, farewell!

Saturday, April 6, 2013

Sorry For The Long Post - SMDP, Umbra, GenericMenus

Hello everyone!

I have a couple updates on Super Monster Dance Party, Umbra, and that crafting page I was working on.

I'll start off with Super Monster Dance Party. We're inching ever closer to completion. Dave Troyer has been working hard getting the animations for the monsters done. So far he has 4 out of the 5 monsters completed. Here they are:



As you can see the art style is quite a bit different from the one the monsters were originally styled in. Due to animation limitations Dave decided to go with this style for the monsters.

While setting up the animations to play at the right times in the levels I came across a pretty nifty piece of code for Construct2. It's an expression called tokenat(Variable, Index, Deliminator). I'll explain the three parameters in a second.


If you want it to be more dynamic put tokencount(Variable,Deliminator) in random() instead of a number.
Then it will always update if you add new items.


  • Variable: What this does is you declare the names of the strings you want to access in a global variable. In my example  I am putting the names of the animation sets for the confetti, so I have Red:Blue:Green:Yellow as my text variable separated by a : 

  • Index: For the index parameter this is which substring you want to pick. For instance, if I wanted to get the Blue substring I would have to put 1 as the index(It is a base-0 system where the first object is object 0). If I wanted it to pick a random name out of that list I could put int(random(4)) in the Index spot. This will pick a random number from 0-3 which corresponds with how many names I have in the variable. The in() just converts the random number to an integer, so we don't have decimals since that would throw an error.

  • Deliminator: The Deliminator parameter is pretty simple. It is just telling tokenat() what character(s) were used to separate the substrings in the main variable. I chose to use : because it is easy to put in and it looks nice.
This makes it really simple to play a random animation. The way you would have to achieve the same thing would be to have this setup: 

Takes up a lot more events. That's bad if you are using the free version.


Forward unto Umbra! I figured out that changing the loading video is pretty simple. All you have to do is replace this movie with a Bink video with the same name, or change the name one of the default properties(I'm not sure which one).

If you add a different movie don't forget to set in the default ini's


To make a Bink video you need to download Bink video converter from Rad Game Tools, it's free. Then convert your video, there are several tutorials out there that explain how to do it. Beware: it seems to be pretty picky on what videos it can convert. I've had no luck converting any movies, though my roommate has been able to convert a few. It says it prefers uncompressed .avi or QuickTime videos, though I didn't have any luck with any of the 5-6 video formats I tried. 

Also note that just replacing the movie will not get rid of the tips and map name that show up on loading screens. To do this you have to create your own ViewportClient class and stub out the DrawTransition() function, like so:

class UmbraViewportClient extends GameViewportClient; // Don't draw loading hints or "Precaching..." function DrawTransition(Canvas Canvas) { } defaultproperties { }

Then assign your new ViewportClient to be the default in DefaultEngine.ini:

[Engine.Engine] GameViewportClientClassName=UmbraGame.UmbraViewportClient

If anyone knows how to stop the loading map from switching maps right after the next map is finished loading I would love to know. In other words, let the Bink video finish playing before it changes maps.

See my awesome super-quick models?


I made quite a bit of progress on the crafting page since my last post. I started off with making sure the SWF file updated the resource and recipe inventories correctly and only allowed the player to pick up a maximum of 5 resources and 3 recipes. Once I got them to display correctly(that took a lot of frustrating work, trying to igure out how to work with arrays in both AS3 and UnrealScript) I was able to start working on getting the crafting system in working order. Now you are able to place a recipe in the recipe slot, then place the appropriate resource slot. if a resource/recipe is in use by the system it will be grayed out and unclickable. 

Adding the last iron needed

Once you have the recipe and all the ingredients you'll be able to hit "Craft! and create the item. This feature is still in the works, though I have the base code for it already. I'm waiting to implement this until i get a second dedicated inventory screen, that way you'll be able to see what you crafted. I did implement a drop feature which allows you to select a resource/recipe and drop it on the ground. 

I think once I get this done and I'm feeling a bit ambitious I'll shift most of the work over to UnrealScript instead of shared between both, since UnrealScript is quite a bit faster than AS3. I should have been doing that from the start, but for some reason I was duplicating work again. At least it is working so far, that's the main thing right?

Well, that's all I have for now. Till we meet again!

Thursday, March 28, 2013

Been A While! - SMDP, Umbra, Generic Menus

Hey everyone, sorry it's been a while.

I don't have too much of an update on Super Monster Dance Party. After doing some more testing and research I found out that PhoneGap would not work for us. It seems that the sound issues we were encountering is a pretty serious issue with it and so far there haven't been too many effective workarounds. I did find a good workaround for the sound issue using CocoonJS, it was simply a matter of changing an action from "Silence" to "Volume -200db" The only problem with just using the volume is that with "Silence" it would mute and stop further sounds from starting, but this is so trivial for our game that is won't be an issue. After we got the CocoonJS file exported I got to test SMDP on several different phones, which was pretty exciting. So now I'm taking a step back and letting Dave Troyer and David Fuson add in all of the art assets so we can see how much left of the game we need and what needs refining. I think we are still fairly on track for our end of April release, I just hope we don't run into many bugs once we get everything in.

We're in our last quarter for school, and Umbra is getting wrapped up as well. We got Zone 1 to our lead programmer of sorts, Ryan Olson, so he can start putting enemies in and testing them. After they get in all that is left content wise is playtesting and any tweaks we need to make from there. While that is being set up Andrew Talarico has been working on getting some pretty cool looking animations for the main intro, as well as the ending scene. Currently, I'm figuring out how to add our own custom loading screens and getting the streaming between levels working correctly. Should be pretty easy I think, just making a loading animation and replacing the existing video with ours.

Since I'm not working as hard on SMDP as I was previously I decided to start working on a custom crafting screen using ScaleForm. I ran into all sorts of things I have/had to learn in order to get this working. I ended up having to figure out how to add my own inventory system so I could reference my items correctly. I also ended up making some new pickups and gained a better understanding of how extending classes works. One interesting thing I found was how to pass an entire array from UnrealScript to ActionScript3. The process involves a for loop that goes through all of the items in the array, saving them to a temporary array which gets shoved into a GFxObject and passed to ActionScript3. Here's the chunk of code for it:
function UpdateResourceInventory() { local byte i; local GFxObject DataProvider; local GFxObject TempObj; //Creating the array that will be passed DataProvider = CreateArray(); //Setting each element of the array to include all the variables in //In the Item struct. i is what elment of the array we are on. for (i = 0; i < GP.ResourceInventory.length; i++) { TempObj = CreateObject("Object"); TempObj.SetString("ItemName", GP.ResourceInventory[i].ItemName); TempObj.SetString("ItemType", GP.ResourceInventory[i].ItemType); TempObj.SetString("ItemSubType", GP.ResourceInventory[i].ItemSubType); TempObj.SetString("ItemDesc", GP.ResourceInventory[i].ItemDesc); TempObj.SetInt("ItemID", GP.ResourceInventory[i].ItemID); DataProvider.SetElementObject(i, TempObj); } //Setting the ActionScript3 array "resourceInventory" equal to //DataProvider RootMC.SetObject("resourceInventory", DataProvider); //Calling the function to update it Flash-side ActionScriptVoid("_root.updateResourceInventory"); }

Overall the inventory system is pretty hacky, but it works. I'll have to go through and look at the basic inventory system that UDK has and see if there is anything I can take from that and adapt it. I'll post updates as well. If anyone knows of a good tutorial for that sort of stuff let me know!

Till next time!

Tuesday, March 12, 2013

Some News! -SMDP, Umbra

Over the past week for SMDP I've been going through the events and trying to optimize them more. I also did some preliminary testing with the CocoonJS, as well as the AppMobi, export options. Both had some issues that may make them unusable as export options for this particular game. We're still trying to work it out, and I still have to try exporting with PhoneGap. That probably means very little to anyone, but oh well. Yesterday we decided to take the infinite mode out of the game due to the event system not being able to processes it exactly as we want. If we have some extra time I'll try a theory I thought of while typing this out.

Speaking of extra time, we has set an expected release date of April 14th. That's pretty soon, but the events are almost completely done and the David Fuson is working pretty fast on the art assets. There are only two things that I can think of that will delay the release date. One is not being able to work around the exporter limitations, and the other is if we don't have our music and sound assets ready. Both Dan Langford and Corey Farmer have been pretty busy with schoolwork lately and we're not sure how far they've gotten.

As far as Umbra is concerned, we have it mostly done! Last week we started compiling all of the zones together. All the zones are nearly done, mostly just waiting to get the enemies placed so we can start testing. We did run into quite a few issues getting maps to open on other computers. We are going to try and put it all on one computer and see how things go from there. I'm still waiting for the intro anims so I can finish up the zone 1 intro. Corey was almost done with them a couple days ago, so I'll have to check up on them.

We're getting there!

Sunday, March 3, 2013

Umbra and Stuff! - Umbra, SMDP

Hey there!

Over the past week or so I've been working on both Umbra and SMDP. For Umbra I have the intro to Zone 1 complete except for getting the custom animations for our main character. Once I get those from Corey Farmer I should just be able to plug in the names and be 100% complete. Once I get them I'll try and figure out recording from Matinee and upload the intro.

I think I've made a lot of progress on SMDP in the past couple days. I wasn't satisfied with its performance, it had some issues that didn't really hinder gameplay, but were pretty annoying. The main one was when you clicked on a button and there was another button in the same spot(Like on page that was getting switched to) it would hit that button as well. Because of this I ended up restructuring the entire infrastructure of the game. In the end the execution of the code is cleaner, though there is more stuff in the editor. I also added the rest of the story mode levels and made it so to unlock the final boss for use in infinite and free play you have to beat the last level in story mode.

Thanks to David Fuson we have quite a few of the art assets done. Dave Troyer has been working on getting the sprite sheets all set up so the monsters dance in the levels. Corey has been working on composing some songs, and is off to a great start. I'm currently working on getting the game to save and load your progress. I have that working for one stat, now I just need to add them for the rest of the levels.

Well, back to work! Thanks for reading!