ݺߣ

ݺߣShare a Scribd company logo
게임 개발자를 위한 VBA 활용
2015.11.26 서버팀 / 김운봉
활용 배경
게임 테이블
ㅇ 게임 테이블을 보면 어떤 게임인지, 무슨 기능이 있는지 알 수 있다.
ㅇ 새로운 작업자가 테이블을 볼 경우 쉽게 이해가 가능한가 -> 문서 필요
ㅇ 기존 작업자가 시간이 지난후에 테이블을 봐야하는 경우 -> 문서 참고
ㅇ 테이블이 복잡하면 코드도 복잡
활용 배경
관리의 이슈
ㅇ 클라용 데이터? 서버용 데이터?
ㅇ 한곳에서 통합하여 관리 하는 것이 편하고 실수를 줄임
ㅇ 서버만, 클라만 쓰는 데이터는 폴더를 분리
ㅇ 스크립트 관리 : 모든 엑셀 파일마다 스크립트복사? 수정할일 생기면?
키인덱스 설명 구분 파일명 확률 데이터1 데이터2 데이터...
공통 클라용 공통 클라용 서버용 공통 공통 공통...
클라 데이터 서버 데이터
키인덱스
키인덱스설명
구분
파일명
데이터1
데이터2
데이터...
구분
확률
데이터1
데이터2
데이터...
기획 데이터
ㅇ 공통은 공통
ㅇ 서버용은 서버만
ㅇ 클라용은 클라만
소스 코드 생성
기본 컨셉
ㅇ 스펙 문서를 활용해 선언부 코드라도 자동으로 생성하자.
ㅇ 스펙 문서를 항상 최신으로 유지하자.
ㅇ 서버와 클라의 데이터를 통합 관리하자.
ㅇ 효율을 높이기 위해 해당 파트에서 안 쓰는건 배제한다.
소스 코드 생성
구조체 생성
ㅇ 미리 정의된 prefix 와 설명이 삽입된 구조체 생성 -> 복붙하여 사용
ㅇ Getter 와 Setter 가 필요할 경우 같이 생성
클래스 생성(하드코딩)
ㅇ 무식하게 테이블을 소스 코드 통채 제너레이션. (이런일이 있었음)
소스 코드 생성
공용 상수 생성
ㅇ 에러코드나 응답코드와 같은 공통 코드 정의
ㅇ 하지만 클라와 서버가 사용하는 언어가 다르다면?
예) 서버 C++, 클라 C#
ㅇ 예시 : WBS_ERROR_CODE.xlsm
ㅇ 직접 소스를 수정하는게 편할지도… (하지만 문서화!!)
소스 코드 생성
프로토콜 상수 및 패킷 구조체 생성
ㅇ 하나의 설계문서로.
ㅇ 서버용 프로토콜 정의 및 패킷 정의 코드 생성
ㅇ 클라용 프로토콜 정의 및 패킷 정의 코드 생성
ㅇ 개발자는 설계문서를 통해 프로토콜 헤더 및 소스코드 제너레이션
데이터베이스 관리
여러대의 서버라도 DB를 통해 데이터 통합 관리
ㅇ 서버가 각각 데이터를 가지고 있다면 일부 서버의 데이터가 바르지 않을 수 있음
ㅇ 바라보는 DB만 일치 시키면 모든 서버에서 일치된 데이터 사용
데이터베이스 관리
초기 사용자 테이블 생성
ㅇ 프로젝트 초기 논리설계후 물리테이블 구성시 테이블 생성하는것도 일
ㅇ ERWin 이나 ERStudio 같은 툴로 설계하고 젠하는 방법도 있으나 안사준다.
ㅇ 데이터 관계정립후 엑셀로 테이블을 디자인하고 엑셀에서 바로 생성한다.
게임 데이터 - 테이블 관리
테이블 설명서 관리
ㅇ 엑셀 문서 자체가 기본 스펙 문서의 역할
ㅇ 필드에 들어갈 구분 코드등의 의미를 기재해 둔다.
게임 데이터 - 테이블 관리
게임데이터 생성
ㅇ 클라나 서버에서 필요한 데이터만 Export 하거나 Upload
ㅇ ODBC 채널을 통해 일반적인 DBMS에 직접 접근하여 테이블 및 데이터 업로드
ㅇ DBMS의 PK를 이용하여 업데이트시 자동으로 중복 데이터 검출
ㅇ 구조가 변경된 경우에도 즉시 적용 가능
ㅇ 파일 단위 Export 시 JSON, XML, CSV 지원, 필요한 경우 다른 포맷 추가
게임 데이터 - 테이블 관리
데이터 작업 로그
ㅇ 서버에 데이터 업로드시 로그가 남아 최종 작업 일시 및 작업자 확인.
(작업자의 경우 자동으로 컴퓨터이름과 계정명을 기록)
ㅇ 누가 사고쳤는지 알아보는?
ㅇ 언제 업데이트했는지 확인하는?
ㅇ 컴퓨터과 계정명이 엉터리라면 확인하기 애매
몰아서 시연 몰아서 시연해 봅니다..
리소스 관리 (기타 활용방안)
ㅇ 리소스(아이콘)뷰어 페이지 생성
ㅇ 일반적으로 수많은 아이템의 코드를 일일이 외우고 개발하는 경우는 없다.
ㅇ 기획 테이블을 기준으로 이미지와 결합한 참고용 HTML 문서를 생성한다.
ㅇ (spr 파일은 별도의 뷰어 플러그인을 제작 해야함으로 배보다 배꼽이 더커짐)
ㅇ 예시: VBA_HtmResource.xls
ㅇ 테이블 기준 리소스파일 존재유무 확인
ㅇ 리소스가 명시된 컬럼이 있으면 해당 컬럼 참조 물리적인 파일의 존재 유무 검출, 결과 리포팅
ㅇ 예시: VBA_ValidateFIle.xls
ㅇ 배경이미지 활용 지형툴
ㅇ 미니 맵툴 처럼 간단하게도 활용 가능
ㅇ 예시: RM_T_Lot세팅.xls
리소스 관리 (기타 활용방안)
ㅇ 테스트 데이터 배치스크립트)
ㅇ 맵위 오브젝트 배치와 같은 일이 필요할때 (like SNG)
ㅇ 친구(특정)계정의 오브젝트 배치를 싹 밀고 게임 테이블을 기준으로 오브젝트를 배치하는 쿼리를 생성 후 DB를 갱신
하고 친구집으로 방문해보는 꼼수....
ㅇ 예시:VBA_CreateDeploy.xls
ㅇ 기타등등.. 아이디어만 있다면 Win32API 및 VBA 활용가능함.
잉여력이 만든
작품들
인베이더
아스키아트 뮤직비디오
여러 엑셀게임
구글에서도 놀
아보자.. 크롬 웹스토어
예제 시트
Q&A

More Related Content

게임 개발자를 위한 Vba 활용

  • 1. 게임 개발자를 위한 VBA 활용 2015.11.26 서버팀 / 김운봉
  • 2. 활용 배경 게임 테이블 ㅇ 게임 테이블을 보면 어떤 게임인지, 무슨 기능이 있는지 알 수 있다. ㅇ 새로운 작업자가 테이블을 볼 경우 쉽게 이해가 가능한가 -> 문서 필요 ㅇ 기존 작업자가 시간이 지난후에 테이블을 봐야하는 경우 -> 문서 참고 ㅇ 테이블이 복잡하면 코드도 복잡
  • 3. 활용 배경 관리의 이슈 ㅇ 클라용 데이터? 서버용 데이터? ㅇ 한곳에서 통합하여 관리 하는 것이 편하고 실수를 줄임 ㅇ 서버만, 클라만 쓰는 데이터는 폴더를 분리 ㅇ 스크립트 관리 : 모든 엑셀 파일마다 스크립트복사? 수정할일 생기면?
  • 4. 키인덱스 설명 구분 파일명 확률 데이터1 데이터2 데이터... 공통 클라용 공통 클라용 서버용 공통 공통 공통... 클라 데이터 서버 데이터 키인덱스 키인덱스설명 구분 파일명 데이터1 데이터2 데이터... 구분 확률 데이터1 데이터2 데이터... 기획 데이터 ㅇ 공통은 공통 ㅇ 서버용은 서버만 ㅇ 클라용은 클라만
  • 5. 소스 코드 생성 기본 컨셉 ㅇ 스펙 문서를 활용해 선언부 코드라도 자동으로 생성하자. ㅇ 스펙 문서를 항상 최신으로 유지하자. ㅇ 서버와 클라의 데이터를 통합 관리하자. ㅇ 효율을 높이기 위해 해당 파트에서 안 쓰는건 배제한다.
  • 6. 소스 코드 생성 구조체 생성 ㅇ 미리 정의된 prefix 와 설명이 삽입된 구조체 생성 -> 복붙하여 사용 ㅇ Getter 와 Setter 가 필요할 경우 같이 생성 클래스 생성(하드코딩) ㅇ 무식하게 테이블을 소스 코드 통채 제너레이션. (이런일이 있었음)
  • 7. 소스 코드 생성 공용 상수 생성 ㅇ 에러코드나 응답코드와 같은 공통 코드 정의 ㅇ 하지만 클라와 서버가 사용하는 언어가 다르다면? 예) 서버 C++, 클라 C# ㅇ 예시 : WBS_ERROR_CODE.xlsm ㅇ 직접 소스를 수정하는게 편할지도… (하지만 문서화!!)
  • 8. 소스 코드 생성 프로토콜 상수 및 패킷 구조체 생성 ㅇ 하나의 설계문서로. ㅇ 서버용 프로토콜 정의 및 패킷 정의 코드 생성 ㅇ 클라용 프로토콜 정의 및 패킷 정의 코드 생성 ㅇ 개발자는 설계문서를 통해 프로토콜 헤더 및 소스코드 제너레이션
  • 9. 데이터베이스 관리 여러대의 서버라도 DB를 통해 데이터 통합 관리 ㅇ 서버가 각각 데이터를 가지고 있다면 일부 서버의 데이터가 바르지 않을 수 있음 ㅇ 바라보는 DB만 일치 시키면 모든 서버에서 일치된 데이터 사용
  • 10. 데이터베이스 관리 초기 사용자 테이블 생성 ㅇ 프로젝트 초기 논리설계후 물리테이블 구성시 테이블 생성하는것도 일 ㅇ ERWin 이나 ERStudio 같은 툴로 설계하고 젠하는 방법도 있으나 안사준다. ㅇ 데이터 관계정립후 엑셀로 테이블을 디자인하고 엑셀에서 바로 생성한다.
  • 11. 게임 데이터 - 테이블 관리 테이블 설명서 관리 ㅇ 엑셀 문서 자체가 기본 스펙 문서의 역할 ㅇ 필드에 들어갈 구분 코드등의 의미를 기재해 둔다.
  • 12. 게임 데이터 - 테이블 관리 게임데이터 생성 ㅇ 클라나 서버에서 필요한 데이터만 Export 하거나 Upload ㅇ ODBC 채널을 통해 일반적인 DBMS에 직접 접근하여 테이블 및 데이터 업로드 ㅇ DBMS의 PK를 이용하여 업데이트시 자동으로 중복 데이터 검출 ㅇ 구조가 변경된 경우에도 즉시 적용 가능 ㅇ 파일 단위 Export 시 JSON, XML, CSV 지원, 필요한 경우 다른 포맷 추가
  • 13. 게임 데이터 - 테이블 관리 데이터 작업 로그 ㅇ 서버에 데이터 업로드시 로그가 남아 최종 작업 일시 및 작업자 확인. (작업자의 경우 자동으로 컴퓨터이름과 계정명을 기록) ㅇ 누가 사고쳤는지 알아보는? ㅇ 언제 업데이트했는지 확인하는? ㅇ 컴퓨터과 계정명이 엉터리라면 확인하기 애매
  • 14. 몰아서 시연 몰아서 시연해 봅니다..
  • 15. 리소스 관리 (기타 활용방안) ㅇ 리소스(아이콘)뷰어 페이지 생성 ㅇ 일반적으로 수많은 아이템의 코드를 일일이 외우고 개발하는 경우는 없다. ㅇ 기획 테이블을 기준으로 이미지와 결합한 참고용 HTML 문서를 생성한다. ㅇ (spr 파일은 별도의 뷰어 플러그인을 제작 해야함으로 배보다 배꼽이 더커짐) ㅇ 예시: VBA_HtmResource.xls ㅇ 테이블 기준 리소스파일 존재유무 확인 ㅇ 리소스가 명시된 컬럼이 있으면 해당 컬럼 참조 물리적인 파일의 존재 유무 검출, 결과 리포팅 ㅇ 예시: VBA_ValidateFIle.xls ㅇ 배경이미지 활용 지형툴 ㅇ 미니 맵툴 처럼 간단하게도 활용 가능 ㅇ 예시: RM_T_Lot세팅.xls
  • 16. 리소스 관리 (기타 활용방안) ㅇ 테스트 데이터 배치스크립트) ㅇ 맵위 오브젝트 배치와 같은 일이 필요할때 (like SNG) ㅇ 친구(특정)계정의 오브젝트 배치를 싹 밀고 게임 테이블을 기준으로 오브젝트를 배치하는 쿼리를 생성 후 DB를 갱신 하고 친구집으로 방문해보는 꼼수.... ㅇ 예시:VBA_CreateDeploy.xls ㅇ 기타등등.. 아이디어만 있다면 Win32API 및 VBA 활용가능함.
  • 18. 구글에서도 놀 아보자.. 크롬 웹스토어 예제 시트
  • 19. Q&A