Tuesday, February 8, 2011

AssetBooruCh

Somewhere along the way we discussed the need to better organize our 3d models, reference images, concept sketches, fonts, music, and sound effects in the office.

This reminded me of ResourceSpace. I tried it out on a local dev test site.

I have to say, its meant by default for graphic design, web design and those areas. Properties like Country or Camera Model are useless to textures, while you need more information for 3d models, such as polygon count.

I set out planning a different digital asset management tool that would work for us.

Meanwhile, people in the ResourceSpace Google groups explained that thankfully you can add new resource types and change properties of existing ones. Seems like I may use ResourceSpace after all.

However, my plans started diverting from ResourceSpace and I really thought I should look into it more:

  • Upload any kind of file. Plugins are made to handle a specific asset type, like images, 3d models, textures, fonts, etc. 3d models show interactive thumbnails, videos have streaming flash video previews, and fonts can be previewed interactively (edit the text that is displaying the font).
  • Danbooru-style tag-based organization. Assets are tagged and a sophisticated search system can be used to search assets based on its tags and properties.
  • Imageboard based commenting system. Comments can be quoted, replied upon, with images and links properly parsed.
  • Voting system. Assets can be rated from 0 to 5. Using the search system mentioned above, its easy to find popularity trends of certain assets. Comments can be voted up or down. Upvoted comments appear at the top while downvoted comments are hidden by default.
  • AJAX. Most user operations do not require reloading the page. Search result pages are loaded without needing to refresh the page, similar to Google Images. Inputting values for tags give suggestions based on the word currently being typed.
  • History graphs. Show history graphs of changing values like number of times an asset was viewed, average rating of an asset, number of comments to an asset, etc.
  • Bookmark search results or subscribe to them as RSS feeds so you can be notified of any changes.
I shall therefore call it AssetBooruCh, and I'm looking at releasing it as an open source project.

Sunday, January 30, 2011

I am not your mom

Jan 30 17:49:32 <Tayfe> AnomalusUndrdog: mom, maybe i found the problem...
Jan 30 17:49:51 <AnomalusUndrdog> I am not your mom
Jan 30 17:50:03 <VILE> lol
Jan 30 17:51:04 <Tayfe> AnomalusUndrdog: mom - one moment pls^^
Jan 30 17:51:19 <AnomalusUndrdog> I am not even female
Jan 30 17:51:36 <Tayfe> AnomalusUndrdog: maybe it's a problem that i use the same code on the car, too?

Oh IRC chat, you so crazy.

Join in the fun: #unity3d in freenode.

In other news, from the same IRC chat, I just learned about partial classes. A way to split your class definition into separate files, which is what I did back in C++ Torque days as my classes get to be too big. In most situations, this is doing it wrong, because classes getting big is a sign that I'm putting too much functionality in one place and I should separate distinct functionalities into separate classes in the first place.

Saturday, November 6, 2010

I'm not dead yet

Sorry for the lack of posts lately. Long story short, I decided to get a full-time job in game development so my personal projects are shelved for the time being.

The company I work in, Dreamlords Digital, decided to use my test game, Zombie Fields, as an actual commercial game. So now I'm working on porting it to the iPhone and adding lots of polish.

A few, old, work-in-progress screenshots:



I'm actually grateful that the company I now work for allows me a lot of creative freedom.

Sunday, August 8, 2010

Death Zone Zero: Sign 3d Model

Here's some artwork to help fill the lack of posts lately.


Its an old 3d model I plan on using for Death Zone Zero, perhaps I'll animate the sign swaying back and forth a little.

Made in Blender and textured in GIMP.

Tuesday, July 20, 2010

Death Zone Zero: Minor Update: Zone Lobby Gui

One thing I really hate about Unity is the lack of better GUI functions, something that would make use of the Model-View-Controller pattern, because right now, almost everything is done in code.

It took me quite a while to code a popup menu (aka context menu/right-click menu).

Tuesday, July 13, 2010

Using a CMS

So I thought of what I should use when the time comes to set up the website for Death Zone Zero.

I can roll my own hardcoded PHP web pages like I always used to, but this time I thought of trying out a CMS.

Firstly I needed a CMS that can provide a community forum plus a community wiki, besides having the ability to let users create accounts for the game itself, and be able to display static content, news, and perhaps blogs.

I also need the CMS to be fully themeable, as I want a custom look for the game's website.

I saw Tiki Wiki CMS Groupware and thought it provided just what I needed. So I started trying it out on my local computer.

Unfortunately I encountered a bug during the installation detailed here.

The workaround was to downgrade my PHP installation from 5.3 to 5.2 but it makes PhpMyAdmin crash the Apache HTTP Server. I ignored that and tried to continue the Tiki Wiki installation. I almost got it completed when it spewed out an error:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [datetime.--construct]
So I had enough and decided on trying a different CMS.

I saw Drupal, which a couple of guys on /g/ recommended, so I'm currently looking into that. It has modules (plug-ins) to enable a forum and wiki, and even the ability to use Facebook Connect and OpenID, so its a good thing for me.

Unfortunately it also has a problem with PHP 5.3, giving out errors:
Deprecated: Function ereg() is deprecated in Drupal\includes\file.inc on line 926

Warning: Cannot modify header information - headers already sent by (output started at Drupal\includes\file.inc:926) in Drupal\includes\install.inc on line 618

I guess I'll just wait for a fix.

Death Zone Zero: Update: Zone Lobby

Photobucket

Players can now log-in to the zone lobby. This acts as a lobby area where players can meet up, chat, and challenge each other. So far you can only chat and move your avatar though.

Friday, July 2, 2010

Death Zone Zero: Update: Client Server Network



Here's a more complete test PVP match showcasing the abilities of all the units made so far.

Monday, June 21, 2010

Death Zone Zero: Update: Client Server Network



So here the client/server network is being shown, you can select units, move them, and attack them, and it all happens on the network.

Thursday, June 17, 2010

The Anomalous Underdog "Offices"

Ever wondered what the place where I work looks like? No? I'll show it anyway.

Photobucket
Taking a lunch break here.

Photobucket
Working on Death Zone Zero.

Photobucket
Its a bedroom office.

IGDA Manila June Meetup

I've been trying to be active in the IGDA Manila community to alleviate my lack of a social life, and in this opportunity, I'm happy to announce that I'll be making a talk during their June monthly meetup on how to use Blender to create videogame 3d models. Part two of the talk (probably in July) will be using Unity to create simple programs to get you started on making games.

I'll be also recording my talk to a video so people who can't attend the event can watch it later in Youtube.

Date:
Saturday, June 26, 2010
Time:
3:00pm - 6:00pm
Location:
Exist Tech Bar
Street:
Unit 502 5/F Orient Square Bldg., F. Ortigas Jr. formerly Emerald Ave.

You can view more of the event details here.

Monday, June 14, 2010

Death Zone Zero: Minor Update: Client Server Network

The Battle Server is slowly starting to take shape. Players can log-in, get their unit data from the database, and load units on the battlefield. Can't control them yet though. But with the work I've done in the single player demo, the template is there. I just need to add the multiplayer network part to it.

Photobucket

One thing I don't like about Unity is the lack of better serialized data transmissions across the network. I made a formal request about it here: http://feedback.unity3d.com/forums/15792-unity/suggestions/824649-better-network-serialize-commands
Oftentimes I need to send a bulk of data to the client to initialize his data. I have 2 options for doing this: RPC (Remote Procedural Call) or a OnSerializeNetworkView function.
The problem with using an RPC is you pass the data using arguments. My data includes arrays of classes so using an RPC is problematic.
I can use instead a OnSerializeNetworkView function and serialize the data into a stream. The problem with the current OnSerializeNetworkView function is you can't control when exactly it gets called. OnSerializeNetworkView is meant to be called continuously, and has to be attached to a certain Network View.
I need a Serialize function that would get called only when I tell it to, much like an RPC.
Having worked with the Torque Game Engine, Torque has what they call a NetEvent, basically a one-shot serialized data transmission from/to Server and Client.
This is perfect for initializing the Client with data, or when the Client needs to submit a list of information to the Server (like when buying/selling multiple items from/to a shop).
And please, if this gets implemented, please make it available to the Unity free version.
My guess is allowing a BitStream to be a valid argument to pass in an RPC is the most straightforward way to do this.
Right now I'm faking serialization by turning my data into one long string and sending that to the client. This, I guess, takes up a lot of bandwidth since strings in Mono are 16-bit each character because of Unicode support.

That's ok, I tell myself. Just imagine the client is loading a web page. Heck, maybe even the average web page is larger than what I'm transmitting. And I'm not sending it every loop or something; its for initializing client data, so a one-time, large bulk of data transmission is quite allowable.

It makes me miss my days when coding in Torque Game Engine. You can squeeze all the bits of data you want as small as possible there. They have their own version of the BitStream: Like a normal stream you serialize your data, but the special thing is the compactness of the serialization. Transmitting a boolean requires only one bit, strings can be compressed to save space, and you can specify by how much bits an integer or float is going to take when serialized into the stream.

For example, say you have an integer variable health, which in your game goes only in the range 0 to 100. You can then specify the health variable to be serialized to only 7 bits (essentially creating a 7 bit integer, which goes in the range 0-127), since its value goes only up to 100. You saved 25 bits, assuming it was a 32-bit integer, a whopping 78% of the original size.

They even have what they call a StringTableEntry. Basically used for strings that get sent over the network frequently, like usernames or preset error messages. What happens is the first time its sent, it gets sent as a normal string, but the next time, it gets sent only by a reference ID number to save bandwidth.

Friday, June 11, 2010

Death Zone Zero: Minor Update: Client Server Network

I got a rudimentary Client/Server network up and running with a chat system. Code based from the network tutorial given by M2H (http://www.M2H.nl).

Photobucket

Saturday, June 5, 2010

Death Zone Zero: Minor Update: Syntax Errors Galore

I'm currently transitioning my code from Unityscript (Javascript) to C#. C# has its own quirks but nothing unmanageable. I figured I need C# because C++ plugins only work in C# via Dllimport. It'll be a very long time before I can use C++ plugins though (needs Unity Pro), but its better to do the conversion to C# sooner than later.

C# certainly has a stricter syntax compared to Unityscript and allowed me to catch some bugs that otherwise slipped by me in Unityscript.

C# also has preprocessor directives (something Unityscript doesn't have), which I need to use. Unityscript also has preprocessor directives.

I find C#'s typecasting more readable than Unityscript's.

Photobucket

Saturday, May 29, 2010

Death Zone Zero: Minor Update: Creating High-poly Version of the Rifleman

So I decided to give up trying to use Sculptris. I guess I'm not good with 3d sculpting programs. I'm modeling the high poly version of the Rifleman in plain old Blender instead.

Photobucket

Photobucket

Thursday, May 27, 2010

Death Zone Zero: Minor Update: Creating High-poly Version of the Rifleman

Curses! What monstrosity is this? I can't work this thing! This will take me a long time before I get used to it.

Photobucket

Death Zone Zero: Minor Update: Rifleman 3d Model Test

I'm working on the graphics right now, after having coding in 5 different units for the game.

Photobucket

Photobucket

Thursday, May 20, 2010

Death Zone Zero: Minor Update: Doc's Support Ability "Steroids"

The Doc now has his support ability, Steroids, which, I've said before, raises the attack damage of a friendly organic unit, but damages that unit as a side-effect. The effect lasts for 2 turns and you can stack it.

Photobucket

As usual, the work-in-progress, playable demo is available at http://anomalousunderdog.herobo.com/Unity/DZZPrototype.html

Weird thing is he can raise damage of a unit even though the guy uses a gun to attack. Then again, the Marine of Starcraft also uses a similar idea with their Stimpack ability, and they use guns too.

Wednesday, May 19, 2010

Victis: Female Character 1 Concept Sketches

Here I show an old piece of work I did for a different planned game, "Victis", a dark fantasy-themed RPG where guns and gunpowder technology are the norm for warfare instead of swords. My influences for the theme is from fantasy games with a somber mood like Quest For Glory 4, Castlevania, Disciples 2, and the like.

This character has no name yet, but she's some sort of gypsy traveler who wields dual pistols. Her unique ability is that she can see the potential future for a brief period of time.

Since she's of gypsy descent I searched the Internet for various Romanian names. I saw "Liliana" but that's similar to the name of a character in Dragon Age: Origins, then I saw "Tatiana", which the Internet tells me is "Feminine form of the Roman name Tatianus, a derivative of the Roman name TATIUS". What do you guys think?

Photobucket

Tuesday, May 18, 2010

Death Zone Zero: Update: New Unit "Doc"

The Doc is your post-apocalyptic healing unit. He can heal a large amount of health to one organic ally unit. The problem is he has no combat training so he can't attack.

Still to come: The Doc's support ability, Steroids, which enhances an organic ally unit's attack damage but damages that unit itself as a side-effect.

Photobucket