Friday, December 24, 2010
Merry X'mas!
Just witness the most beautiful xmas tree that i had seen. that's about 60m tall and was erected on a mountain. it was breathtaking ;)
Monday, December 6, 2010
The Ape Pte Ltd
Still no idea want to call my new company, ExceptionNull? FirstFate? SphereApe? breezylake? almost 2am now, i guess i need to settle with this simple name.
The main objectives of this startup
1) Create a business model that doesn't relied on investor money
2) Create a low cost social network that relied on p2p and flash platform
3) Create my dream platform that supported torrent network protocol and strong user content tools
my short term plan for this startup
- within 2 months obtain patrainer qualification
- within 6 months reach $2000 monthly income target to support daily activities
- smart use of my personal time 30% time on teaching and 70% on development
- within 1.5 year employ my first employee :)
Long term plan
- maintain every 6 months release a game to web or mobile platform
- penetrate into school software market
- establish as a blender consulting company
- revolutionize casual social game by introducing blender and p2p
Friday, October 22, 2010
A lesson on database design
Never actually learn proper about database design and today my colleague given me a crash course on database design. all things start with data deletion, there is one important data that dependent by many other tables, i was using sql delete statement to delete each of them in correct order and one day my colleague's module also depend to that important data so that is the interesting event happened, when i remove my data my colleague depended table are automatically gone together! without any carefully delete statement!
so how did my colleague did it? foreign key is the answer, but i did foreign key before but without using the ON DELETE and ON UPDATE option, therefore to auto delete a depended row just need to add "ON DELETE CASCADE".
i would like also stating the key characteristic of a good database design.
1) auto increment index is not a good reference id, any changes of the order will have nightmare to establish the relationship
2) for index and id column, do not use the simple word of "index", "idx" or "id" if not when joining multiple table with same column hell will break loose
3) use relationship to constraint your data, to maintain data integrity
4) use another "link" table for multi to multi relationship
5) the standard design: atomic data (no retyping) and all non key data should depend on the primary key, if not they should belong to other table
so how did my colleague did it? foreign key is the answer, but i did foreign key before but without using the ON DELETE and ON UPDATE option, therefore to auto delete a depended row just need to add "ON DELETE CASCADE".
i would like also stating the key characteristic of a good database design.
1) auto increment index is not a good reference id, any changes of the order will have nightmare to establish the relationship
2) for index and id column, do not use the simple word of "index", "idx" or "id" if not when joining multiple table with same column hell will break loose
3) use relationship to constraint your data, to maintain data integrity
4) use another "link" table for multi to multi relationship
5) the standard design: atomic data (no retyping) and all non key data should depend on the primary key, if not they should belong to other table
Saturday, September 25, 2010
Blender GameKit
GameKit has came into my hobby game engine radar, and it has passed a few of mine basic criteria for a hobby game engine such as:
1) a functional asset import/export pipeline from blender3d
2) a good team of developers not going to die anytime soon :)
3) an open source project and free for commercial (more reasons to spend time on it)
4) flexible graphics pipeline, easy to customize the material.
GameKit is produced by the same developer of BulletPhysics from Sony Entertainment R&D so it passed the criteria #2.
GameKit developer Eric is the contributor of blender3d physics system and he has roped the blendparse programmer to his team so criteria #1 passed
Eric is more stringent than me on criteria #3, he doesn't anytime from LGPL and GPL, so no worry about #3
GameKit is based on Ogre3D, the material should customizable. but how to change it from blender is another question. will evaluate it on phase 2.
in phase 2 i'll evaluate the following items:
1) Blender->GameKit pipeline, I'll add custom scene and player object and control them from GameKit
2) Add new material from blender, if than doesn't work add material using Ogre3D material system
3) the node system
1) a functional asset import/export pipeline from blender3d
2) a good team of developers not going to die anytime soon :)
3) an open source project and free for commercial (more reasons to spend time on it)
4) flexible graphics pipeline, easy to customize the material.
GameKit is produced by the same developer of BulletPhysics from Sony Entertainment R&D so it passed the criteria #2.
GameKit developer Eric is the contributor of blender3d physics system and he has roped the blendparse programmer to his team so criteria #1 passed
Eric is more stringent than me on criteria #3, he doesn't anytime from LGPL and GPL, so no worry about #3
GameKit is based on Ogre3D, the material should customizable. but how to change it from blender is another question. will evaluate it on phase 2.
in phase 2 i'll evaluate the following items:
1) Blender->GameKit pipeline, I'll add custom scene and player object and control them from GameKit
2) Add new material from blender, if than doesn't work add material using Ogre3D material system
3) the node system
Wednesday, September 1, 2010
Live is sad
Live is sad, that's why the person has more experience of life are sadder. young are happier because they don't know what is life yet
Saturday, August 7, 2010
Being a slacker recently
I'm a slacker recently, having a girl friend and rushing 2 deadlines has burn out all my free times. I also notice my indulgence in gaming and movie has make me slacker. i need to change this. i'll focus on 3 projects now. my day job a mmo project. a flash physics game and my long term project a bt platform for games.
Saturday, July 10, 2010
Why Mabinogi isn't my game
Mabinogi is a refreshing mmo. it has many interesting features not found in many gazillion clone mmo. some of the feature i like includes:
1) very complete GUI, almost equal business application GUI
2) could level characters without combat, many jobs available just like real life
3) no skill trees, fully customizable combat skill
4) interesting combat system, it is paper scissor stone
5) not tedious quest system. player doesn't need to travel all the way to village to receive quest and rewards, owls did it for you :)
but after few weeks of playing, i realised this game doesn't provide a goal to a player. no skill trees mean no future planning for player, player wouldn't what to expect for the future.
creating new thing is always a good idea but removing old features without careful thinking could be disastrous too
1) very complete GUI, almost equal business application GUI
2) could level characters without combat, many jobs available just like real life
3) no skill trees, fully customizable combat skill
4) interesting combat system, it is paper scissor stone
5) not tedious quest system. player doesn't need to travel all the way to village to receive quest and rewards, owls did it for you :)
but after few weeks of playing, i realised this game doesn't provide a goal to a player. no skill trees mean no future planning for player, player wouldn't what to expect for the future.
creating new thing is always a good idea but removing old features without careful thinking could be disastrous too
Sunday, July 4, 2010
pitfall of making mmo
we are at the middle of making a micro-scale mmo (online game?), and we have learnt why making a mmo is so hard. these are the top three hurdles of mmo development
1) no planning of editor tools development and design team. all budget, time and effort are invested into engineering, arts and marketing. we'd over looked the need of design team to create background story of npc, items' information, character balancing and so on. if due to lacking of design team, the needs of editors/tools for generating game data is much more urgent.
2) under-estimated of important of item attributes design. it is the thing should design from very beginning, because it affect combat system. and because of that we also under estimated the difficulties of combat system.
3) under-estimating of development's team orientation and documentation. these 2 topic don't sound like related at all. but because of lacking of documentation, each team member have their own interpretation of the project goal, and ended up not all team member understand the objective and scopes of the project, and causes unnecessary high expectation from team member, therefore they are easy to get demoralized. and also experience of the team in mmo field isn't enough. some team member were from web development industry, this causes them un-satisfied with the development direction.
although i'm facing the about problem right now, but i still confident that the project can still be completed on time.
1) no planning of editor tools development and design team. all budget, time and effort are invested into engineering, arts and marketing. we'd over looked the need of design team to create background story of npc, items' information, character balancing and so on. if due to lacking of design team, the needs of editors/tools for generating game data is much more urgent.
2) under-estimated of important of item attributes design. it is the thing should design from very beginning, because it affect combat system. and because of that we also under estimated the difficulties of combat system.
3) under-estimating of development's team orientation and documentation. these 2 topic don't sound like related at all. but because of lacking of documentation, each team member have their own interpretation of the project goal, and ended up not all team member understand the objective and scopes of the project, and causes unnecessary high expectation from team member, therefore they are easy to get demoralized. and also experience of the team in mmo field isn't enough. some team member were from web development industry, this causes them un-satisfied with the development direction.
although i'm facing the about problem right now, but i still confident that the project can still be completed on time.
Monday, June 7, 2010
World Historical Events
Studying world history last few weeks, that could explained why very little progress on programming and blog :)
i found interesting time table for western/Europe history, and to compare to china history that i studied few years back. i decided to create this time table to compare the major events in these two big continents.
Europe
==========
8th BC - Ancient Greece
356 BC - Alexander The Great
146 BC - Roman Empire (Battle of Corinth)
330 AD - Eastern Roman pr Byzantium
962 AD - Holy Roman
1806 AD - Napoleon / France Empire, Holy Roman resolved to Austria and Prussia and many small country
1815 AD - Napoleon Dead
1914 AD - First world war
1918 AD - Collapsed of Prussian, Ottoman and Austrian-Hungarian Empire
1937 AD - Second World War
1967 - 6 days war
i found interesting time table for western/Europe history, and to compare to china history that i studied few years back. i decided to create this time table to compare the major events in these two big continents.
Europe
==========
8th BC - Ancient Greece
356 BC - Alexander The Great
146 BC - Roman Empire (Battle of Corinth)
330 AD - Eastern Roman pr Byzantium
962 AD - Holy Roman
1806 AD - Napoleon / France Empire, Holy Roman resolved to Austria and Prussia and many small country
1815 AD - Napoleon Dead
1914 AD - First world war
1918 AD - Collapsed of Prussian, Ottoman and Austrian-Hungarian Empire
1937 AD - Second World War
1967 - 6 days war
Sunday, May 9, 2010
Berserk-ed Medusa
I have been reading manga Berserk for last week. 10 years worth of manga in less than 2 weeks. the starting part, the Golden Age Arc was very intriguing, even with lackluster drawing. it was about a human cursed warrior, who bring doom to anyone close to him. so he was alone fighting the almighty angels the five god hands. he fighting style is anti-hero kind, he even use women as meat shield! i was so excited after completed the first few chapters. i thought i have found another good manga on par of early gantz, claymore and naruto. but berserk quickly become another super-human manga series, the main character become super hero, all ladies fall in love with him, ya the story become dragging and the graphics become nicer and it become a common manga. is the a trend? when graphics becomes better story becomes lousier? just like most of the movies and AAA games.
I also watched Ip man 2, iron man 2 and clash of the titans 2010 this week. disappointed on all three of them at different extend. ip man was a acceptable sequel of the 2008 hong kong block buster, it maintain the standard without any surprises. iron man 2 is much worse than the 2004 classic. it was just a normal super hero movies with the standard flow of story, hero has a problem -> hero was treated by a villain -> hero found a solution -> hero saved the day -> hero kissed a woman -> the end.
but compare to iron man 2, clash of titans is much worse, is almost despicable. i were so sorry to medusa, she was raped by Poseidon, outcast by antenna because of jealousy and killed by the stupid hero perseus just to save a princess, how could a story worse than this?
Sunday, April 11, 2010
Mabinogi
I have played a few hour of Mabinogi today, I must say I were impressed. I have play so many free MMO including the Runes of Magic that commonly know as one of the best f2p mmo, but i find that Mabinogi beats it hand down at least at beginning level.
What i find so good about Mabinogi
- Very polish, many details has well thought out, for example rewards system, this don't required to walk all the way back to quest npc to claim rewards and don't present the reward from no where just blink into your inventory, it uses owl to deliver your rewards. and it has age system to let your grow your avatar in the magical world and allow you to reborn! just like the intro telling you, only your soul is travel into the magical world.
- Very simple and fun combat system. I don't just lock a monster and sit to see auto attack or button mashing, instead it uses scissor paper stone system, very nice.
- Class free mmo, finally i could customize my own skill set, no just grown a predefined character
- low system requirement, not necessary an attribute for good mmo, is important to me, for my integrated gfx cards
- many part time jobs, although i only did some of them, they feel like mini games in facebook, very relaxing.
Overall i finally find a good mmo worth for the space on my PC.
Wednesday, April 7, 2010
Color blend mode that used in photoshop and gimp
chatting with my colleague one day regarding skin color selection for avatar creation and customization in rpg game. one of the solution is to create 1 skin color per texture which is obviously very labor intensive. one of my artist colleague suggested to use photoshop color blend mode to create different skin tone. so artist only need to create a gray scale image for the skin tone and the game is client enough to tint color to the grayscale texture. great idea, it works perfectly in photoshop, but how to do it in game client in realtime? after much reading the internet, most of the algorithm were very hard to understand my programmer, because those algorithms were based on HSV (hue, saturation and value) or HSL (hue, saturation and luminance). but for us programmer, all we had is RGB!
after googling awhile i found a great article, it shown the operation in term of rgb, and it is easier to understand than the algorithm based on HSV or HSL.
the basic steps for color blend mode
1) assign 2 textures to the program, a base and a source texture
2) calculate grayscale (luminance) value of both base and source textures
3) base illuminace minus away source luminance to get delta luminance
4) result color will be source color's rgb = source color's rgb + delta luminance.
that's all!
Sunday, March 21, 2010
never keep java.sql.connection for later use
from c++ and framework development background, i also try to minimize repeated tasks in program cycle. my recent discovery is to get java.sql.connection at application initialization and keep it for application runtime use. so far so good, no problem during development time, since server never up for more than 10 hours. but once it put it for deployment, i received this error
mysql connection disconnected: The last packet successfully received from the server was 312,686,980 milliseconds ago
I first i thought is my server OS shutdown the harddisk or network system after long period of idling. after much debugging, i found that is my own wonderful code causes this problem. to solve it i should getConnection everytime connection is required.
Tuesday, March 16, 2010
quirk of unity3d gui
unity3d's gui (gui version 2) is very special in my opinion, very different from standard gui system. in my opinion, normal gui should have gui object that could be use to get and set gui properties and event system to interact with other objects. but unity gui doesn't has any of this. it provides some functions for u to draw gui. and this functions need to be called every frame. to hide gui? stop calling those function in your loop! to disable gui? (still visible) put GUI.enabled=false before the gui and GUI.enabled after it, cool? i don't know.
lacking of event system also make data collection need to be done every frame, think polling method. is this good? i'm not sure. and the gui system is very basic (gui version 1 is more primitive). it doesn't has tooltip ui, drag n drop ui. and some hack are required to make bitmap buttons. wanted animated bitmap button? you need to hack the system again, probably use unity version 1 gui system to hack an animated bitmap button.
these are a few comments i have regarding unity gui system.
1) if using GUI.BeginScrollView, horinzontal and vertical scroll bars are always shown unless GUILayout.BeginScrollView is used instead.
2) no tab control, use toolbar to hack a tab control? prepare for a very button-ization tab looks.
3) no tooltips control, you need to hack one for yourself. prepare for polling tooltip string for normal gui and window gui. yes you need to poll separately. and because of lacking gui objects, tooltip is a hack for letting developer know which gui is under mouse cursor, cool?
4) toggle button could be selected by all three mouse button, and no way to disable anyone of them
5) due to the gui system design, GUI.grid is useless, it is very hard to customise it, for example you want only one of the button in grid is selected at any one time. hack a grid using button or toggle is easier.
enough ranting about unity3d, it does has it string points. the thing i like the most is component-based design. create a new game play without engine source code is very possible now. second strong point is the very customizable editor, you could use it the same scripting system to extend the editor functionality! third thing i like is minimalist design, i hoe unity 3 not going to break this.
Wednesday, February 24, 2010
gimp with windows animated cursor
open windows animated cursor with gimp 2? default gimp doesn't support it, but you could do this to make it happened
1) get gimp ani.exe from www.box.net
2) unzip it and place ani.exe into gimp plug-ins
3) you should be able to open your .ani files if not rename them to .ico and open with gimp
Thursday, February 18, 2010
Happy lunar new year! and facebook game submission!
Happy lunar new year to all Chinese and Korean friends! after long holidays i finally force myself sit down and finish up my facebook game. the game is submitted for approval and hopefully it could be seen in facebook application directory before end of lunar new year
Tuesday, February 2, 2010
papervision project restarted
after resting and re-evaluate web 3d technologies for 1 month plus (22/dec ~ 2/Fec) i finally found new energy to continue my papervision games, although i still dislike it's design, i decided to put in more effort to make it a complete games. the thing that i need to complete is a quest system, economic system and weapon system. hopefully my newly gained energy able to last long enough
Sunday, January 10, 2010
bullshit unity
used unity (free) for more than a month now, i like to say, unity (free) is crap, it is a crippled crap. without pro version, the important assetbundle is largely unavailable and it is an important feature for unity web.
beside this there are few things i hate about unity
1) supported 3 languages, some noobs love it, said it was revolutionary. have them realized that unity is tiny compare to other platform like flash? and this tiny resources is further divided to 3 languages...
2) api not compatible between pro and free version. lot ofresources are not run-able on free version just because some pro only api is called, crap. this make learning process is even steeper
3) proprietary and binary file format, this make version control extremely tedious, even with their expensive asset server. crap
4) polling method everywhere, ui use polling, asset loading use polling, crap
i'm really hope adobe could do something about flash. 3d web still doesn't has a clear market leader. search is still going on...
Monday, January 4, 2010
idea!!!
a super model! what is a super model? super model is a mesh and script combine together.
a super model is a combination of super bone + super mesh + super material.
super bone:
1) able to playback animation
2) portion of the bone able to be control by IK and blend animation with the rest
3) bone that support synthetic animation, example walking and running
4) bone that supported partial-scaling
super mesh
1) meshes that could be mix and match
2) meshes that supported partial scaling
super material
1) textuing per vertax
2) supported full scaling and partial scaling
with this system, naruto kind of gamelay is very possible :)
rip bobo and chacha Jul 2008 ~ Jan 2010
rest in peace my chipmunks, although it was tired to take care two of you during there one and half year. but i still very sad to see both of go. rip
Subscribe to:
Comments (Atom)