Transcript
Page 1: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

1

TechnicaldemonstrationDocument.

JaeHyukKwak

Thisdocumentistoshowmytechnicalfluency.IhavedescribedfiveprojectsthatIhaveimplementedinlasttwoyears.Allsourcecodesareavailabletothepublic,sothatanybodycanseemycodingstyleandprogrammingfluency.

1. Billiardgame

2. Myvideotracer

3. Raytracing

4. Airflightwebpage.

5. Courseworkvalidationsystem.

Summary

Project DemonstratingTechniques

Billiardgame PhysX,Collada,DirectX9,HLSL,OpenAL,C++

MyVideoTracer OpenCV,GoogleTest,GUI,C++

RayTracing JOGL,OpenGL,GLSL,Java

Airflightwebpage SpringFramework,Hibernate,HyperSonic,Ant,Axis2,GoogleMap2,Tomcat,JavaScript,EJB

Courseworkvalidation

AJAX,Dojo,JavaScript,FireBug

Note:ThisdocumentdoesNOTincludeanycompanyprojectsduetoNDA.Itdescribesonlymypersonalprojects.

Page 2: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

2

BilliardgameThisprojectistoshowmytechnicalfluencyofseveralgameprogrammingskills.ThisdocumentwillexplainhowIhavedesignedthebilliardgameandwhattechniquesIhaveused.

Avideodemonstrationisavailableonmyblog:http://wrice.blogspot.com/2009/09/billiard‐game.html

Usedtechniquesa. PhysX

b. Collada

c. DirectX9

d. HLSL

e. OpenAL

f. MicroSoftC++/CLIUnittestingtool

g. C++std::tr1library

Screenshots

Page 3: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

3

Page 4: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

4

ContentsPipelineContentspipelineispipelinethatgamecontentspassthrough.Underateamdevelopmentenvironment,severaldifferentteamsneedtocooperate.Forexample,onegamemodelcontentwillbegeneratedbyadesignerthenitwillbepassedtoaprogrammerandtheprogrammerwillloadthedatatoshowvisualresultongameapplicationandfinallythegameapplicationwiththegamemodelcontentwillbeshowntogameleveldesigner.Theprocesscanbeconsideredasapipelineprocess.

Therefore,underateamdevelopmentenvironment,itisimportanttobuildagameapplicationtoallowintegrateteamactivity.Colladahasemphasizedonthecontentspipeline,butIfoundthatitdoesn'tfittoDirectXgamedevelopmentprocess,sothatIhavemadeafewmodification.Thisprojectistoshowhowtointegratesuchteamenvironment.

Asthediagramaboveshows,agamedevelopmentteamcanplayeachdifferentrole.Intheprocess,eachroleneedstohavewaystocommunicate.Ihaveadoptedthreestandardways:Colladaformodeldata,PhysXforphysicsgeometry,andEffectFrameworkforshaderprograms.

Page 5: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

5

ModeldataIhavechosentouseColladaXMLstandardformodeldata.ColladaiswelldocumentedgameindustrystandardXMLformat.Therearealreadywellimplementedplug‐insforcertainDCCssuchas3DSMaxandMaya.

NotethatcurrentlyIhaven’tseenanyColladaimplementationforDirectXinC++.MostofthemareimplementedbasedonOpenGLorXNA.

PhysicsIhavechosennVidia’sPhysXformyimplementation,becauseithasbeenbroadlyusedforcommercialgames.PhysXoffers3DSMaxandMayaplug‐ins.Itgeneratessufficientdataforphysicgeometryinformation.Thusinaactualteamenvironmentprogrammersdoesn’tneedtosynchronizethegapbetweenphysicsgeometryandvisualgeometry.

Vertex/PixelShadersTheprojectheavilyreliesonEffectframework.Oneofthereasonsisthatthereareshaderprogrammingtoolsforeffectframework.Oneofthem,NVidia’sFXComposer,didn’tworkonmyhardwaresothatIhaveusedRenderMonkeyandexportedmyshaderprogramsasEffectfile(*.fx).

Theeffectfilesareusedforthegameapplication.Thiseffectfilecanalsobeimportedonto3DSMax.

GeneralStructureAsmanygameenginessupportsmulti‐platforms,thedesignofmyprogramalsotakescareofplatformindependencybyseparatinginterfacesfromimplementation.Althoughtheconceptofmoderngameenginehasbeenenlargedalot,mydesignapproachcanbeconsideredasasmallgameengine.Theinterfacesarealsocategorizedbythreedifferentabstractlevels:Abstractenginelevel,OSdependentlevel,andGraphicsAPIdependentlevel.

Page 6: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

6

ThearchitecturecanhidespecificplatformorgraphicsAPIsfromgameapplicationdevelopersaslongasthegameapplicationusesonlyabstractengineinterfaces.Theactualgameapplicationwilluseonly“Abstractengine”part,thenitissupposedtoberunningonotherplatformsandothergraphicsAPI.

Sincethisprojectistodemonstratemytechnicalfluency,Iwishedtoimplementforeverycomponents.However,timewaslimitedandIhadtoendupwithimplementingDirectX9partonly,sothatIhavefinished“DirectX9”,“Windows”,“Abstractengine”partsandonebilliardgameapplication.

ShaderProgrammingThisprojectisalsointendedtoshowmyshaderprogrammingskill.Unfortunatelymyhardwarehadacertainlimittousecomplexshaderprograms,sothatIhaveimplementedonlythreeshadereffects.

a. Phongtexturedshader.

b. Shadowmapshader.

c. Depthcullingshader.

Eachballsinthebilliardgamehasitsownphongtexturedshader.Theyareprojectedontoshadowmapfromtheperspectiveofalight.Thentheshadowmapisusedtodrawshadowsonthepooltable.Inadditiondepthcullingshaderisusedtocullgeometriesbeforeactualcolorsaredecided.Itisusedtodraweveryobjectfromthecameraperspectiveontodepthbufferandthedepthbufferisreusedtocullactualpixels.

Page 7: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

7

SourcecodeThesourcecodeisonGoogleCode,sothatanybodycanaccesstoit.

http://code.google.com/p/mybilliard01/

RequirementsThesesoftwaremustbeinstalledtoruntheprogramcurrectly.

1. PhysX:http://developer.nvidia.com/object/physx_downloads.html

2. OpenAL:http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx

3. DirectX9c:http://www.microsoft.com/downloads/details.aspx?FamilyID=2DA43D38‐DB71‐4C1B‐BC6A‐9B6652CD92A3&displaylang=en

4. VisualStudio2008FeaturePackforTR1library.

Page 8: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

8

MyVideoTracerThisprojectistogenerate3Dmodelingdatafrom2Dmovieclipfiles.

Oneofgameconsole,Wii,hasbecamepopularbytheinnovativeinputinterface.AndveryrecentlyMicrosofthasdevelopedNatalproject.TheybotharetheresultofComputerVisiontechnology.Itisnothardtoimaginethatthedemandforcomputervisionprogrammingwillincreasesoon.Ihaveimplementedtoshowmytechnicalfluencyforcomputervision.

InSiggraph2007oneofpapersintroducedanovelsoftware,VideoTracer,generating3Dmodeldatafroma2Dmovieclipwithsmallamountofmanualtask.However,thesourcecodeandevenbinarycodesnotopentothepublic.Thisproject,MyVideoTracer,isonethathasthesimilarfunctionalityandopentothepublic.Ihaveimplementedthisprojectformytermprojectincomputervisionclass.

Avideodemonstrationisavailableonmyblog:http://wrice.blogspot.com/2009/05/result‐of‐my‐term‐project.html

Usingtechnologiesa. OpenCV

b. Googletest

c. WWWDOMModel1,2,3forGUIimplementation

d. C++inMac

Screenshots

Page 9: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

9

GUIimplementationAbigportionofthisprojectisactuallyaboutgraphicuserinterface.Thereisnoplatformindependentandflexibleenoughtobeusedforgamesoftware.Itisbecausegamesoftwarerequiredtochangelookandfeeldependingonwhatthegameis.Forexample,oneofthefamousGUIdevelopmenttoolkit,QT,doesn’tofferanymeanstochangethecolororbehaviorofeachbutton.JavaSwingalsooffersplatformindependentwayofgraphicuserinterfaceprogrammingway.However,thelookandfeelonWindowsisdifferentfromthatofMacorLinux.

Therefore,gamedeveloperswhofacetoimplementGUIpartontheirowngamesufferslackoflibrariesallthetime.IhavedesignedandimplementedaGUIlibrarytobeflexibleenoughforgamedevelopment,althoughmostofimplementationsarestillnotdone.

ThegeneralarchitectureoftheGUIpartismainlyfromWWWDOMmodelver.1.0.IfoundthatmanyofprogrammersarealreadyveryfamiliartoprogramminguserinterfaceonwebbrowserandthedesignofDOMisnotlimitedtowebbrowser.

ResultTheresultofthisprojectwasverysuccessful.Thereisamovieclipfordemonstrationonmyblog:http://wrice.blogspot.com/2009/05/result‐of‐my‐term‐project.html

Unfortunatelytheprojectisclosedwithoutclearlyfinishingupthelastpart,sothatonewhogetthesourcecodebySVNwillfindthatsomeofunittestingcodesareusedasmainprogram.ItwasbecauseIwasunderstricttimeconstrainandhavefinishedonlyforpresentationperpose.

SourcecodeSourcecodeisavailableonGoogleCode:

http://code.google.com/p/mysimplevideotrace

DocumentsIhavemadeaformaldocumentasmyfinalreport:

Page 10: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

10

http://mysimplevideotrace.googlecode.com/files/TermReport.doc

Ihaveuploadedmypresentationfile:http://mysimplevideotrace.googlecode.com/files/Presentation1.ppt

RequirementsInordertocorrectlycompileoneneedtoinstallGoogleTestandOpenCVlibrary.

ThereisnoplatformdependentcodebutIhaven’ttestedtheprogramonWindowsorLinux.IwillrunonMacasitdidonmycomputer.

Page 11: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

11

RayTracingThisprojectistoshowmytechnicalfluencyforcomputergraphics.TheprojectdrawsthreespheresonascreenanduserscanadjustpositionandcolorswithSwinginterface.TheprojectisimplementedinJavausingJOGL,GLSLandSwing.

Anotherexplanationcanbefoundonmyblog:http://wrice.blogspot.com/2008/05/raytracing‐program.html

Usingtechnologiesa. JOGL(OpenGLforJava)

b. GLSL(shaderlanguageforOpenGL)

c. Swing(GUIlibraryforJava)

Screenshot

Thisprogramwillrunveryslow.Itisbecausemostofcalculationsaredoneonsystemmemory.Inotherwords,althoughitusesgraphichardwareprocessunits,manyofcalculationsaredonebyCPUstill.

Notethatthisprojectimplementedreflectionandrefractionbytransparency.

Page 12: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

12

Documentationhttp://pds8.egloos.com/pds/200805/03/02/graphics.tgz

Sourcecodehttp://pds9.egloos.com/pds/200805/03/02/jayRayTraceSrc.tgz

RequirementsThisprogramrequiresJava3Danditshouldbeinstalledmanually:http://java.sun.com/javase/technologies/desktop/java3d

Page 13: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

13

FlightbookingsystemThisprojectwasoneofmywebprogrammingprojects.Itwastodevelopaflightbookingwebsitewithsomeofnewtechnologies.Anotherexplanationcanbefoundonmyblog:http://wrice.blogspot.com/2008/12/flight‐searching‐system‐on‐j2ee.html

ItwasfirsttimeformetouseSpringFramework,butIfoundthattheframeworkwasverypracticalanditsupportsunittestingverymuch.IlikedtheSpringFrameworkandIbelieveitsavedmytimeverymuch.

Usingtechnologies:a. SpringFramework

b. HibernatepersistenceframeworkwithHyperSonic

c. Log4j

d. Antbuildingsystem

e. Axis2

f. GoogleMap2

g. TomcatandEJB

Screenshots

Page 14: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

14

Sourcecode:ThesourcecodeisavailableonGoogleCode:http://code.google.com/p/weneedourownproject

RequirementsTheprojectiswrittenforTomcatserver.

Page 15: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

15

Courseworkvalidationsystem.ThiswasoneofmyprojectsfromUserInterfaceclass.Theprofessoraskedustodevelopanwebpagethatcanvalidationwhetherornottheclassthatstudentsselectedmeetstherequirementsfortheircoursework.Forinstance,onemaynotbeabletograduatewithouttakingmandatorycourses.Theprofessorwantedustomakethewebpageeasyandtoreducemistakesfromusers.

IchosetouseAJAXtoimproveinteractivity.Youcanfindanotherexplnationfrommyblog:http://wrice.blogspot.com/2008/05/ajax‐example.html

Youcanalsousethewebpagedirectlyonhere:http://comedu.korea.ac.kr/new/2003/board/board/project.htm

Usingtechnologies:a. AJAXandDojo

b. Firebug

c. Komodo

Screenshots

NotethatIhaveimplemented“Search”functionwithoutanyserverinteraction.Itwasoneoftheverysuccessfulchallenges.ThebasicideawasfromMacUserInterface.

Duringthisproject,IfoundthatFireBugwasveryconvenientdebuggingtool.AndI

Page 16: Technical demonstration Document.pds17.egloos.com/pds/201002/22/02/Technical... · 2010-02-21 · 2 Billiard game This project is to show my technical fluency of several game programming

16

alsousedKomodowebpageeditor.

SourcecodeSincethisisjustclientsidejavascriptprogram,everybodycanaccessandreadthesourcecodedirectly.

http://comedu.korea.ac.kr/new/2003/board/board/project.htm

Requirement.UnfortunatelyIfoundthatthisprogramworksonlyonFirefox.ItwasbecausemycomputerwasMacanddidn’thavewaytotestonIEorChrome.


Top Related