tag:blogger.com,1999:blog-26602724744428117042024-02-07T19:53:44.719-08:00Rant at ProductivityStroy on game development, engineering issues, improving productivities, especially MMO side.Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-2660272474442811704.post-5776234441462114982009-12-15T18:05:00.001-08:002009-12-15T18:05:35.385-08:00N3 Issue with DirectX 2009 August version<div xmlns='http://www.w3.org/1999/xhtml'>There is an issue about DirectX 2009 August version with latest N3.<br/><br/>The way of creation sound in Xact has been changed since its last version and it may causes the problem that N3 could not create sound and permanently waiting till the creation is finished.<br/><br/>It is not totally sure yet but the same problem raised in a few machines. <br/><br/>So it is higly recommended do not use DirectX 2009 August SDK with latest N3(2009. Nov)<br/><br/><div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=7ce5557b-7bfd-8e3f-b195-9d40e0b5cb9e' alt='' class='zemanta-pixie-img'/></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com1tag:blogger.com,1999:blog-2660272474442811704.post-20811301279662740892009-05-11T00:04:00.000-07:002009-05-15T08:02:04.555-07:00Drakensang into N3<div xmlns="http://www.w3.org/1999/xhtml">Recently one of my team member tried to add some models of DrakenSang into N3 April 2009.<br /><br />The followings are result:<br /><br /><div align="center"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1_g752Q1lebX8_I5J-5sx7R80o_EMXwR8-EirUJAvURx-WYMpFpECx-_5kfqp090TTXCdTbwlVddIYRuPqaDhuPvxZgiZ3fTpLtFfqourgcQAwM2DYxXdOw4m_72pWkxDWFgrQv_EsbSa/?imgmax=800" style="max-width: 800px;" height="400" width="532" /><br /><with HDR><br /><br /><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOWcA_tePTUrrTDpLJrsX9NK_nBACWeJrpiXdFMHsMM-rKM5TXqXXgHISFEGJwguP0MDfm9zdrXm7SsBAAbpScIbZ8a87vtCWADKodgGHSSy2yQyMGSpBPar4eRkQRdMctnpddypxjTfa5/?imgmax=800" style="max-width: 800px;" height="399" width="533" /><br /><without HDR><br /><br /><div align="left">The monster which is behind of the bear is not in DrakenSang but our game. The model was exported modified Nebula2 3dsmax toolkit and works fine.<br /><br />One of the best practice for 3D engine is to do reverse engineering with its real sample. :-)<br /><br /></div></div><br /><br /><div class="zemanta-pixie"><img src="http://img.zemanta.com/pixy.gif?x-id=fcdcc3e0-eff3-837a-aae3-342849fa8b98" class="zemanta-pixie-img" /></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com2tag:blogger.com,1999:blog-2660272474442811704.post-40551441044757601862009-05-01T22:23:00.001-07:002009-05-01T22:23:51.932-07:00Meet the Community Developers on Facebook<div xmlns='http://www.w3.org/1999/xhtml'>There are many community developers who have been responsible to Nebula Device on Facebook.<br/><br/>You can reach the following members:<br/>(alphabetical sort)<br/><ul><li>Bruce Mitchener</li><li>Kim Hyoun Woo</li><li>Leaf Garland</li><li>Ling Lo</li><li>Mateu Batle</li><li>Miquel Angel Garcias Tarrazona</li><li>Vadim Macagon</li></ul><br/>Any missing one? :-)<br/><br/>Check Facebook and send a message if you want to be a friend!<br/><br/><br/><br/><div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=81e3a46a-a884-81a8-8431-53bce8601f5f' class='zemanta-pixie-img'/></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com2tag:blogger.com,1999:blog-2660272474442811704.post-31426282173330959712009-05-01T05:44:00.001-07:002009-05-15T08:02:26.112-07:00Random notes on N3, April 2009 release version<div xmlns="http://www.w3.org/1999/xhtml">I'm spending most of my time with N3, April 2009 version on these days.<br /><br />And so, drop some quick and random notes about it.<br /><br /><ol><li>IO stream should support multi-bytes or unicode. It fails to run if any directory name has multi-bytes code. e.g. Korean etc.</li><li>It used file DB but changed now to memory DB. (yes, it is type of usage of sqlite) As I know, file DB is more fast than memory one and even stable. Why have it been changed?</li><li>N3 uses compressed vertex format so any directly exported model from 3dsmax toolkit will not work correctly.</li><li>There is n3convert but it only converts .n2 to .n3 not .nvx2 and .nax2. You also need .nvx2 for mesh file and .nax2 for animation file if it is necessary.</li><li>One of good news is that, nmaxtoolkit has been modified to be compatible to the latest released N3.</li><li>But bad news is that it has not been committed yet.</li><li>Drakensang's model can be converted, not all of the models but some of them can be converted and run into the April 2009 version.</li><li>Light and Shader stuff are still broken. When? :-)<br /></li><li>All clips must be in one .nax2 file for character animation. A complex character may not have all its animations at once but it may added one by one or changed during a develop time. So it is good to support to use seperated animation data file like ncharacter3skinanimator of N2. (well, it may not have clean interface though)</li><li>There are some momory leaks.</li></ol><br />Ok, that's all right now. I'll post more after have some experiments.<br /><br /><div class="zemanta-pixie"><img src="http://img.zemanta.com/pixy.gif?x-id=539df6e7-4f57-88ce-83c5-1d7a9f3863d4" class="zemanta-pixie-img" /></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-88761777422851055092009-04-20T17:40:00.001-07:002009-05-15T08:05:40.464-07:00Quick Fix to run testgame of N3 April. 2009 version.<div xmlns="http://www.w3.org/1999/xhtml">Someone mentioned, <i>'testgame'</i> application of N3 April. 2009 version does not run.<br /><br />The following might fix the problem:<br /><br />Modified:<br /> trunk/code/application/<div class="ii gt" id=":5n"><wbr>appgame/gameapplication.cc<br /> trunk/code/application/<wbr>appgame/gameapplication.h<br /> trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.cc<br /> trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.h<br /><br />Modified: trunk/code/application/<wbr>appgame/gameapplication.cc<br />==============================<wbr>==============================<wbr>==================<br />--- trunk/code/application/<wbr>appgame/gameapplication.cc (original)<br />+++ trunk/code/application/<wbr>appgame/gameapplication.cc Fri Apr 17 14:32:54 2009<br />@@ -336,6 +336,11 @@<br /> GameApplication::<wbr>SetupGameFeatures()<br /> {<br /> // create any features in derived class<br />+ //@csy<br />+ this->graphicsFeature = GraphicsFeature::<wbr>GraphicsFeatureUnit::Create();<br />+ this->graphicsFeature-><wbr>SetCmdLineArgs(this-><wbr>GetCmdLineArgs());<br />+ this->graphicsFeature-><wbr>SetRenderDebug(true);<br />+ this->gameServer-><wbr>AttachGameFeature(this-><wbr>graphicsFeature.upcast<Game::<wbr>FeatureUnit>());<br /> }<br /><br /> //----------------------------<wbr>------------------------------<wbr>--------------------<br />@@ -346,6 +351,9 @@<br /> GameApplication::<wbr>CleanupGameFeatures()<br /> {<br /> // cleanup your features in derived class<br />+ //@csy<br />+ this->gameServer-><wbr>RemoveGameFeature(this-><wbr>graphicsFeature.upcast<Game::<wbr>FeatureUnit>());<br />+ this->graphicsFeature = 0;<br /> }<br /><br /> } // namespace App<br /><br />Modified: trunk/code/application/<wbr>appgame/gameapplication.h<br />==============================<wbr>==============================<wbr>==================<br />--- trunk/code/application/<wbr>appgame/gameapplication.h (original)<br />+++ trunk/code/application/<wbr>appgame/gameapplication.h Fri Apr 17 14:32:54 2009<br />@@ -22,6 +22,8 @@<br /> #include "http/httpinterface.h"<br /> #include "http/httpserverproxy.h"<br /> #include "timing/mastertime.h"<br />+//@csy<br />+#include "graphicsfeature/<wbr>graphicsfeatureunit.h"<br /><br /> //----------------------------<wbr>------------------------------<wbr>--------------------<br /> namespace App<br />@@ -91,6 +93,9 @@<br /> // game server<br /> Ptr<Game::GameServer> gameServer;<br /><br />+ //@csy default game features<br />+ Ptr<GraphicsFeature::<wbr>GraphicsFeatureUnit> graphicsFeature;<br />+<br /> // profiling<br /> _declare_timer(<wbr>GameApplicationFrameTimeAll);<br /> };<br /><br />Modified: trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.cc<br />==============================<wbr>==============================<wbr>==================<br />--- trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.cc (original)<br />+++ trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.cc Fri Apr 17 14:32:54 2009<br />@@ -5,7 +5,7 @@<br /> #include "stdneb.h"<br /> #include "appgame/gameapplication.h"<br /> #include "game/gameserver.h"<br />-#include "basegamefeature/<wbr>basegamefeatureunit.h"<br />+<br /> #include "basegamefeature/<wbr>statehandlers/<wbr>gamestatehandler.h"<br /><br /> namespace BaseGameFeature<br />@@ -40,7 +40,12 @@<br /> */<br /> void<br /> GameStateHandler::<wbr>OnStateEnter(const Util::String& prevState)<br />-{<br />+{<br />+ //@csy<br />+ this->defaultGameFeature = BaseGameFeature::<wbr>BaseGameFeatureUnit::Create();<br />+ App::GameApplication* app = App::GameApplication::<wbr>Instance();<br />+ this->defaultGameFeature-><wbr>SetCmdLineArgs(app-><wbr>GetCmdLineArgs());<br />+ Game::GameServer::Instance()-><wbr>AttachGameFeature(this-><wbr>defaultGameFeature.upcast<<wbr>Game::FeatureUnit>());<br /> BaseGameFeatureUnit::Instance(<wbr>)->SetRenderDebug(true);<br /><br /> // setup the game<br /><br />Modified: trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.h<br />==============================<wbr>==============================<wbr>==================<br />--- trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.h (original)<br />+++ trunk/code/application/<wbr>basegamefeature/statehandlers/<wbr>gamestatehandler.h Fri Apr 17 14:32:54 2009<br />@@ -13,7 +13,7 @@<br /> (C) 2003 RadonLabs GmbH<br /> */<br /> #include "appgame/statehandler.h"<br />-<br />+#include "basegamefeature/<wbr>basegamefeatureunit.h"<br /> //----------------------------<wbr>------------------------------<wbr>--------------------<br /> namespace BaseGameFeature<br /> {<br />@@ -61,6 +61,8 @@<br /> Util::String exitState;<br /> Util::String levelName;<br /> Util::String saveGame;<br />+ //@csy<br />+ Ptr<BaseGameFeature::<wbr>BaseGameFeatureUnit> defaultGameFeature;<br /> };<br /><br /> //----------------------------<wbr>------------------------------<wbr>--------------------</div><br /><br /><div class="zemanta-pixie"><img src="http://img.zemanta.com/pixy.gif?x-id=7cd86464-1b86-86cd-a2bd-1f1ebf4ce636" class="zemanta-pixie-img" /></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com3tag:blogger.com,1999:blog-2660272474442811704.post-75657501457402676112009-04-15T06:05:00.001-07:002009-04-15T06:07:48.035-07:00Nebula2 3DS Max Toolkit Update<div xmlns="http://www.w3.org/1999/xhtml">There are some update on nmaxtoolbox.<br /><br /><div align="left"><ul><li>Now, it can solely export animation data file(<span style="font-style: italic;">.nax2</span> or <span style="font-style: italic;">.nanim2</span>) without .n2 or mesh files.</li></ul><ul><li>Changed to export <span style="font-style: italic;">nskinanimator</span> first so it locates before any <span style="font-style: italic;">ntransformnode</span> or its derived node in .n2 file.</li></ul></div><ul><li>It now supports <span style="font-style: italic;">ncharacter3skinanimator </span>(but now <span style="font-style: italic;">ncharacter3skinshapenode</span> yet)</li></ul><ul><li>Fixed a few minor bugs around here and there.</li></ul><ul><li>Modified to find 'nmaxtoolbox.ini' file in the '$3dsmax/scripts/nebula2' if it fails to read the file in the '$3dsmax/scripts/plugcfg' directory. Under Vista, the 'plugcfg' directory is located under different directory.</li></ul><ul><li>Now it does not use custom attribute's vertex option. If an artist specify any unknown custom attribute which does not contain vertex option, the plug-in only exports vertex position.</li></ul><br /><br /><div class="zemanta-pixie"><img src="http://img.zemanta.com/pixy.gif?x-id=79d27da0-d40b-8a65-b64c-92adb46a0f3b" class="zemanta-pixie-img" /></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com6tag:blogger.com,1999:blog-2660272474442811704.post-67072332710411951022009-03-07T05:51:00.001-08:002009-05-15T08:04:16.190-07:00Build Nebula3 on OS X<div xmlns="http://www.w3.org/1999/xhtml">Here is description on building Nebula3 on OS X:<br /><br />1) Check out Sep. Nebula3 from <a href="http://code.google.com/p/nebula3/">Nebula3 google code site</a>.<small> <big>You shoud t</big></small><small><big>he svn link for <b>"https://</b></big></small><b>nebula3.googlecode.com/svn/branches/Porting"</b> to get OS X ported stuff.<br />2) Next, You need CMake tool to build the Nebula3 stuff. You can download it from <a href="http://www.cmake.org/cmake/resources/software.html">here</a>. (Download Mac OSX Universal dmg file, mostly it works fine.)<br />3) Mount the downloaded dmg and install CMake tool.<br />4) Now, time to generate Xcode project file from CMake. It might be good to make seperate directory which contains all CMake generated build files. I created 'xcode' directory under 'code' directory so the directory is that - "$nebula3/code/xcode".<br />5) Open any terminal and move to the created 'xcode' directory.<br />6) Type the following "<span style="font-weight: bold;">cmake -G Xcode ../</span>" This makes all necessary Xcode project files under the 'xcode' directory।<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Tn4v0baw_w3EvCI9kBhRVgiE337XpwfSj2oXda-VR4OfQtgwP5Qn-SYMnmQp7Dob5_T0QmmknFmocXAVBNY4w0nZF-SiixXfK4U_RLoBkmvGuFClEsGB8xYUmgFN0tMJGOf4TfSgnmTH/s1600-h/terminal_n3_xcode.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 468px; height: 339px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Tn4v0baw_w3EvCI9kBhRVgiE337XpwfSj2oXda-VR4OfQtgwP5Qn-SYMnmQp7Dob5_T0QmmknFmocXAVBNY4w0nZF-SiixXfK4U_RLoBkmvGuFClEsGB8xYUmgFN0tMJGOf4TfSgnmTH/s400/terminal_n3_xcode.png" alt="" id="BLOGGER_PHOTO_ID_5310446108381341714" border="0" /></a>7) Open 'Nebula3', created Xcode project file.<br />8) Finally, Build.<br /><br /><div class="zemanta-pixie"><img src="http://img.zemanta.com/pixy.gif?x-id=812ef296-d511-4868-9ec1-67c5b1d2a565" class="zemanta-pixie-img" /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi34FVxdpIb2KttDdiqsplzgZbS__3n6iIJrYr_1zgeIXkXLICHUo97Vd8kNAyIweslpdK3ZBr_L0DcnhGc-GxQ_4OAGSuXqUv2W_9HgRXx0qzPG-aHOhw6Ux0WyUyR0uYsArp9C5iA_B7E/s1600-h/n3_xcode.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 455px; height: 304px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi34FVxdpIb2KttDdiqsplzgZbS__3n6iIJrYr_1zgeIXkXLICHUo97Vd8kNAyIweslpdK3ZBr_L0DcnhGc-GxQ_4OAGSuXqUv2W_9HgRXx0qzPG-aHOhw6Ux0WyUyR0uYsArp9C5iA_B7E/s320/n3_xcode.png" alt="" id="BLOGGER_PHOTO_ID_5310447316709783778" border="0" /></a></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-48720261186191927772009-02-25T03:50:00.001-08:002009-05-15T08:04:41.652-07:00Nebula3 with wxWidget - #1On VisualStudio, Nebula3 set up <b>_fastcall</b> for its calling convetion but wxWidget defaultly uses<b>_cdecl</b> for that. It might cause link error if both of setting is different.<br /><br />So you should set up same calling convention to avoid the link error problem. (not sure the exact errors but it contains wxConsoleApp related unresovled link errors)Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-43961691660993411272009-02-24T14:19:00.001-08:002009-02-24T14:27:01.010-08:00Nebula3 Network - RakNet for MMOG<div xmlns="http://www.w3.org/1999/xhtml"><br />My team recently reported that RakNet does not support IOCP and only runs on single threaded environment. Yes, using IOCP is server side problem not for client side though it is good to use same network driver model on both of the sides. Mostly it is for maintenence issues. Because as you know, IT IS MMOG! :-)<br /><br />I guess RadonLabs used RakNet for their DrakenSang and it might be sufficient for P2P based multi-player game such as DrakenSang but not for MMOG.<br /><br />So still need to hunt any good network framework for that...<br /><br /><br />A few years ago, for the age of N2, I designed network property(entity component of Managalore game framework) which uses OpenTNL. It was designed by me and written by John Smith. (Thank you John even he was willing to share it but not committed yet though) It have similiar problem to use for MMOG even though it is not so good to learn and understand due to have very steep learning curve.<br /><br />It might be good if N3 has some very nice network module which widely can be used(it means scalability of the network engine) and is suit for any game genres even it is RPG or FPS.<br /><br /></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com1tag:blogger.com,1999:blog-2660272474442811704.post-38958609185515155702009-02-23T07:47:00.001-08:002009-02-23T07:59:18.303-08:00Idea on Nebula Tool - Database system<div xmlns="http://www.w3.org/1999/xhtml"><br />Recently <a href="http://flohofwoe.blogspot.com/2009/02/n3s-game-database-structure.html">Floh posted database system</a> of N3 on his blog। Most of the features are very like to N2'. To maximize its merit, it is good to make a tool for it. <br /><br />Basically we need three different kind of tool for Entity. Let's see them.<br /><br />1) Object Palette<br />2) Object Browser<br />3) Object Property view<br /><br />The first thing, "Object Palette" is needed to make an game object in the game world. In most case tree control is sufficient for this purpose. And those information can be retrieved from <b>"_Category"</b> table of database file. It is for creation of an entity in the game world.<br /><br />The second thing, "Object Browser" contains all game objects list. And those information can be retrieved from <b>"_Entities"</b> table of database file. Tree control is also used for this but it should provide search functionality which used for finding object with its given name.<br /><br />The last thing, "Object Property view" runs when user double clicked any object in object browser. And it shows all properties of the selected object. As you can guess Property window control is used for this data. <b>Columns</b> of the table in the database file are used to fill entries of the properties.<br /><br /><div class="zemanta-pixie"><img src="http://img.zemanta.com/pixy.gif?x-id=d2c6b4d7-388b-40d1-b1ca-6aa5f7b733b6" class="zemanta-pixie-img" /></div></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-43386310469270791562008-06-04T18:32:00.000-07:002009-05-15T08:05:22.789-07:00Difference of Entity System between Nebula and Zombie Engine<p id="f-6l1">The primary difference between them is the way plugging behaviors of a entity. <a id="h-n3" title="Nebula" href="http://www.nebuladevice.org/">Nebula</a>, actually it is Managlore though, provides a mechanism which can dynamically compose behaviors of an entity at a beginning of an application. Not likely that, a programmer should statically declare entity's behaviors in a source code in <a id="i3cp" title="Zombie" href="http://thezombieengine.sourceforge.net/">Zombie</a>.</p><p id="lxzz0"></p><p id="q3460">There is another difference in communication between classes. Mangalore provides the message system which is used for communication between each of properties. It helps decoupling of properties so it makes the system to be flexible and reusable. But Zombie directly calls functions of other component inside of a component.</p><p id="sim30"></p><p id="lxzz1">@terminology<br />In Magalore, behavior of an entity is called for <i id="cw8n0">'Property'</i> though it is <i id="cw8n1">'GamePlay Component'</i> in Zombie.</p>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-20604293814707384452008-05-22T04:01:00.000-07:002008-05-22T04:09:14.978-07:00GUI Framework for Tool Chain of Nebula3<p id="vlhu0"></p><p id="nv8o0">I concentrated to make the asset tool called '<i id="nv8o1">nmaxtoolbox' </i>during age of Nebula2. I know there might be still lost of things to improve(Please, be patient ;-) The next step from me on Nebula3 also might be about tool like the previous time. For that, the first thing what I research in my spare time is things about designing level editor-you might want to call it as scene designer or whatever-especially with wxWidget.</p><p id="vb4w1"></p><p id="dtim0">Even though making a level editor such as contents authoring tool is looked like being on the opposite site to the Nebula philosophy - Make it simple as it possible as it can be and using any existing things not reinventing a wheel - but I feel it is right way for a large scale size of project such as MMORPG. (I have lots of things to say about that issue so I probably post those things in near future)</p><p id="svmc1"></p><p id="svmc2">Thus again, like the some age of N2, I'm planning to write stub code to integrate wxWidget into Nebula3. We, the community already have some simple yet powerful Apps written with wxPython and know how to tweak wxWidget to integrate into Nebula. So I guess there might be no difficult things which need hard research.</p><p id="so_g0"></p><p id="so_g1">Saying more exactly, what I'm considering is using <a id="oc7p" title="wxLua" href="http://wxlua.sourceforge.net/">wxLua</a> not C++ library of wxWidget due to Nebula3 changed its primary script language to Lua from Tcl.</p>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com1tag:blogger.com,1999:blog-2660272474442811704.post-61289947655941604262008-04-11T19:36:00.000-07:002008-05-22T04:03:25.818-07:00Postmortem: Contributing on ShaderX<div id="ij:-" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: center"><a id="fdnu" href="http://www.blogger.com/File?id=dddd8454_48gxtjjchq_b" target="_blank"><img id="gvkk" style="WIDTH: 320px; HEIGHT: 320px" src="http://docs.google.com/File?id=dddd8454_48gxtjjchq_b" /></a></div><p id="mcsc"></p><div id="n3zn" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">A pretty time has been passed since I've wrote the article, <span id="tj_-"><i id="zwth">"</i></span><span id="fh-8" style="font-family:Arial;"><i id="stzb">Shader System Integration: Nebula2 and 3ds Max</i></span><span id="w32_"><i id="taf-">"</i></span> on <a id="cb9c" title="ShaderX5" href="http://www.shaderx5.com/">ShaderX5</a>. So I decided that it is worth to mention how it was and what one should do to contribute an article especially for whom does not use English for their primary language.<br id="ta7i"><br id="hji0"><span id="pqmr" style="font-size:100%;"><span id="chgd"><b id="p5..">How does it start?</b></span></span><br id="f4ed"><br id="iq_f">It is not too difficult to contribute an article on ShaderX. So don't be afraid to give a proposal when you see a line such as "Call for author..." on <a id="rgkc" title="GameDev" href="http://www.gamedev.net/">GameDev</a> or other website. Mostly the sign of calling authors is shown at the end of the year. So if you have any interest to contribute, you should give attention during those season.<br id="p4dw"><br id="t0mr">Letting me introduce the call for shaderx7 to you might be more helpful to understand. See the following: (also available on <a id="qesz" title="this" href="http://www.gamedev.net/community/forums/topic.asp?topic_id=481478">this</a> )<br id="yefk"></div><div id="h7_n" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><span id="e6.5"><i id="u:da">After the success of ShaderX, the ShaderX2 books, ShaderX3, ShaderX4 (Game developer frontline award), ShaderX5 and soon ShaderX6, we are looking for authors for ShaderX7. </i></span><br id="afap" style="FONT-STYLE: italic"><span id="o0o3"><i id="hw4u">The book will cover advanced rendering techniques that run on the DirectX and/or OpenGL run-time with any shader language available. It will include topics on: Geometry Manipulation; Rendering Techniques; Handheld Devices Programming; Effects in Image Space; Shadows; 3D Engine Design; Graphics Related Tools; Environmental Effects.</i></span><br id="jjhb" style="FONT-STYLE: italic"><span id="fcs1"><span id="q1ng"><i id="mrln"><u id="guc0">Proposals are due by February 28th, 2008.</u></i></span><i id="qdiz"> Please send them to wolf at shaderx.com. An example proposal, writing guidelines and a FAQ can be downloaded from www.shaderx6.com/ShaderX6.zip. The schedule is available on www.shaderx7.com.</i></span><br id="wf.q"><br id="yzl2">As you can see the above, the due date is end of February of the year. Considering the date when the call mostly is posted is December, you really have bunch of time to preparing proposal. =)</div><p id="afsm" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><span id="rxr:" style="font-size:100%;"><span id="a6nz"><b id="wkq0">What should I do for it?</b></span></span><br id="ee:p"><br id="g9td">Now, it is time to say about writing the article. If you want to contribute, you should already have not only solid knowledge on the subject what you want to contribute but also experiences with it. At this point, I highly recommend you already have tried and well tested then applied the tech on your side. If you just start to write not the article but the code for application after the proposal is accepted it might be ended up that you exceed the deadline. Two or three months are given to you for writing. But it is prefer to submitting the article as early as you can. Because the section editor should examine not only your article but also other's. Also you may need to modify over several times to finish it. So you should not write the article and any code of sample application at the same time. There is not enough time to do both at once. <br id="ffg2"></p><p id="afsm" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">There is an important issue about language if you are not a native. I'm Korean so however I try or imitate, it is hard to have nature tone and style like native in writing for me who such as even an oriental due to a big gap between two culture. But don't afraid. It is just a technical writing not for a novel or poem. You only need to write down as easy as it is possible. In my case, after get my first draft I dropped it to one of the Nebula developer in the community. As you can imagine he is not only a native but also has good technical knowledge so he could help the article to be more plain English before sending to the section editor. Yes, also the section editor is left. He has not only good technical knowledge but also is good writer. Even I really surprised he finally edited my article and give it back to me again - how does it can be changed to be read more easier. The only things what he just done are slightly replacing some words and editing several lines.<br id="xtu7"><br id="mvkg">By the way, the hardest thing ever I had was not about writing but getting taxpayer id. The Publishing company provided some papers such as W-8BEN then required taxpayer id which should be obtained from U.S. Federal. When I got those papers, I were totally screwed up. Some of thing on the paper was hard to understand for me, an Korean. But you don't have to worry about it. Because you don't need to get US taxpayer id which is responsible to U.S. Federal tax law. It is only needed if your income exceeds more than two million dollars. So don't worry about that which will not happen. :-) (By the way, the total amount of maximum income needs taxpayer id can be changed at the time you may need it.)<br id="cbcq"><br id="vs6m"><span id="vs5l" style="font-size:100%;"><span id="ri6j"><b id="i2jw">What do I get from?</b></span></span><br id="cgwl"><br id="m0ye">This is a story about the motivation. Which will lead you to write and contribute? What did you expected from the contribution? OK, let's be honest. Money? I already answer in the above. =) <br id="dzr.">If you expect you might change a car by contributing your article, you should NOT. I recently received a check for the royalty of the last year. Saying the amount of the money, it is possible to eat Big Mac for every lunch during a month.(assume the price of Big Mac is about $2.5) Enough rewards? :-) <br id="lo_8">After receiving the check, rush to a bank and exchange it. Do not put the check into your desk and wait till the exchange rate goes up. There is no time limitation in exchanging a check in Korea but not in US. It is only valid within six months.<br id="gv13"><br id="rw8p">One of the great experience was peer review between me and the section editor, <span id="t-xp" style="font-family:Arial;"><i id="i3_e">Wessam Bahnassi </i></span><span id="us33" style="font-family:Arial;">who start to review right after the first draft is sent.(Find his name if you have all ShaderX series how many time you can find his name. =) He was very instructive so it make me to have an opportunity to make my subject to be even more solid.</span><br id="tw_-"><br id="t1vv">Another thing you may get is that the invitation for a meeting for the authors from the publishing company, <a id="u2e2" title="Charles Rivers Media" href="http://www.charlesriver.com/Books/Features.aspx"><i id="t8g-">Charles Rivers Media(CRM)</i></a>. The meeting is held during GDC. So if you can go and join to meet other contributors, it would be wonderful.<br id="sh52"><br id="gkyw">Forgot to mention one more thing left. You will get a line to add on your resume. ;-)<br id="mepa"><br id="yl2e"><span id="ssmv" style="font-size:100%;"><span id="oze6"><b id="f9-y">Conclusion</b></span></span><br id="vd9q"><br id="o22m">If you have a creative and solid knowledge what you are willing to share, I guess, English should not be an obstacle. But even do not dream you can contribute if you have not been constantly writing articles or essay in your every usual days. Needless to say, you also should read lots of books. Remember, having an habit for writing makes a good article. Do you still ramble or hesitate to write? Sit down and start to write right now. Lastly, keep in mind - <span id="fd6x"><i id="oj4x">"Technical writing should not be difficult!"</i></span><br id="xe:b"></p><div id="blmw" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 1em; MARGIN-LEFT: 40px; PADDING-TOP: 1em; TEXT-ALIGN: left"></div>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-37147530973421859032008-04-09T08:27:00.000-07:002008-04-09T08:36:42.838-07:00Annotations on some 3D enginesIf you are still rambling to find open source 3D engine, this may give a light:<br id="qdw8"><br id="ut-j"><a title="Porting an Open-Source Engine to the iPhone?" href="http://diaryofagraphicsprogrammer.blogspot.com/2007/12/porting-open-source-engine-to-iphone.html" id="wn_6">Porting an Open-Source Engine to the iPhone?</a> <br id="jsa-"><br id="yxap"><a title="Wolfgang Engel" href="http://diaryofagraphicsprogrammer.blogspot.com/" id="js.j"><i>Wolfgang Engel</i></a> is the editor of famous graphics book, ShaderX series.<br id="pspr">And Don't miss the comments below the main page! :-)<br id="w424"> <br id="d07d"><br id="whsn">Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-54312046622139588382008-04-09T00:32:00.000-07:002008-05-22T04:03:56.130-07:00Nebula recent news<span id="pi48"><b id="qalf">Nebula3 in Progress Status of the communtiy:</b></span><br /><ul id="zcax"><li id="o_59">Currently Bruce M. have set up N3 related pages for blogging, version control with Mercurial on his new machine to prepare N3 community.</li></ul><br /><br /><span id="jzsk"><b id="dqgv">Personal Nebula related issues and interesting:</b></span><br /><ul id="l80-"><li id="al04">A 12 hours course for Nebula2 game engine is scheduled on June at GAME ACADEMY institute in Seoul, Korea.(yes, I'm the instructor =)</li><li id="al04">So, I'm heavily writing doc for the course on my spare time at these days.<br id="chs_"></li><li id="al04">Some part of the doc may be released to public but it it written by Korean.</li><li id="al04">I have a plan to do some experiments on art pipeline with a few artists who I know for Nebula2.(Not sure it might be shared or not at the moment)<br id="yv.g"></li><li id="al04">Considering to adopt other physics engine not ODE but Ageia PhysX or <a id="k3wh" title="Havok" href="http://www.havok.com/content/view/582/53/">Havok</a> both are freely can be available now.(But Havok is exactly not free for a commercial project though)<br id="jw:h"></li><li id="al04">There's lack of supporting on the tool-chain for a physics part of Mangalore game framework. Recently <a id="rd9y" title="Scythe" href="http://www.physicseditor.com/">Scythe</a>, a modeling tool for physics engine turned its license policy and now it is open source project. I hope to review and know how it is well fit with Nebula.<br id="sazy"></li><li id="al04">Improving on Nebula 3DS Max Toolkit. (already have some ideas, I'll post later on that)</li><li id="al04">One who I know has suggested to make a flexible level editor for Nebula. There is a good model for this - <a id="cbsw" title="visit the site" href="http://www.quadsoftware.com/">visit the site</a>. I already dropped the email and discussed on their customized editor with the leader programmer.(Though not for Nebula but our internal project) Even not only their product seems to be good but also they have a good business model. And I have another thought for their Grome Editor - they already supports Torque so why not for Nebula? =)<br id="v7p_"></li></ul>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-50165911729709571492008-04-05T08:58:00.000-07:002008-04-05T09:33:57.076-07:00DVCS - Does he can be a relief man?When I was heavily participated to the project, <a title="NebulaDevice2" href="http://nebuladevice.cubik.org/" id="cokm">NebulaDevice2</a>, one of the most painful but could not avoid thing was that merging stuff from <a title="Radonlabs" href="http://www.radonlabs.de" id="xqo8">Radonlabs</a> to the <a title="open source community" href="http://sourceforge.net/projects/nebuladevice/" id="t92p">open source community</a>. It was not a problem only to me but to everyone who involved that project. Even the company used <a title="CVS" href="http://ximbiot.com/cvs/cvshome/" id="kow4">CVS</a> for their VCS but open source community on SourceForge used <a title="SVN" href="http://subversion.tigris.org/" id="w_:1">SVN</a>. So all patches sent to merge should be done manually. <br id="ytrm"><br id="rmp6">And now, I suffer with almost same problem on my official project which is serviced over several countries. We uses SVN but as it is known, SVN does not well fit with branching. Due to that lack of the feature, it is hell to maintain all that different versions.(Damn, there are more than 10 different stream we should manage!)<br id="cxz0"><br id="vgbh">Recently the concept of DVCS is raised to solve such a problem of traditional centralized VCS. At the first glance, the concept behind DVCS was not much clear but it was not after reading <a title="this article" href="http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/" id="hkpr">this article</a>.(highly recommended for one to learn DVCS) In term of having distributed repositories it seems to provide easy way to merge from various work stream.<br id="u65v"><br id="d6di">Another story on DVCS:<br id="iwwc">There was already an issue to use <a title="Mercurial" href="http://www.selenic.com/mercurial/wiki/" id="qv58">Mercurial</a>, one of DVCS solution, for Nebula3. It is not sure to use that for the N3 for the Nebula community at the moment though but there might be many chances. Thus I'm seriously considering to use Mercurial(or any other DVCS if there is better one) on my official project.<br id="ya:5"><br id="y4pk">I'll occasionally post later about any problem or issues concerned with the service of MMO game especially for its version controlling.(not so easy as it looks =)<br id="cqul"><br id="n6ve">Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0tag:blogger.com,1999:blog-2660272474442811704.post-9575967787562711622008-03-25T17:27:00.000-07:002008-04-05T09:28:59.955-07:00About me<p align="justify"> </p> <p>Hello and welcome to my blog. My name is <i>Kim Hyoun Woo</i> who has been worked on game industry. You may think <i>'Kim'</i> is my name but <i>'Kim'</i> is last name but we, Korean has reverse order on the way his or her name. Most of them uses reverse order such as Hyoun Woo Kim but I prefer and feel comfortable on our way.<br /><br />Most of what I post in here might be about Nebula Device, the open source 3D engine what I really have interesting on and keep trying to constantly contribute and all about productive activities on game production especially engineering point of view.</p> <p> </p> <p>On another posts, it might be about MMO. Currently I'm living in Seoul, South Korea and working on MMORPG. Yes, I'm living in the capital of MMOs. ;-) So there is also one of my major interesting which is about game development process of MMO game especially its constant development management after its launching. The problem on that might be not a common on other side either North America or Europe where console and PC packages are main platform. So either I may post such those things.<br /></p> <p>Glad to see you.<br /><br />@About history to 'kimsama'.<br />That seems to be early or middle of someday in1997 when I made the account on the BBS with that name. There was not any serious intention or hide meaning when it was created but just for some fun. Yes, as you know well, the post-fix <i>'-sama'</i> is for an honor in Japanese.(I am not Japanese though!) And after that it became to widely spread and be popular as the word - <i>Yonsama</i> due to the famous actor, <a href="http://search.naver.com/search.naver?where=nexearch&sm=tab_etc&query=%B0%DC%BF%EF%BF%AC%B0%A1"><i>Bae Yong Jun</i></a> with his drama is getting to have mega hit in Japan. So what's the point I want to mention is that my account name is really have no relationship with <i>Yonsama</i> even I used it before he got the nick. ;-)<br /></p>Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com2tag:blogger.com,1999:blog-2660272474442811704.post-77145789403617858682008-03-17T17:04:00.000-07:002008-03-20T08:36:39.557-07:00another blog of mine...There's another blog of mine in <a href="http://kimsama.egloos.com/">here</a>. (But some of old post are not available for English readers though due to it was written by Korean)Kim, Hyoun Woohttp://www.blogger.com/profile/05928208939467973734noreply@blogger.com0