게임설명서 게임명 : 메가톤 1. 게임개요가. 본게임은카드방식의게임으로써성인들의스트레스해소및여가선용으로즐길수있게제작된비경품용아케이드게임입니다. 나. 게임결과에의한경품제공은전혀없으며어떠한사행적요소도추가되지않은단순히재미를즐기기위한게임입니다. 다. 코인은지폐를사용하며지폐가투입되면 1 : 1 로환산되어 CREDIT에표시됩니다. 2. 주요내용가. 1회게임시간은최소 1초이상. 나. 한시간당최대사용금액 (CREDIT 금액 ) 은 1만원을초과하지않음. 다. 1회게임최대당첨점수 1,000,000점. 라. BANK창에최대누적가능한점수 9,999,900점. 마. 1회게임베팅금액은 100원으로고정되어있음. 3. 게임진행순서가. CREDIT 또는 BANK 점수가 100점이상있을경우게임을시작할수있습니다. 나. 시작버튼을누르면 1회배팅금액 100점이차감되면서게임이시작됩니다. 다. BANK창에점수가있을경우우선적으로사용되고이점수가없으면 CREDIT의점수를사용합니다. 라. 게임이시작되면 5장의카드가돌아가며, 플레이어의편의를위해컴퓨터가임의로유리한카드를선택하여홀드합니다. 마. 플레이어는홀드 (1 ~ 5) 버튼을이용하여최종홀드할카드를결정한후, 시작버튼을눌러홀드한카드를제외한나머지카드를교체합니다. 바. 교체가끝나고최종 5장카드의구성으로시상을합니다. 사. 게임족보가당첨되면해당애니메이션이연출된후곱하기배당으로점수를획득합니다. 아. 한게임에서당첨된점수는일시적으로 WIN창에표시되며게임이진행되면이점수는 BANK창으로누적됩니다. - 1 -
4. 족보표 ( 기본배당 ) 족보 점수 설명 Royal Straight Flush 20,000 같은무늬의카드 10, J, Q, K, A의조합 Straight Flush 10,000 같은무늬의연속된카드5장 Four Card 5,000 같은숫자의카드 4장 Full House 3,000 같은숫자의카드 3장 + 2장 Flush 2,000 같은무늬의카드 5장 ( 숫자와상관없음 ) Straight 1,000 연속된카드 5장 ( 무늬와상관없음 ) Triple 300 같은숫자카드 3장 Two Pair 200 같은숫자의카드가 2쌍일경우 One Pair 100 J 이상같은숫자카드 2장 < 기본족보시상이며풀하우스이상은곱하기배당을적용하여지급된다.> 5. 카드모양 : 본게임은카드모양에따라각기다른이미지로이루어져있다. 족보당첨시애니메이션을한다. 스페이드다이아하트클로버 - 2 -
6. 화면인터페이스 1. 게임배경 : 단순한배경으로게임진행 과는아무런관련이없다. 4 가지의이미지 를랜덤하게보여준다. 2 카드 : 총 5 장의카드가돌아감. 3 CREDIT 창 : 투입금액을표시하는창. 4 BET 창 : 1 회게임에베팅금액을표시. WIN 창 : 게임에서획득한점수를누적 표시하는창. 5 BANK 창 : 게임에서획득한점수를누적 표시하는창. ( 게임에우선으로사용됨.) 6 남은시간한시간에투입금액이만원으로다음만원을투입할수있는남은시간을표시하여준다. 매시정각에초기화된다. 7 이용가능금액 한시간이용가능금액은만원이며남은 시간동안이용가능한금액을표시해준다. - 3 -
7. 정산기능 * 시스템창 * 정산창 가. 게임화면일때 IO보드의 S/W3을한번누르면위의화면과같이시스템창이화면에출력됩니다. 나. 시스템창에서 HOLD1 버튼을누르면컴퓨터를종료하고, HOLD5 버튼을누르면컴퓨터를재시작합니다다. 종료나재시작될시에 CREDIT과 BANK 금액은초기화됩니다. ( 그외에는초기화하지않습니다.) 이때삭제한점수를정산내역에포함시킵니다. 라. 시스템창에서 IO보드의 S/W3 버튼을누르면시스템창이사라집니다. 마. 게임화면일때 IO보드의 S/W1을두번누르면위의화면과같이정산창이화면에출력됩니다. 바. 정산메뉴에서 HOLD5 버튼을누르면일일정산내역이모두삭제됩니다. 사. 정산메뉴에서 HOLD1 버튼을누르면상세일일정산내역을볼수있습니다. 아. 총정산내역은지울수없습니다. 자. 정산메뉴에서 IO보드의 S/W1버튼을누르면정산창이사라집니다. - 일일정산 : 하루동안의정산내역을표시일일투입금액 : 하루동안입금된금액 Credit 사용점수 : 하루동안사용된 Credit 금액 Credit삭제점수 : 하루동안삭제된 Credit점수 Bank삭제점수 : 하루동안삭제된 Bank점수삭제점수 : 하루동안사용한 Credit점수와 Bank점수의합 - 총정산 : 총투입금액표시총투입점수 : 총투입된 Credit 금액 Credit총사용점수 : 총사용된 Credit 금액 Credit총삭제점수 : 총삭제된 Credit 점수 Bank총삭제점수 : 총삭제된 Bank 점수총삭제점수 : 총삭제된 Credit 점수와 Bank점수의합 - 4 -
상세정산내역 ( 정산창에서 HOLD1 키를누르면나타남 ) 1. 정산창에서 HOLD1 키를누르면보이는화면. 2. 시간별초별로언제시스템이꺼졌으며점수가삭제됬는지의내역표기 3. 현재창에서 HOLD2 키는전일 HOLD4키는다음날의내역을세부적으로표기 4. 목록이 20개를초과시현재창에서 HOLD3키를누르면다음내역을표기 5. 현재창에서총삭제점수내역은하루기준삭제내역의총합임. 6. 내역이보관되는장소는게임폴더내 Log폴더안에각날짜별로그파일에저장되어짐, 로그파일은암호화되있으며날짜.acc 의파일이름을가짐. ( ex 20150324.acc ) 7. 날짜별삭제내역이기록되는범위는저장공간의용량이허용하는한무제한으로저장되어지며게임내에임의로삭제는불가능하며관리자가직접게임설치폴더에서삭제는가능함. * 총정산내역이추가되는방식 1) 시스템모드 ( 게임종료, 재시작 ) 에서점수삭제코드 if( m_bsystemmode ) { m_ndaydeletecredit += m_ncredit; // 일삭제금액에합산해줌 m_ntotaldeletecredit += m_ncredit; // 총삭제금액에합산해줌 WriteData(m_nCredit,m_nBank); // 삭제된금액을따로저장 // 점수초기화후정산내역저장 m_ncredit = 0; m_gametext.writeini_int64("gamedata", "Credit", m_ncredit); m_gametext.writeini_int64("gamedata"," 일일삭제코인 ", m_ndaydeletecredit); m_gametext.writeini_int64("gamedata", " 총삭제코인 ", m_ntotaldeletecredit); m_ndaydeletebank += m_nbank; // 일삭제뱅크금액에합산해줌 m_ntotaldeletebank += m_nbank; // 총삭제뱅크금액에합산해줌 // 점수초기화후정산내역저장 m_nbank = 0; m_gametext.writeini_int64("gamedata", "Bank", m_nbank); - 5 -
m_gametext.writeini_int64("gamedata", " 일일삭제뱅크 ", m_ndaydeletebank); m_gametext.writeini_int64("gamedata", " 총삭제뱅크 ", m_ntotaldeletebank); #ifndef DEBUG // 디버그상에서는테스트를위해종료시키지않는다. system("shutdown -s -t 5"); // 종료 #endif } 2) WriteData 함수에대한설명 typedef struct ACCOUNT_DATA{ int Hour; // 시간 int Min; // 분 int Sec; // 초 INT64 Credit; // 삭제된코인 INT64 Bank; // 삭제된뱅크 }ACCOUNT_DATA; void { CGameData::WriteData(int Credit,int Bank) struct tm* datetime; time_t t; t= time(null); datetime= localtime(&t) ; // 현재날짜를구한후 char LogFileName[50]; // 현재날짜의로그파일을생성하거나읽는다. s p r i n t f ( L o g F i l e N a m e, " L o g \ \ % d % 0 2 d % 0 2 d. a c c ", d a t e t i m e - > t m _ y e a r + 1 9 0 0, datetime->tm_mon + 1, datetime->tm_mday); // 로그파일을생성하거나읽는다. FILE* fp = fopen(logfilename,"a+"); // 파일마지막에 fseek(fp,0,seek_end); // 해당내역을저장 if( fp!= NULL ) { ACCOUNT_DATA Temp; Temp.Hour = datetime->tm_hour; Temp.Min = datetime->tm_min; Temp.Sec = datetime->tm_sec; Temp.Credit = Credit; - 6 -
Temp.Bank = Bank; } } fwrite(&temp,sizeof ACCOUNT_DATA, 1, fp ); fclose(fp); 3) 상세정산내역읽기 * 정산창에서최초읽기 if( m_baccountmode ) { m_baccountmode = FALSE; m_baccountdetailmode = TRUE; ShowIndex = 0; } ReadAccountData(); * 전날혹은다음날읽기 if( wparam == GetKeyState(KEY_HOLD_2) ) { if( m_baccountdetailmode) { DataIndex --; // 날짜인덱스값 ReadAccountData(); } } if( wparam == GetKeyState(KEY_HOLD_4) ) { if( m_baccountdetailmode) { DataIndex ++; // 날짜인덱스값 ReadAccountData(); } } void { 4) ReadAccountData 에대한설명 CGameData::ReadAccountData() m_nreadcredit = 0; m_nreadbank = 0; m_staccountdata.removeall(); // 읽은데이터를초기화 time_t timer; struct tm *t; - 7 -
/* gets time of day */ // 데이터인덱스가가르키는날짜에대한로그파일을읽음 ( 없으면생성 ) timer = time(null); t = localtime(&timer); timer += ( 3600*24)*(DataIndex); t = localtime(&timer); char LogFileName[50]; 1, t->tm_mday); sprintf(logfilename,"log\\%d%02d%02d.acc",t->tm_year + 1900, t->tm_mon + FILE* fp = fopen(logfilename,"a+"); struct stat64 stat; _stat64(logfilename,&stat); // 로그파일에내용이있으면파일을열고읽고없으면넘어간다. if( stat.st_size > 0 ) { fp = fopen(logfilename,"r"); while(!feof(fp)) { ACCOUNT_DATA Temp; int Check = fread(&temp,sizeof ACCOUNT_DATA, 1, fp); if( Check == 0 ) { break; } m_nreadcredit+= Temp.Credit; m_nreadbank += Temp.Bank; m_staccountdata.add(temp); } fclose(fp); } Datatime = t; } - 8 -
8. 레벨설정 가. 게임화면일때 IO보드의 S/W2을세번누르면위의화면과같이레벨창이화면에출력됩니다. 나. 이창에서게임의난이도를조정할수있습니다. 다. 레벨창에서 HOLD1 버튼을누르면선택창이위로올라가고, HOLD2 버튼을누르면밑으로내려갑니다. 라. 레벨창에서 IO보드의 S/W2버튼을누르면선택된레벨을저장하고레벨창이사라집니다. - 9 -
shark_0030.tga 9. 애니메이션설명 가. 애니메이션은유저의시각적효과를더하기위하여다양한생물들이등장합니다. 나. 애니메이션에는일정한패턴이존재합니다. 다. 배경에등장하는오브젝트는게임내용에는어떠한영향도미치지않습니다. 라. 애니메이션연출패턴 1) 특정족보이상 ( 풀하우스이상 ) 당첨이결정되는시점에당첨세러머니와함께각각의특정동반하여이벤트연출됩니다. ( 예 : 풀하우스결정시점 상어연출후 -> 배당결정후-> 폭죽연출, Str.FLUSH, 결정시점 상어연출후 -> 배당결정후-> 폭죽연출, R.Str FLUSH 결정시점 고래연출후 -> 포커연출 ) 단, 각각의족보와배당결정에는어떠한영향도미치지않습니다 2) 그외의화면연출은랜덤하게연출되며예시나족보결정과는전혀무관합니다. 마. 배경에는다음과같은물고기이미지가수시로지나다닙니다. - 10 -
바. 멍게, 오징어, 참치, 상어, 고래연출의등장시점 멍게 : 15초 ~120초사이 30~40마리사이의랜덤으로연출되며당첨족보와는무관합니다. 오징어 : 20초 ~250초사이 30~40마리사이의랜덤으로쳔출되며당첨족보와는무관합니다. 참치 : 15초 ~120초사이 60~80마리사이의랜덤으로연출되며당첨족보와는무관합니다. 상어 : 풀하우스이상당첨확정시출현고래 : R.Str FLUSH 당첨확정시출현단, 화면연출은랜덤하게연출되며각각의족보결정과는전혀무관합니다. 사. 애니메이션연출패턴에대해전체족보에대한내용스프레이트 : 배당연출없이기본점수풀러쉬 : 배당연출없이기본점수풀하우스 : FULL HOUSE 결정시점 상어연출후 -> 배당리스트중이미결정된배율을보여주며멈추는값에곱하기배당결정후-> 폭죽연출포커 : FOUR CARD 결정시점 상어연출후 -> 배당리스트중이미결정된배율을보여주며멈추는값에곱하기배당결정후-> 폭죽연출및해당카드의그림을상단에연출스티플 : Str.FLUSH, 결정시점 상어연출후 -> 배당리스트중이미결정된배율을보여주며멈추는값에곱하기배당결정후-> 폭죽연출및해당카드의그림을상단에연출로얄스티플 : R.Str FLUSH 결정시점 고래연출후 -> 배당리스트중이미결정된배율을보여주며멈추는값에곱하기배당결정후-> 폭죽연출및해당카드의그림을상단에연출단, 각각의족보의이미지연출은배당결정에는어떠한영항도미치지않으며단순히게임의재미를더하기위한연출입니다. - 11 -
10. 주요화면스크린샷 동전투입대기 게임시작전화면 게임진행화면 ONE PAIR 당첨이벤트 - 12 -
TWO PAIR 당첨이벤트 TRIPLE 당첨이벤트 STRAIGHT 당첨이벤트 FLUSH 당첨이벤트 - 13 -
FULL HOUSE 상어이벤트 포카드당첨이벤트 STRAIGHT FLUSH 당첨이벤트 ROYAL STRAIGHT FLUSH 당첨이벤트 - 14 -
낮배경 밤배경 사용가능한금액초과 운영정보장치에러메시지 - 15 -
멍게연출 오징어연출 참치연출 상어연출 ( 풀하우스, 포카드, 스티플 당첨시 ) - 16 -
고래연출 ( 로티플당첨시 ) 배당연출 ( 1~20배당 ) 배당은미리짜여진확률테이블에의해서만결정되며임의로결정할수없다. 11. 파일설명설치위치 -> C:\ 메가톤폴더에설치메가톤 : 게임설치폴더 image : 게임이미지폴더 *.dds, *.png, *.tga 파일 *.res 파일 : 각이미지의좌표값 Sound : 게임사운드폴더 *.wav 파일 Table : 게임확률정보폴더 *.dat, *.txt 파일 Log : 정산상세내역저장파일 *.acc 파일 / 메가톤폴더메가톤.exe : 게임실행파일 OiddInfo.ini : OIDD 연결설정파일 InitKey.DEY : OIDD Init 키저장파일 (OIDD 최초연결실행시생성 ) msvcp100.dll, msvcr100.dll : 비주얼스튜디오관련 dll d3dx9_27.dll, d3dx9_37.dll : 다이렉트관련 dll hge.dll, bass.dll : 게임엔진관련 dll gulim.ttf : 정산창에서폰트출력을위한폰트파일 SoundVolume.txt : 사운드소리크기를마음대로정할수있도록만든텍스트파일 - 17 -
GameLog.log : 게임로그저장파일 ( 파일이없을시자동생성 ) GameData.txt : 게임데이터저장파일 ( 파일이없을시자동생성 ) data.sys : 게임애니메이션위치값저장파일. time.sys : 게임애니메이션시간값저장파일. * image 폴더구조 image dds back bfish - 이미지파일을모아둔폴더 - dds 파일을모아둔폴더 - 배경관련이미지 - 배경물고기이미지 (bfish01 ~ bfish13) event - 당첨이벤트관련이미지 fireworks - 폭죽이미지 (fire1~fire3) laser - 당첨된카드표시 UI - UI 관련이미지 number_s - UI 하단 Bet, Win 숫자이미지 - insert.dds - insert coin 문구 - start.dds - Push Start 문구 - *.png - dds를제외한게임이미지 - *.res - 위의각이미지에대한내부이미지좌표값 - intro.tga - 로딩이미지 - bottom.tga - 배경바닥이미지 - top.tga - 배경상단이미지 * Sound 폴더 Sound - 사운드파일을모아둔폴더 - 1.wav 홀드 - 2.wav 멍게 - 3.wav 오징어 - 4.wav 참치 - 5.wav 상어 - 6.wav 고래 - 7.wav 점수차감 - 8.wav 카드시작 - 9.wav 카드정지 - 10.wav 스티플 1-11.wav 스티플 2-12.wav 스티플 3-13.wav 로티플 - 14.wav 풀하우스포카 - 15.wav 잔점수 - 16.wav 배경 - 17.wav 주사위시작 - 18.wav 주사위스톱1-19.wav 주사위스톱2-18 -
* Table 폴더 Table - 확률데이터저장폴더 1 ~ 10 - base.dat - Credit 소모시적용될확률파일 - main.dat - Bank 소모시적용될확률파일 - tabledata.txt - 진행중인테이블인덱스값저장파일 *Log 폴더 Log 날짜.acc - 날짜별상세정산내역기록. - 19 -
12. 기기사진 [ 정면 ] [ 후면 ] - 20 -
[ 측면 -1 ] [ 측면 -2 ] - 21 -
[ 조작부 ] [ OIDD ] - 22 -
[ 전원버튼 ] [ 컴퓨터 : 랜포트사용하지않음 ] - 23 -
A : 전원스위치 B : I/O BOARD C : S/W 1~3 D : 운영정보표시장치 (OIDD) E : 지폐인식기 [ 기기내부 ] - 24 -
[ IO 보드 ] 다음과같이각킷값에매칭되어진다. 버튼 A : S/W 1 ( 정산창 - 일일정산 / 총정산 ) : 키보드 t 버튼 B : S/W 2 ( 레벨창 - 1~10 ) : 키보드 g 버튼 C : S/W 3 ( 시스템창 - 종료 / 재부팅 ) : 키보드 n 버튼 START : 키보드 K 버튼 HOLD1 : 키보드 7 버튼 HOLD2 : 키보드 8 버튼 HOLD3 : 키보드 s 버튼 HOLD4 : 키보드 9 버튼 HOLD5 : 키보드 u 표시된버튼이외에는사용하지않습니다. 네트워크기능없습니다. - 25 -
< 문답서 > 01) 이게임물에대한저작권또는유통권의보유여부를기술해주십시오. < 답변 > 보유하고있습니다. 02) 게임콘텐츠에포함된초상권, 저작권보유여부를기술해주십시오. < 답변 > 보유하고있습니다. 03) 배경화면 ( 사운드나기타효과등포함 ) 이게임의이용이나결과에어떤연관관계가있는지기술해주십시오. < 답변 > 배경화면에관련된사운드, 효과, 당첨축하애니메이션들은게임의결과에따라부가적으로표현된것이기에게임의진행과는연관관계가없습니다. 04) 배경화면의출현규칙에대해상세히기술해주십시오. < 답변 > 게임설명서 <9 항목 > 참조 05) 배경화면을구현하기위해외부의다른파일을이용할수있는지기술해주십시오. < 답변 > 외부파일은사용되지않습니다. 06) 게임프로그램에포함된모든폴더명과각폴더에포함된파일목록을기술하고, 각파일의용도를자세히기술해주십시오. ( 모든하위폴더포함 / 파일별로기능과설명 / 데이터가저장되는파일은저장되는항목, 자료형, 항목별크기, 저장하는이유등 ) < 답변 > 게임설명서 <11 항목파일설명서 > 참조 07) 확률등게임의세팅에사용되는파일의경우파일에포함된내용과이와관련된소스 ( 상세한주석포 함 ) 를게임물내용설명서에기술해주십시오. < 답변 > < 확률관련설명 > 파일별도첨부하였습니다. 08) 제출한게임프로그램이나, 설명서에포함되지않은게임에관련된또다른내용 ( 파일등 ) 이있는지 기술해주십시오. < 답변 > 없습니다. 09) 제출하신동영상과실제게임물의내용이동일한지여부를기술해주십시오. ( 편집혹은캡쳐된영상 인지여부포함 ) < 답변 > 제출된동영상에보이는게임의진행은실제게임물과동일합니다. 10) 1 회게임흐름도를작성해주십시오. ( 각이벤트및이용요금이소진되는곳은명확히표시 ) - 26 -
< 답변 > 코인투입 시작버튼클릭 : CREDIT 또는 BANK 금액 100점 ( 원 ) 차감 1차카드오픈 홀드할카드선택후시작버튼클릭 2차카드오픈 족보당첨 (O) 당첨족보확인후족보에해당하는당첨세레모니또는이벤트연출 BANK창에당첨금액합산표시 GAME OVER (1회게임종료 ) 족보당첨 (X) GAME OVER (1 회게임종료 ) 11) 운영정보표시장치에관한사항 ( 해당되는란에 V 표시 ) 확인사항 O X 게임기와운영정보표시장치의통신인터페이스는 RS-232C이며, 통신규약은 ASN.1 기준으로처리하며, encoding/decoding은 BER임운영정보표시장치는하나의게임기와인증 ( 등록절차 ) 이후다른게임기에장착하여사용하지아니함 REQUEST 전송시 RESPONSE/ACK 응답을받기전에다른 REQUEST를발생시키지아니함부팅시운영정보표시장치와반드시연결하고, 연결후게임기가종료되기전까지운영정보표시장치와연결상태를유지하며통신함 REQUEST 수신시반드시 RESPONSE/ACK 응답을해야하고, 응답수신 TIMEOUT은최대 2초이내임 FAIL응답또는 TIMEOUT 시에는 3회재전송을수행해야하며, 3회재전송후에도실패시에는모든동작을멈추고에러메세지창을표시함에러메세지창은화면의가로, 세로 1/3이상으로게임화면의중앙에표시함 gameid와 gameinitkey를이용해서 OIDD에접속함운영정보표시장치와연결상태를확인하기위해 180초마다 LINK메세지를전송함장치에러메시지를수신하면에러메세지를표시하고에러가해결될때까지작동을중지해야함당첨점수, 배팅점수, 사용점수, 누적점수등을 OIDD로전송함 V V V V V V V V V V V 12) 운영정보표시장치와기기간의통신규격을준수하는지기술해주십시오. < 답변 > 운영정보표시장치통신규격을준수합니다. 13) 특정배당을가지고있는이미지가있는지기술해주십시오. < 답변 > 없습니다. 14) 설명서나본질의에기술한내용이외에신청한게임물의내용에대하여설명되지않은부분이있는 지기술해주십시오. < 답변 > 없습니다. - 27 -