게임 이름 : KILL-COVID19

게임 장르 : 2D 횡 스크롤 액션 게임

개발 도구 : Pygame

 

BeautifulSoup을 이용해 아래 사이트에서 지역별 코로나 확진자 수 데이터를 크롤링 해왔다.

http://ncov.mohw.go.kr/bdBoardList_Real.do?brdId=1&brdGubun=13&ncvContSeq=&contSeq=&board_id=&gubun=

 

코로나바이러스감염증-19(COVID-19)

코로나바이러스감염증-19 정식 홈페이지로 발생현황, 국내발생현황, 국외발생현황, 시도별발생현황, 대상별 유의사항, 생활 속 거리 두기, 공적마스크 공급현황, 피해지원정책, 홍보자료, FAQ, 관

ncov.mohw.go.kr

크롤링해온 데이터를 이용해 전국을 돌며 코로나 병균을 처치하는 2D 액션 게임을 개발했다.

 

youtu.be/ObTL9sWGVTI

 

soundeffect-lab.info/

 

効果音ラボ - 商用無料、報告不用の効果音素材をダウンロード

品質を追求した、商用無料・クレジット表記不要のフリー効果音サイトです。

soundeffect-lab.info

 

'꿀팁' 카테고리의 다른 글

수학/약어 및 기호  (0) 2021.01.14
무료 플로우 차트(Flow Chart) 만드는 사이트  (0) 2020.12.07
무료 아이콘 일러스트 사이트  (0) 2020.12.01
무료 ppt 템플릿 사이트  (0) 2020.12.01

icons8.kr/icons

 

Download free icons, music, stock photos, vectors

Designers, download the design stuff for free — icons, photos, UX illustrations, and music for your videos.

icons8.com

 

'꿀팁' 카테고리의 다른 글

수학/약어 및 기호  (0) 2021.01.14
무료 플로우 차트(Flow Chart) 만드는 사이트  (0) 2020.12.07
무료 게임 사운드 사이트  (0) 2020.12.04
무료 ppt 템플릿 사이트  (0) 2020.12.01

pptbizcam.co.kr/?cat=2&paged=2

 

조땡 템플릿 공유 Archives - Page 2 of 97 - PPT BIZCAM

조땡 템플릿 공유 Archives - Page 2 of 97 - PPT BIZCAM

pptbizcam.co.kr

 

'꿀팁' 카테고리의 다른 글

수학/약어 및 기호  (0) 2021.01.14
무료 플로우 차트(Flow Chart) 만드는 사이트  (0) 2020.12.07
무료 게임 사운드 사이트  (0) 2020.12.04
무료 아이콘 일러스트 사이트  (0) 2020.12.01

게임 개발 동아리 '개발의 민족'에서 팀원들과 개발한 리듬 게임 'Elemental Rush'를 출시했습니다.

개발 기간은 4개월 정도 걸린 것 같네요!

달리는 오토바이에서 원소를 수집하는 캐주얼 리듬 게임입니다.

간단해 보이지만 은근히 어려운게 매력인 게임입니다ㅎㅎ

 

다들 심심하실 때 플레이해보세요!!

 

play.google.com/store/apps/details?id=com.POD.ElementalRush

 

Elemental Rush - Google Play 앱

대학생 인디게임 제작 팀 '개발의 민족'의 모바일 도전기 달리는 오토바이와 함께 원소를 수집하라! 달리는 도로 위에서 불, 물, 번개, 생명, 중력을 경험해보자! 최대한 많은 원소를 수집하여 높

play.google.com

장르: 2D 캐주얼 리듬 게임

개발 엔진: Unity

개발 기간: 4개월

경희대학교 SW융합대학에서 주최하는 해커톤 대회에 처음으로 참여했다.

주제는 'AI와 관련된 모든 것' 이었다.

팀은 나 포함 프로그래머 2명 디자이너 2명으로 총 4명이었다.

회의 끝에 '버거왕 김AI' 게임을 만들기로 결정했다.

 

 

햄버거 조리 AI 개발 외주를 받은 개발왕 김찰리. 그러나 기한 내에 구현에 실패했다...

어쩔 수 없이 자신이 기계 속에 들어가 AI인 척을 하게 된 찰리.

버거왕 김AI가 된 찰리를 도와 진짜 AI보다 빠르고 정확하게 햄버거를 만들자!

 

장르: 2D 캐쥬얼 게임

개발 엔진: Unity

플랫폼: PC, Android

개발 기간: 12시간 (길다면 길지만 짧다면 짧은 시간이었다,,,)

 

결과는 우수상 수상!!

소감을 말하자면 우선 짧은 시간 내에 프로젝트를 '완성'한 점에서 우리 팀에게 큰 점수를 주고싶다.

무엇보다 한땀한땀 모든 이미지 리소스를 그려주신 우리 디자이너분들에게 너무 감사하다.

깃허브로 동시에 작업하다가 중간에 충돌이 몇 번 발생해서 애를 먹기도 했지만 같이 고생한 다른 개발자 친구도 고맙다.

게임도 기대했던 것보다 재밌게 나왔고 완성도도 높아서 매우 만족!!

 

- 플레이 영상

www.youtube.com/watch?v=86xlrEuYzlw

- 프로젝트 설명 영상

www.youtube.com/watch?v=RoxKH3KfNr8

 

직접 플레이 해보세요!!

play.google.com/store/apps/details?id=com.BlackPink.BurgerKingKimAI

 

버거왕 김AI - Google Play 앱

개발자 김찰스는 '햄버거 조리 AI' 개발 외주를 받았지만 기한 내에 개발하지 못하자 자신이 AI가 된다. 버거왕 김AI를 도와 빠르고 정확하게 햄버거를 만드는 게임.

play.google.com

 

1. 개인정보의 처리 목적 (‘https://bora-game-develop-history.tistory.com/’이하 ‘BlackPink’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다.

- 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등

2. 개인정보의 처리 및 보유 기간

 (‘https://bora-game-develop-history.tistory.com/’이하 ‘BlackPink’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다.

② 구체적인 개인정보 처리 및 보유 기간은 다음과 같습니다.

☞ 아래 예시를 참고하여 개인정보 처리업무와 개인정보 처리업무에 대한 보유기간 및 관련 법령, 근거 등을 기재합니다.

(예시)- 고객 가입 및 관리 : 서비스 이용계약 또는 회원가입 해지시까지, 다만 채권․채무관계 잔존시에는 해당 채권․채무관계 정산시까지

- 전자상거래에서의 계약․청약철회, 대금결제, 재화 등 공급기록 : 5년



3. 개인정보의 제3자 제공에 관한 사항

 ('https://bora-game-develop-history.tistory.com/'이하 'BlackPink')은(는) 정보주체의 동의, 법률의 특별한 규정 등 개인정보 보호법 제17조 및 제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다.

 ('https://bora-game-develop-history.tistory.com/')은(는) 다음과 같이 개인정보를 제3자에게 제공하고 있습니다.



4. 개인정보처리 위탁

 ('BlackPink')은(는) 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다.

 ('https://bora-game-develop-history.tistory.com/'이하 'BlackPink')은(는) 위탁계약 체결시 개인정보 보호법 제25조에 따라 위탁업무 수행목적 외 개인정보 처리금지, 기술적․관리적 보호조치, 재위탁 제한, 수탁자에 대한 관리․감독, 손해배상 등 책임에 관한 사항을 계약서 등 문서에 명시하고, 수탁자가 개인정보를 안전하게 처리하는지를 감독하고 있습니다.

③ 위탁업무의 내용이나 수탁자가 변경될 경우에는 지체없이 본 개인정보 처리방침을 통하여 공개하도록 하겠습니다.

5. 정보주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다.

① 정보주체는 BlackPink(‘https://bora-game-develop-history.tistory.com/’이하 ‘BlackPink) 에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.

1. 개인정보 열람요구

2. 오류 등이 있을 경우 정정 요구

3. 삭제요구

4. 처리정지 요구



6. 처리하는 개인정보의 항목 작성

 ('https://bora-game-develop-history.tistory.com/'이하 'BlackPink')은(는) 다음의 개인정보 항목을 처리하고 있습니다.



7. 개인정보의 파기('BlackPink')은(는) 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다.

-파기절차
이용자가 입력한 정보는 목적 달성 후 별도의 DB에 옮겨져(종이의 경우 별도의 서류) 내부 방침 및 기타 관련 법령에 따라 일정기간 저장된 후 혹은 즉시 파기됩니다. 이 때, DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.

-파기기한
이용자의 개인정보는 개인정보의 보유기간이 경과된 경우에는 보유기간의 종료일로부터 5일 이내에, 개인정보의 처리 목적 달성, 해당 서비스의 폐지, 사업의 종료 등 그 개인정보가 불필요하게 되었을 때에는 개인정보의 처리가 불필요한 것으로 인정되는 날로부터 5일 이내에 그 개인정보를 파기합니다.



8. 개인정보 자동 수집 장치의 설치•운영 및 거부에 관한 사항

BlackPink 은 정보주체의 이용정보를 저장하고 수시로 불러오는 ‘쿠키’를 사용하지 않습니fnNextStep();다.

9. 개인정보 보호책임자 작성

 BlackPink(‘https://bora-game-develop-history.tistory.com/’이하 ‘BlackPink) 은(는) 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.

  • ▶ 개인정보 보호책임자
  • 성명 :정보라
  • 직책 :개발자
  • 직급 :개발자
  • 연락처 :01052497646, ycy21004@gmail.com,

※ 개인정보 보호 담당부서로 연결됩니다.

  • ▶ 개인정보 보호 담당부서
  • 부서명 :
  • 담당자 :
  • 연락처 :, ,

② 정보주체께서는 BlackPink(‘https://bora-game-develop-history.tistory.com/’이하 ‘BlackPink) 의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. BlackPink(‘https://bora-game-develop-history.tistory.com/’이하 ‘BlackPink) 은(는) 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.

10. 개인정보 처리방침 변경

①이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는 변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.



11. 개인정보의 안전성 확보 조치 ('BlackPink')은(는) 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적/관리적 및 물리적 조치를 하고 있습니다.

1. 정기적인 자체 감사 실시
개인정보 취급 관련 안정성 확보를 위해 정기적(분기 1회)으로 자체 감사를 실시하고 있습니다.

2. 개인정보 취급 직원의 최소화 및 교육
개인정보를 취급하는 직원을 지정하고 담당자에 한정시켜 최소화 하여 개인정보를 관리하는 대책을 시행하고 있습니다.

3. 내부관리계획의 수립 및 시행
개인정보의 안전한 처리를 위하여 내부관리계획을 수립하고 시행하고 있습니다.

4. 해킹 등에 대비한 기술적 대책
<BlackPink>('BlackPink')은 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신·점검을 하며 외부로부터 접근이 통제된 구역에 시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다.

5. 개인정보의 암호화
이용자의 개인정보는 비밀번호는 암호화 되어 저장 및 관리되고 있어, 본인만이 알 수 있으며 중요한 데이터는 파일 및 전송 데이터를 암호화 하거나 파일 잠금 기능을 사용하는 등의 별도 보안기능을 사용하고 있습니다.

6. 접속기록의 보관 및 위변조 방지
개인정보처리시스템에 접속한 기록을 최소 6개월 이상 보관, 관리하고 있으며, 접속 기록이 위변조 및 도난, 분실되지 않도록 보안기능 사용하고 있습니다.

7. 개인정보에 대한 접근 제한
개인정보를 처리하는 데이터베이스시스템에 대한 접근권한의 부여,변경,말소를 통하여 개인정보에 대한 접근통제를 위하여 필요한 조치를 하고 있으며 침입차단시스템을 이용하여 외부로부터의 무단 접근을 통제하고 있습니다.

8. 문서보안을 위한 잠금장치 사용
개인정보가 포함된 서류, 보조저장매체 등을 잠금장치가 있는 안전한 장소에 보관하고 있습니다.

9. 비인가자에 대한 출입 통제
개인정보를 보관하고 있는 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다.

 

스킬 아이콘에 커서를 올리면 설명이 뜨는 UI를 만들었다. (UI가 안예쁜건.. 아직 안꾸몄어요..)

우선 스킬 아이콘 이미지 컴퍼넌트를 가지고 있는 오브젝트에 SkillIcon.cs 스크립트를 추가한다.

 

UnityEngine.EventSystems의 IPointerEnterHadler와 IPointerExitHanler 인터페이스를 사용한다.

OnPointerEnter는 커서가 이미지 위에 올라왔을 때 실행된다 -> 스킬 설명 켜줌

OnPointerExit는 커서가 이미지 밖으로 나갔을 떄 실행된다 -> 스킬 설명 꺼줌

 

혹시 위 코드대로 해도 이벤트가 실행되지 않는다면 SkillIcon 스크립트를 Image 컴퍼넌트가 있는 오브젝트에 붙였는지 확인하세요!!

 

 

 

위에 처럼 텍스트 길이에 대응하여 오브젝트 크기가 조절되게 하기 위해 몇가지 간단한 설정만 남아있다.

 

 

1. 스킬 설명 Text 컴퍼넌트 오브젝트에 Content Size Fitter 컴퍼넌트를 추가한다.

2. 수직에 대응하게 하기 위해 Vertical Fit을 Preferred Size로 한다.

3. 텍스트가 길어질 때 오브젝트가 위로 늘어나게 하기 위해 Pivot을 (0.5, 1)로 설정한다.

아래로 하고 싶다면 (0.5, 0)로 설정한다.

 

그리고 Text의 부모 오브젝트인 뒷배경 이미지도 함꼐 늘어나게 하기 위해서 다음과 같이 설정한다.

 

1. Horizontal Layout Group을 추가한다.

2. Content Size Fitter를 추가하고 Vetrtical Fit을 Preferred Size로 설정한다.

3. Pivot을 (0.5, 0)으로 설정한다.

Horizontal Layout Group의 Padding을 통해서 원하는 만큼 여백을 줄 수 있다.

 

끝!! 간단한다.

오토체스에서 체스 말(이하 유닛)은 별도의 플레이어 조작 없이 자동으로 전투를 한다.

FSM을 사용해서 자동 전투 AI를 구현해보았다.

 

- FSM으로 상태 관리

우선 유닛이 가질 수 있는 상태를 생각해보자.

평상시, 이동, 공격, 사망이 있을 수 있다.

이후 스턴 상태가 추가될 수도 있지만 우선은 이렇게 4가지로 생각했다.

 

유닛의 상태를 나타내는 Enum을 선언해준다.

나는 직관성과 관리의 용이함을 위해 Unit 클래스 내부에 선언해주었다.

 

 

각 상태에는 다음과 같이 발생해야 할 3가지 이벤트가 있다.

1. 상태 진입

2. 상태 유지

3. 상태 탈출

 

각 상태들의 이벤트를 다른 스크립트에서 관리하기 위해 인터페이스를 선언한다.

하나의 스크립트에서 해결할 수 있지만 코드가 길어지기면 복잡해지기 때문에 다른 스크립트에서 관리하기로 했다.

 

 

Enter() : 상태 진입시 한번 실행

Stay() : 상태 유지시 Update문에서 매 프레임 실행

Exit() : 상태 탈출시 한번 실행

 

 

이제 각 상태들의 이벤트를 구현하기 위해서 스크립트를 만들어준다.

 

위에는 죽었을 때 이벤트를 구현할 DeadState.cs이다.

이런 식으로 4가지 상태 모두 스크립트를 만들었다.

 

 

이제 궁극적으로 해당 이벤트를 실행할 Unit 클래스로 돌아가서 나머지 작업을 해준다.

 

 

_ISates라는 Array 변수에 각 상태 클래스를 저장해두었다.

이제 유닛의 상태를 나타내는 변수를 선언해준다.

 

위의 코드를 통해 현재 상태 탈출 이벤트 실행 -> 상태 변화 -> 새로운 상태 진입 이벤트 실행 을 한다.

 

 

Update함수에서 Stay함수를 매 프레임 호출한다.

 

- 가까운 적 찾기

구조

Unit이 Idle 상태이면 가장 가까운 적을 검색

적을 찾으면 적을 향해 이동, Move 상태로 변화

못찾으면 Idle 상태를 유지, 검색 범위를 넓혀가면서 계속 검색

 

IdleStae.cs // Stay함수에서 매프레임 타겟 검색

 

Unit.cs // Update문에서 검색 범위 증가

 

- 적을 향해 이동

구조

Unit이 Walk 상태로 타겟을 향해 이동

타겟이 공격 범위안에 들어오면 이동을 멈추고 공격, Attack 상태로 전환

이동 중이나 공격 중 타겟이 죽으면 Idle 상태로 전환하여 다시 가장 가까운 적 검색

 

MoveState.cs

 

AttackState와 DeadState에도 각각 공격할 떄, 죽었을 떄 일어날 이벤트들을 구현하면 된다.

QuickSheet를 통해 Google 스프레드시트로 Google Spread Sheet로 게임 데이터를 관리하면 편리하다.

QuickSheet는 로컬에 있는 Excel도 지원해주는데 나는 Google 스프레드시트를 사용했다.

다른 플러그인들과 비교해봤을 때 QuickSheet의 가장 좋은 점은 Enum 타입과 Array도 지원해준다는 것!!

 

- 설치 / 연동

다운은 아래 GitHub 링크에서 받을 수 있다.

github.com/kimsama/Unity-QuickSheet

 

kimsama/Unity-QuickSheet

Unity-QuickSheet enables you to use spreadsheet file data within Unity editor. - kimsama/Unity-QuickSheet

github.com

 

연동하는 방법은 다루지 않고 데이터를 관리하는 방법만 다루겠다.

연동하는 방법은 아래 블로그에 자세히 나와있다.

 

lhh3520.tistory.com/345

 

[Unity3D] 유니티에 Google Spread Sheet 연동하는 방법

게임을 만들다 보면 케릭터 레벨 별 경험치 라던지 레벨 별 몬스터 데지미 라던지 등등의 수치를 서버에서 받아와야 하는 경우가 있습니다. 물론 서버가 연동이 된다면 서버에 등록해서 받아오

lhh3520.tistory.com

 

- 구글에서 스프레드시트 만들기

 

구글 드라이브 -> 새로 만들기 -> Google 스프레드시트 클릭

 

상단의 스프레드시트 이름과 하단의 시트 이름을 변경해준다.

시트에서 첫번째 행은 속성(Attirbute)들이 온다.

이때 각 행(레코드)을 구별하기 위해서 고유한 속성을 하나 만든다. (추후에 Unity에서 딕셔너리로 관리하기 위해)

여기선 ID가 그 역할을 한다. 따라서 ID는 중복될 수 없다.

 

스프레드시트 이름 : MyGameData

시트 이름 : TestTable

속성:  ID(int), Name(String), Species(Enum), Item(int Array)

 

- Unity에서 Table 받아오기

이제 Unity에서 테이블을 받아오기만 하면 된다.

Enum 타입의 속성을 사용했기다면 미리 해당 Enum을 선언해야한다.

미리 선언하지 않고 Import를 한다면 당연히 에러가 난다.

 

 

Enum 타입을 사용하지 않았거나 이미 선언해놨다면 위의 과정은 필요 없다.

 

Assets -> Create -> QuickSheet- > Tools- > Google을 클릭해서 새로운 Import Setting을 생성해준다.

 

 

SpreadSheetName과 WorkSheet Name을 넣어준다.

그리고 Import를 누르면 아래와 같이 설정한 속성들이 로드된다.

 

 

Type을 지정해주고 Generate 버튼을 누른다.

아래와 같은 로그가 뜨면 성공적으로 Generate된 것이다.

 

 

 

Assets -> Create -> Google -> TestTable(각자 설정한 시트 이름)을 클릭한다.

Download버튼을 누르면 아래처럼 데이터가 Array로 로드한다.

 

이 파일은 이후 사용되니 위치를 기억해둔다.

 

- Dictionary로 테이블 데이터 관리

이제 각 스크립트에서 데이터를 사용하기 편하게 싱글톤 스크립트에서 데이터를 Dictionary로 저장하여 관리하도록 하겠다.

 

게임의 데이터를 관리해주는 TableData라는 싱글톤 클래스를 만들었다.

그리고 위에서 말한 TestTable 파일을 Inspector를 통해 _testTable이라는 변수에 받아온다.

그리고 이 데이터를 저장할 딕셔너리를 선언한다.

나는 ID의 타입이 int 이기 때문에 딕셔너리 Key의 타입을 int로 하였다.

 

Awake나 Start함수 등 게임이 시작됐을 때 위의 코드를 실행한다.

 

다른 클래스에서 데이터를 받아오기 위한 함수

 

이제 다른 클래스에서 위 코드처럼 간편하게 사용할 수 있다.

+ Recent posts