SlideShare uma empresa Scribd logo
1 de 64
슈퍼 클래스  : 단순함을 유지하여 개발생산성 향상시키기   Super-class based game object system ㈜소프트네트 김성익 [email_address]
목차 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
지향점 ,[object Object],[object Object],[object Object],[object Object],[object Object],솔루션  :  개발 역량을 높이거나 더 오래 일을 하거나  ??
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],fread(header, 1, len, fp); f-> Read(&header, len); CreateTextureFromMemory(ptr, size, pTexture); CreateTextureFromFile(fp, &pTexture); CFileIO* f1 =  CMemIO::Create(ptr, size); CreateTextureFromFile(f1, &pTexture); CFileIO* f2 = CStdIO::Open(L"checkbox.dds"); CreateTextureFromFile(f2, &pTexture); CFileIO* f3 =  CHttpIO::Open(L“http://softnette.com/checkbox.dds"); CreateTextureFromFile(f3, &pTexture); #Object Oriented Programming
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object]
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object]
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object]
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Quartz composer vvvv NDC2008:  차세대 게임 개발을 위한 실시간 비주얼 그래프 편집  http://dev.ntreev.com/publications
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object],[object Object],vvvv video visualizer
개발 관점의 변화 추적 ,[object Object],[object Object],[object Object],[object Object],GDC Canada 2009:Theory and Practice of Game Object Component Architecture  NDC2010:M2 아키텍처리뷰
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],개발 관점의 변화 추적 GDC Canada 2009:Theory and practi…
개발 요구사항 ,[object Object],[object Object]
슈퍼클래스 ,[object Object],[object Object]
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object]
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object]
셰이더로 보는 사례 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
셰이더로 보는 사례 ,[object Object],float4 ps(PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy); } float4 ps_light(PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * Lambert(In.Normal.xyz); } float4 ps_lightmap(PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * tex2D(LightMapSampler, In.Texcoord1.xy); } technique textureonly { pass p0 { VertexShader = compile vs_3_0 vs(); PixelShader  = compile ps_3_0 ps(); } } technique light { pass p0 { VertexShader = compile vs_3_0 vs(); PixelShader  = compile ps_3_0 ps_light(); } } technique lightmap { pass p0 { VertexShader = compile vs_3_0 vs(); PixelShader  = compile ps_3_0 ps_lightmap(); } }
셰이더로 보는 사례 ,[object Object],[object Object],float4 ps(PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy); } float4 ps_light(PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * Lambert(In.Normal.xyz); } float4 ps_lightmap(PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * tex2D(LightMapSampler, In.Texcoord1.xy); } float4 ps _withshadow (PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * ProjShadow(In.ShadowPos); } float4 ps_light _withshadow (PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * Lambert(In.Normal.xyz) * ProjShadow(In.ShadowPos); } float4 ps_lightmap _withshadow (PS_IN In) : COLOR { return tex2D(DiffuseMapSampler, In.Texcoord0.xy) * tex2D(LightMapSampler, In.Texcoord1.xy) * ProjShadow(In.ShadowPos); }
셰이더로 보는 사례 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],대단한 의지가 아니면 관리가 불가능 일정 시점 이상이 되면 셰이더의 난이도와 상관없이 작업 불가능한 상태 대부분 정책적으로 기능을 제한하는 방향으로
셰이더로 보는 사례 ,[object Object],[object Object],[object Object],[object Object],[object Object],Unreal3 Material Editor
셰이더로 보는 사례 ,[object Object],[object Object],float4 ps(PS_IN In) : COLOR { float4 out = tex2D(DiffuseMapSampler, In.Texcoord0.xy); #ifdef _LIGHT out *= Lambert(In.Normal.xyz); #endif #ifdef _LIGHTMAP out *= tex2D(LightMapSampler, In.Texcoord1.xy); #endif #ifdef _SHADOW out *= ProjShadow(In.ShadowPos); #endif return out; } technique complete { pass p0 { VertexShader = compile vs_3_0 vs(); PixelShader  = compile ps_3_0 ps(); } }
슈퍼클래스 특징 ,[object Object],[object Object],[object Object],[object Object]
슈퍼클래스 적용 시나리오 ,[object Object],void CActor::Move(const Vec &dv, int lv)  {  float t = SweepTest(m_Pos, m_Radius, dv, NULL); m_Pos += dv * t; }
슈퍼클래스 적용 시나리오 ,[object Object],void CActor::Move(const Vec &dv) {  if  (m_flags&_NOCOLLISION) { m_Pos += dv; return ; } float t = SweepTest(m_Pos, m_Radius, dv, NULL); m_Pos += dv * t; }
슈퍼클래스 적용 시나리오 ,[object Object],void CActor::Move(const Vec &dv, int lv)  {  if (m_flags&_NOCOLLISION) { m_Pos += dv; return ; } Plane p; float t = CMomo::GetInstance().SweepTest(m_Pos, m_Radius, dv, &p); if (t < 1.0f) { if (t > 0) m_Pos += dv * t; if (lv < 3) { Vec vr = dv * (1-t); float d1 = p.Distance(m_Pos) - m_Radius; Move(vr - p.Normal() * Vec::dot(vr, p.Normal()), lv+1); } return; } m_Pos += dv; }
슈퍼클래스 적용 시나리오 ,[object Object],void CActor::Move(const Vec &dv, int lv)  {  if (m_flags&_NOCOLLISION) { m_Pos += dv; return ; } Plane p; float t = CMomo::GetInstance().SweepTest(m_Pos, m_Radius, dv, &p); if (t < 1.0f) { if (t > 0) m_Pos += dv * t; if ( (m_flags&_SLIDING)  && lv < 3) { Vec vr = dv * (1-t); float d1 = p.Distance(m_Pos) - m_Radius; Move(vr - p.Normal() * Vec::dot(vr, p.Normal()), lv+1); } return; } m_Pos += dv; }
슈퍼클래스 적용 시나리오 ,[object Object]
슈퍼클래스 적용 시나리오 ,[object Object],[object Object]
슈퍼 클래스기반 프로그래밍의 장단점 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
인식의 전환 ,[object Object],[object Object],[object Object],[object Object],[object Object],솔루션  :  심리적인 해결 . “ 조잡해 보이는 건 명세 탓 !!  하지만 로직을 단순하고 멋지게 유지하는 것보다는 명세가 우선이다”라고 암시 암시 암시
인식의 전환 ,[object Object],[object Object],if (m_Type == _WOLF && m_HP <= 10) PlaySound(L&quot; 아파 &quot;); if ( (m_Flags&_HURT_SOUND)  && m_HP <=  m_HurtsAlramHP ) PlaySound(L&quot; 아파 &quot;); void CGameRoom::LeaveRoom(CSession* session, bool graceful) { if (!IsLobby()) NotifyLeaveMessage(session); if (IsDungeon() && graceful == false) session->ExitPenalty(); } void CGameRoom::LeaveRoom(CSession* session, bool graceful) { if  (m_flags&_NOTIFY_LEAVE) NotifyLeaveMessage(session); if ( (m_flags&_EXIT_PENALTY)  && graceful == false) session->ExitPenalty(); }
슈퍼클래스화 ,[object Object],[object Object]
자료화 ,[object Object],[object Object],[object Object],[object Object],[object Object]
자료화 ,[object Object],<actor> <player mask=&quot; _UPDATE,_RENDER,_GRAVITY,_USERCONTROL,_CHECKEVENTBOX,_MOUSEACTION &quot;> <pos>0 15</pos> <radius>0.5</radius> </player> <helper mask=&quot; _UPDATE,_RENDER,_STATIC &quot;> <pos>0 2</pos> <radius>0.4</radius> <color>ffffff00</color> <name>helper</name> </helper> <camera mask=&quot; _UPDATE,_CAMERA,_NOCOLLISION &quot;> <pos>0 10</pos> <follow>player</follow> </camera> </actor>
도구화 ,[object Object],[object Object],[object Object],[object Object]
도구화 ,[object Object],<particlemask type=&quot;propertysheet&quot; minheight=&quot;75&quot; height=&quot;25%&quot; headervisible=&quot;false&quot;> <shape text=&quot; 형태 &quot;> <_SHAPE text=&quot; 타입 &quot; type=&quot;enum&quot; items=&quot; 빌보드 ; 트레일 ; 메시 &quot;> 랜덤 </_SHAPE> <_COLOR text=&quot; 색상 &quot; type=&quot;enum&quot; items=&quot; 상수 ; 보간 ; 화이트 &quot;> 화이트 </_COLOR> <_ALPHA text=&quot; 알파 &quot; type=&quot;enum&quot; items=&quot; 없음 ; 상수 ; 보간 &quot;> 없음 </_ALPHA> <_SIZE text=&quot; 크기 &quot; type=&quot;enum&quot; items=&quot; 기본 ; 랜덤 ; 랜덤보간 &quot;> 기본 </_SIZE> <_ROTATE text=&quot; 회전 &quot; type=&quot;enum&quot; items=&quot; 없음 ; 상수 ; 랜덤 &quot;> 없음 </_ROTATE> </shape> <lifetime text=&quot; 생성 &quot;> <_DELAY text=&quot; 생성지연 &quot; type=&quot;enum&quot; items=&quot; 없음 ; 상수 ; 랜덤 ; 순차적 &quot;> 없음 </_DELAY> <_LIFETIME text=&quot; 라이프타임 &quot; type=&quot;enum&quot; items=&quot; 상수 ; 랜덤 &quot;> 랜덤 </_LIFETIME> </lifetime> <position text=&quot; 위치 &quot;> <_POSITION text=&quot; 생성위치 &quot; type=&quot;enum&quot; items=&quot; 원점 ; 랜덤구 &quot;> 원점 </_POSITION> <_VELOCITY text=&quot; 속도 &quot; type=&quot;enum&quot; items=&quot; 없음 &quot;> 없음 </_VELOCITY> <_DIRECTION text=&quot; 방향 / 목표 &quot; type=&quot;enum&quot; items=&quot; 없음 ; 랜덤구 ; 목표지점 &quot;> 없음 </_DIRECTION> <_GRAVITY text=&quot; 중력 &quot; type=&quot;bool&quot;>false</_GRAVITY> </position> <parameters type=&quot;propertysheet&quot; height=&quot;100%&quot;> <general text=&quot; 일반 &quot; mask=&quot;default&quot;> <COUNT text=&quot; 생성갯수 &quot; type=&quot;int&quot; min=&quot;1&quot; singleStep=&quot;5&quot;>10</COUNT> <LOOP text=&quot; 반복 &quot; type=&quot;bool&quot;>false</LOOP> <BLEND text=&quot; 블랜딩 &quot; type=&quot;enum&quot; items=&quot; 알파블랜딩 ; 가산 ; 곱하기 &quot;> 가산 </BLEND> </general>  <billboard text=&quot; 빌보드 &quot; mask=&quot;_SHAPE= 빌보드 &quot;> <TEXTURE text=&quot;texture&quot; type=&quot;texture&quot;>check.bmp</TEXTURE> </billboard> <randomlifetime text=&quot; 라이프타임 &quot; mask=&quot;_LIFETIME= 랜덤 &quot;> <LIFETIME_MIN text=&quot;min&quot; type=&quot;float&quot; min=&quot;0&quot; singleStep=&quot;1&quot;>5</LIFETIME_MIN> <LIFETIME_MAX text=&quot;max&quot; type=&quot;float&quot; min=&quot;0&quot; singleStep=&quot;1&quot;>10</LIFETIME_MAX> </randomlifetime> <constlifetime text=&quot; 라이프타임 &quot; mask=&quot;_LIFETIME= 상수 &quot;> <CONSTLIFETIME text=&quot;lifetime&quot; type=&quot;float&quot; min=&quot;0&quot; singleStep=&quot;1&quot;>5</CONSTLIFETIME> </constlifetime> <constcolor text=&quot; 색상 &quot; mask=&quot;_COLOR= 상수 &quot;> <CONSTCOLOR text=&quot; 색상 &quot; type=&quot;color&quot;>ffffff</CONSTCOLOR> </constcolor> <blendcolor text=&quot; 색상 &quot; mask=&quot;_COLOR= 보간 &quot;>
도구화 ,[object Object],[object Object],<shading text=&quot; 셰이딩 &quot;> <_NO_LIGHTING text=&quot; 셰이딩안함 &quot; type=&quot;bool&quot;>false</_NO_LIGHTING> <_USE_SPECULAR text=&quot; 스펙큘러채널 &quot; type=&quot;bool&quot;  enabletest=&quot;!_NO_LIGHTING&quot; >false</_USE_SPECULAR> <_RIMLIGHTING text=&quot; 림라이트 &quot; type=&quot;bool&quot;  enabletest=&quot;!_NO_LIGHTING&quot; >false</_RIMLIGHTING> </shading>
도구화 ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],슈퍼클래스기반 게임오브젝트 Note)  현재 이 구조로 프로젝트 진행하고 있습니다  ( 소프트네트 )
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object],다만 과도하게 컴포넌트화하고 정리를 하는 것보다는 관리 가능한 수준에서 느슨하게 처리하는 것을 추천
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],#Data Oriented Design http://www.lameproof.com/zboard/zboard.php?id=bbs2&no=790
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],template <class _Tx> class CValuePtr { public  : CValuePtr() { m_Ptr = NULL; } ~CValuePtr() { if (m_Ptr != NULL) delete m_Ptr; } _Tx* operator-> () { if (m_Ptr == NULL) m_Ptr = new _Tx; return m_Ptr; } private : _Tx* m_Ptr; } ; class CActor { private: struct _DIALOG { _DIALOG() { Shape = NULL; } ~_DIALOG() { if (Shape) delete Shape; } float OpenStep; Sphere* Shape; float Offset[2]; }; CValuePtr<_DIALOG> m_Dialog; } ; value = *node.FindChild(L&quot;dialog_offset&quot;); swscanf_s(value, L&quot;%f %f&quot;, & m_Dialog->Offset[0] , & m_Dialog->Offset[1] ); value = *node.FindChild(L&quot;dialog_size&quot;); m_Dialog->Shape  = new Sphere(Vec(0, 0), unicode::atof(value), 14);
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
슈퍼클래스기반 게임오브젝트 ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
슈퍼클래스 기반 파티클 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
슈퍼클래스 기반 파티클 ,[object Object],void CParticle::InitParticle(void *data, int count) const { for(int i=0; i<count; i++) { _PARTICLE* ptr = (_PARTICLE*)((char*)data + m_Pitch * i); char * extra = (char*)ptr + sizeof(_PARTICLE); if  (m_InitMask&_DELAY_CONST) { ptr->curTime = - *(const float*)GetParam(_I_DELAY_CONST); } else if  (m_InitMask&_DELAY_RANDOM) { const float* delayrandom = (const float*)GetParam(_I_DELAY_RANDOM); ptr->curTime = - Random(delayrandom[0], delayrandom[1]); } else if  (m_InitMask&_DELAY_SEQ) { ptr->curTime = - *(const float*)GetParam(_I_DELAY_SEQ) * i; } else { ptr->curTime = 0; }
슈퍼클래스 기반 파티클 ,[object Object],[object Object],bool CParticle::Update(float dt, void * data, int count, unsigned long updatemask) const { for(int i=0, off=0; i<count; i++, off+=m_Pitch) { _PARTICLE* p = (_PARTICLE*)((char*)data + off); p->curTime += dt; char * extra = (char*)p + sizeof(_PARTICLE); if  (updatemask&_COLOR_BLEND) { unsigned long* blendcolor = (unsigned long*) GetData(extra, _U_BLENDCOLOR); p->color = LerpColor(blendcolor[0], blendcolor[1], p->curTime / p->lifeTime); } if  (updatemask&_GRAVITY) { Vec3* vel = (Vec3*) GetData(extra, _U_VELOCITY); *vel += Vec3(0, -9.8f, 0) * dt; //  중력 } if  (updatemask&_VELOCITY) { const Vec3* vel = (const Vec3*) GetData(extra, _U_VELOCITY); p->pos += (*vel) * dt; }
슈퍼클래스 기반 파티클 ,[object Object],[object Object],[object Object]
슈퍼클래스 기반 파티클 ,[object Object],[object Object],[object Object],#control hazard
슈퍼클래스 기반 파티클 ,[object Object],[object Object],bool CParticle::Update(float dt, void * data, int count, unsigned long updatemask) const { _PARTICLE* p = (_PARTICLE*)((char*)data + off); int i; for(i=0; i<count; i++) p->curTime[i] += dt; if (updatemask&_COLOR_BLEND) { unsigned long* blendcolor = (unsigned long*) GetData(p, _U_BLENDCOLOR); for(i=0; i<count; i++) p->color[i] += LerpColor(blendcolor[i*2+0], blendcolor[i*2+1], p->curTime / p->lifeTime); } if (updatemask&_GRAVITY) { Vec3* vel = (Vec3*) GetData(p, _U_VELOCITY); for(i=0; i<count; i++) vel[i] += += Vec3(0, -5.0f, 0) * dt; } if (updatemask&_VELOCITY) { const Vec3* vel = (const Vec3*) GetData(p, _U_VELOCITY); for(i=0; i<count; i++) p->pos[i] += vel[i] * dt; }
슈퍼클래스 기반 파티클 ,[object Object],[object Object],[object Object],#include <windows.h> inline void update(unsigned long mask) { if (mask&1) ::Sleep(0xFF); if (mask&2) ::Sleep(0xF); } void main() { unsigned long mask = rand(); update(mask); update(2); }
슈퍼클래스 기반 파티클 ,[object Object],[object Object],[object Object],[object Object],[object Object],bool CParticle::Update(float dt, void * data, int count) const { if (m_UpdateMask ==  (_COLOR_BLEND|_GRAVITY|_VELOCITY) ) return Update(dt, data, count,  _COLOR_BLEND|_GRAVITY|_VELOCITY ); else if (m_UpdateMask == _COLOR_BLEND) return Update(dt, data, count, _COLOR_BLEND); return Update(dt, data, count, m_UpdateMask); }
슈퍼클래스 기반 파티클 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
슈퍼클래스 기반 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
슈퍼클래스 기반 서버 ,[object Object],[object Object],[object Object],게임테크  2010:Extracting MMORPG Server Engine from TERA
슈퍼클래스 기반 서버 ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],슈퍼클래스 기반 서버
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],슈퍼클래스 기반 서버 정책적으로 클라이언트 ,  툴 ,  서버에서 게임 객체 공유  ( 소프트네트 )
[object Object]
결론 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],슈퍼클래스 ,  상태 머신 ,  스크립트  3S   삼총사면 무서울 게 없습니다
감사합니다 ,[object Object]

Mais conteúdo relacionado

Mais procurados

[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)Sang Don Kim
 
안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법mosaicnet
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개Sungchul Park
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guideSungchul Park
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental systemJaehoon Oh
 
Refactoring Tutorial 1주차[ Refactoring 개요]
Refactoring  Tutorial 1주차[ Refactoring 개요]Refactoring  Tutorial 1주차[ Refactoring 개요]
Refactoring Tutorial 1주차[ Refactoring 개요]Bingu Shim
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
인수테스트 주도 개발
인수테스트 주도 개발인수테스트 주도 개발
인수테스트 주도 개발Jaehoon Oh
 
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현NAVER D2
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙Hyosang Hong
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js functionYoung-Beom Rhee
 
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019Kenneth Ceyer
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기Chris Ohk
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
 
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기GDG Korea
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 

Mais procurados (20)

[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개
 
Java null survival guide
Java null survival guideJava null survival guide
Java null survival guide
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
 
Refactoring Tutorial 1주차[ Refactoring 개요]
Refactoring  Tutorial 1주차[ Refactoring 개요]Refactoring  Tutorial 1주차[ Refactoring 개요]
Refactoring Tutorial 1주차[ Refactoring 개요]
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
인수테스트 주도 개발
인수테스트 주도 개발인수테스트 주도 개발
인수테스트 주도 개발
 
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function
 
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
AI 연구자를 위한 클린코드 - GDG DevFest Seoul 2019
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
 
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 

Destaque

제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인
제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인
제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인dgmit2009
 
Application framework 정의및비교(김일영)_20110609
Application framework 정의및비교(김일영)_20110609Application framework 정의및비교(김일영)_20110609
Application framework 정의및비교(김일영)_20110609Mike 김일영
 
Puma At Large Nce Iii
Puma At Large Nce IiiPuma At Large Nce Iii
Puma At Large Nce Iiivictorgaogao
 
Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩JaeWoo Wie
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기Yong Joon Moon
 
Spring MVC
Spring MVCSpring MVC
Spring MVCymtech
 
성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례
성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례
성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례kisu kim
 
엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례욱래 김
 
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델NAVER D2
 
[영어] 틀린 영어표현 찾기 #1탄
[영어] 틀린 영어표현 찾기 #1탄[영어] 틀린 영어표현 찾기 #1탄
[영어] 틀린 영어표현 찾기 #1탄1st_navi
 
프로젝트 제안서
프로젝트 제안서프로젝트 제안서
프로젝트 제안서Do Hoerin
 
파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기Yong Joon Moon
 
SOAP REST 이해
SOAP REST 이해SOAP REST 이해
SOAP REST 이해Jake Yoon
 
Ayp for ell
Ayp for ellAyp for ell
Ayp for ellTagiglio
 
Yr 2 sose qld mapping presentation week 3
Yr 2 sose qld mapping presentation week 3Yr 2 sose qld mapping presentation week 3
Yr 2 sose qld mapping presentation week 3mrswato
 
Five star phat hung
Five star phat hungFive star phat hung
Five star phat hungthuyantrinh
 
War on drugs failed report
War on drugs failed reportWar on drugs failed report
War on drugs failed reportkoumparokratia
 
Inorme 2 trimestre 2014 biblioteca del pio x
Inorme 2 trimestre 2014   biblioteca del pio xInorme 2 trimestre 2014   biblioteca del pio x
Inorme 2 trimestre 2014 biblioteca del pio xDaniel Francisco Doffo
 
Turkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngenç
Turkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngençTurkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngenç
Turkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngençMustafa Kuğu
 

Destaque (20)

제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인
제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인
제 3회 DGMIT UI&UX 컨퍼런스 : 미디어 아트 디자인
 
Application framework 정의및비교(김일영)_20110609
Application framework 정의및비교(김일영)_20110609Application framework 정의및비교(김일영)_20110609
Application framework 정의및비교(김일영)_20110609
 
Puma At Large Nce Iii
Puma At Large Nce IiiPuma At Large Nce Iii
Puma At Large Nce Iii
 
Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례
성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례
성공적인 Sw사업 수행을 위한 프로세스 프레임워크 및 적용사례
 
엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례
 
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
 
[영어] 틀린 영어표현 찾기 #1탄
[영어] 틀린 영어표현 찾기 #1탄[영어] 틀린 영어표현 찾기 #1탄
[영어] 틀린 영어표현 찾기 #1탄
 
프로젝트 제안서
프로젝트 제안서프로젝트 제안서
프로젝트 제안서
 
파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기
 
SOAP REST 이해
SOAP REST 이해SOAP REST 이해
SOAP REST 이해
 
Ayp for ell
Ayp for ellAyp for ell
Ayp for ell
 
Yr 2 sose qld mapping presentation week 3
Yr 2 sose qld mapping presentation week 3Yr 2 sose qld mapping presentation week 3
Yr 2 sose qld mapping presentation week 3
 
3dsmax
3dsmax3dsmax
3dsmax
 
Five star phat hung
Five star phat hungFive star phat hung
Five star phat hung
 
War on drugs failed report
War on drugs failed reportWar on drugs failed report
War on drugs failed report
 
Inorme 2 trimestre 2014 biblioteca del pio x
Inorme 2 trimestre 2014   biblioteca del pio xInorme 2 trimestre 2014   biblioteca del pio x
Inorme 2 trimestre 2014 biblioteca del pio x
 
Turkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngenç
Turkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngençTurkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngenç
Turkcell Veri Merkezi ve Altyapı Hizmetleri Tolga İngenç
 

Semelhante a NDC11_김성익_슈퍼클래스

[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9진현 조
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019min woog kim
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With GroovyTommy C. Kang
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2Chris Ohk
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발NAVER D2
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blogozlael ozlael
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraftbbongcsu
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Hyosang Hong
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) Tae Young Lee
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기Sunghyouk Bae
 

Semelhante a NDC11_김성익_슈퍼클래스 (20)

[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With Groovy
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
Modern gpu optimize
Modern gpu optimizeModern gpu optimize
Modern gpu optimize
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blog
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraft
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙
 
강의자료 2
강의자료 2강의자료 2
강의자료 2
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 

Último

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and AdoptionSeung-chan Baeg
 

Último (7)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 

NDC11_김성익_슈퍼클래스

  • 1. 슈퍼 클래스 : 단순함을 유지하여 개발생산성 향상시키기 Super-class based game object system ㈜소프트네트 김성익 [email_address]
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.