방준선

'쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발'에 해당되는 글 10건

  1. 페르시아 AI 1
  2. 61일차(4-01) 시연회 1
  3. 58일차(3-18) 시연회 연기 1
  4. 57일차(3-17) 동영상/사운드 재생 1
  5. 프린스 1
  6. 프린스 작업 1
  7. 페르시아 1
  8. pop2 1
  9. 43일차(3-03) VLD 메모리 릭 체크 1
  10. 42일차(3-02) 삼각함수 1

페르시아 AI

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

몬스터의 AI

기존의 문제점:

Attack Collider

공격받았을 때 기존 자신의 공격 콜라이더를 안 없앤다


기존의 방식:

몬스터가 4프레임(찌르는 모션) 때 공격 콜라이더 생성

5프레임(찌르고 뒤로 가는 모션) 때 공격 콜라이더 삭제


방안1.

5프레임 때 삭제하는 것이 아닌 공격 여부에 대한 bool 변수??

true이면서 4프레임이 아니면 무조건 삭제??

-> 이럴 경우의 문제점: 플레이어의 경우 카운터


if ((m_dwState & STATE_GET_ATTACKED || m_isBlocked) && m_isAttack)

Remove_AttackCollider();


몬스터의 추적


기존의 몬스터는 플레이어와의 거리를 통해서 이동하고 공격범위(단순한 float) 내에 들어오면 공격


문제점: 일반 공격은 다 막아야 하는 몬스터가 이동 중일 경우 플레이어의 공격에 맞게 되있다


몬스터가 플레이어와의 거리를 통해서 이동하는 것은 그대로 두되 공격범위 대신

몬스터의 프레임 X사이즈를 intersectRect로 이용해서 좀 더 정확한 거리 계산??


점프해서 벽에 올라타기

???d

61일차(4-01) 시연회

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

5일 동안의 방학이 끝나고 시연회 발표날!


오늘을 노래로 표현하자면







정말이지 이게 아닌데..


내 순서는 총원 26명중 22번째!

새벽까지 코딩하느라 제정신이 아닌 상태로 학원에 갔다

오전은 핫식스 좌몽 맛으로 버텼는데

오후가 되니 졸려 죽을맛,,,

시연회는 1시부터 시작이었고

나는 22번째라 한참 남았었다


차례대로 나가서 간단한 자기소개와 게임을 설명하다보니 어느덧 내 차례가 왔다

졸려서 멍 때리다 내 차례도 놓칠뻔했다,,,


그리고 대망의 발표!


보스가 중간보스를 소환하고

중간보스는 플레이어의 일반 공격은 다 무시합니다하고

말끝나기 무섭게

중간보스는 플레이어의 공격에 맞았다


어?


막아놨는데 왜 찔려?

왜?

하필이면 그때?


해골은 플레이어의 일반 공격에 맞아도 죽지 않고 자파가 쏜 아따따뚜겐에 맞아야만 죽는다는 걸 설명해야 하는데 쇼크받은 나머지 바로 넘어가버렸다


심지어 막보 자파는 텔레포트 하다 

자신이 쏜 아도겐에 맞고 죽었다




정말 총체적 난국이었다,,


버거센세는 그동안의 페르시아의 왕자 모작 중에 가장 잘 만든 것이라 하셨지만,,

맘이 편치 않았다,,,


점수는 10점 만점 중 8.5점으로 4명이서 공동 2등이 되었다,,


1등은 메탈슬러그(본편에 맞먹을 정도로 정말 잘 만들었다)와 테일즈 위버!

메탈슬러그를 만드신 형은 전공자셨기에 납득이 됐지만

테일즈위버를 만드신 누님은 비전공자셨다


이번 방학동안 열심히 집에서 코딩을 하고 이 정도면 되겠지? 라고 생각했었다

좀 더 반성하고 더 열심히 하도록 하자


버거 센세의 전체적 총평


전반적으론 나쁘진않았으나 전체적으로 컨텐츠 부족이 심함.

추가적인 컨텐츠를 꾸준히 더 추가하길 바람.



앞으로 달려가다 벽에 매달리는 것, 아이템을 추가(체력 회복)

AI 강화, 남은 스테이지 20개 추가 등 좀 더 보강을 해야겠다


아 그리고 반의 남막내분이 구현한 몹의 주변에 큰 렉트를 하나 더 둬서 해당 렉트 안에 플레이어가 들어오면 따라다니게 만드는 부분은 좋은 아이디어 같다

58일차(3-18) 시연회 연기

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

원래 내일 7월 24일로 예정되었던 API 시연회가 내가 못해서 방학이 끝난 후인 8월 1일로 연기되었다

센세가 계속 뭔가 부족하다 하시면서 잘만들긴 했지만

역대급이 되기엔 좀 부족하다 하신다


그래서 방학동안 보스전을 구현해보려 한다

기존의 스테이지 마지막 계단을 올라가면 끝이 아니라

보스방으로 넘어가고 보스전이 시작되게 하려고 한다


보스방으로 가면 보스가 기다리고 있고

보스와 1대1 전투를 벌인다.

페이즈 1. 보스와 칼전

보스는 플레이어의 공격을 80퍼센트의 확률로 막을 수 있게 설정

플레이어의 상태가 IDLE이 되는 순간 공격


페이즈 2. 보스에게 한 방 먹이면

보스는 순간이동해서 도망가며 잡몹 한마리가 나온다

잡몹을 잡는 동안 보스가 뒤에서 미사일 발사


페이즈 3. 잡몹이 죽으면 다시 보스와 1대1 칼전

보스가 데미지를 입으면 다시 도망


페이즈 4. 이번에 보스는 바닥(와우?)에 마법진을 그리고 해당 마법진 위로 마법을 날린다

추가로 아까 죽었던 해골을 되살린다

해골은 반드시 보스의 마법으로만 죽일 수 있다


페이즈 5. 해골이 죽으면 마지막 페이즈


추가로 시간이 남는다면 달려가다 벽에 매달리는 것을 구현해보려 한다


'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

페르시아 AI  (1) 2017.08.02
61일차(4-01) 시연회  (1) 2017.08.01
57일차(3-17) 동영상/사운드 재생  (1) 2017.07.24
프린스  (1) 2017.07.21
프린스 작업  (1) 2017.07.17

57일차(3-17) 동영상/사운드 재생

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

사운드와 동영상

센세가 짠 소스를

가져다 쓰도록 해요


사운드 플레잉

사운드가 재생되고 있는지


스탠다드에

다이렉트 세팅에 필요한 헤더파일을 추가해주자

d3d9.h

#pragma comment (lib, “d3d9.lib”) 라이브러리 추가 (링커-입력탭에 추가해도된다)

#pragma comment (lib, “dsound.lib”)

#pragma comment (lib, “win..?.lib”)


_Get)SINGLETON(CDevice)->LoadWave(경로);


SoundPlay(인덱스, 반복)


스테이지의배경음악

총쏠때



비디오 재생->윈도우 핸들

로고 씬으로 가서

멤버변수로 프라이빗 변수 비디오용 핸들

레디 리소스에 추가를 할게요

비디오 재생 헤더


mCIwndPlay


렌더할때

조건문을 잡아서 로고씬일때는 도영ㅇ상을 재생해야 하니까

로고씬에는 그리지 않도록..

씬매니저에서 현재 씬을 가져오게 해주자

씬클래스에다 멤버변수로 씬아이디를 저장해놓고 체크하도록하자


씬로고에다 끝날때(프리)에다 끝내는 코드


월요일날 시연회 검사

주말이면 지금부터 준비해도 충분히 만들 수 있다고 봐요?????



'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

61일차(4-01) 시연회  (1) 2017.08.01
58일차(3-18) 시연회 연기  (1) 2017.07.24
프린스  (1) 2017.07.21
프린스 작업  (1) 2017.07.17
페르시아  (1) 2017.07.11

프린스

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

마지막씬이면

exit검색

exit와 충돌한 상태에서 엔터키를 누르면 stairs

stairs의 마지막 프레임이 되면 종료


씬은 플레이어를 계속 확인하면서 끝나면 씬 종료

'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

58일차(3-18) 시연회 연기  (1) 2017.07.24
57일차(3-17) 동영상/사운드 재생  (1) 2017.07.24
프린스 작업  (1) 2017.07.17
페르시아  (1) 2017.07.11
pop2  (1) 2017.07.06

프린스 작업

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

목요일


캐릭터 컨트롤

내려가기

올라가기-y좌표

달리다 돌기-프레임조절

달리다 점프





남은 작업들

적 AI

칼 싸움

체력 물약

가시 함정

버튼+문

계단

바닥 추락

룸2~24


'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

57일차(3-17) 동영상/사운드 재생  (1) 2017.07.24
프린스  (1) 2017.07.21
페르시아  (1) 2017.07.11
pop2  (1) 2017.07.06
43일차(3-03) VLD 메모리 릭 체크  (1) 2017.07.03

페르시아

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발



목요일

캐릭터 컨트롤

슬라이딩

내려가기

올라가기

돌아서기

달리다 돌기

달리다 점프

앉기


금요일


주말

프레임워크 변경

룸2 씬 이동


남은 작업들

적 AI

칼 싸움

체력 물약

가시 함정

버튼+문

계단

바닥 추락

룸2~24

'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

프린스  (1) 2017.07.21
프린스 작업  (1) 2017.07.17
pop2  (1) 2017.07.06
43일차(3-03) VLD 메모리 릭 체크  (1) 2017.07.03
42일차(3-02) 삼각함수  (1) 2017.06.30

pop2

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

 

 

'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

프린스  (1) 2017.07.21
프린스 작업  (1) 2017.07.17
페르시아  (1) 2017.07.11
43일차(3-03) VLD 메모리 릭 체크  (1) 2017.07.03
42일차(3-02) 삼각함수  (1) 2017.06.30

43일차(3-03) VLD 메모리 릭 체크

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

VLD 메모리 릭 체크

http://blog.naver.com/drunken0915/20198978465


ThirdParty 폴더 내에

Headers

Library

추가


상단에 구성: 활성(Debug)

속성-C/C++/일반->추가 포함 디렉터리

../../ThirdParty/Headers/

링커/일반->추가 라이브버리 디렉터리

../../ThirdParty/Librarys/


디버그 모드

구동코드(메인함수호출코드)+내코드+디버그 코드->릴리즈 모드보다 용량이 크다

->프레임(1초에 내 화면에 그리는 횟수)에도 영향을 준다

-1초에 60번 그려주는 것이 자연스럽고 안정적으로 보인다

(모니터도 1초에 60번, 사람의 눈도 1초에 60번 인식)


릴리즈 모드

배포용 코드(구동코드+내코드)


Client.cpp에

#include "stdafx.h" 밑에

#include "vld.h"

추가

'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

프린스  (1) 2017.07.21
프린스 작업  (1) 2017.07.17
페르시아  (1) 2017.07.11
pop2  (1) 2017.07.06
42일차(3-02) 삼각함수  (1) 2017.06.30

42일차(3-02) 삼각함수

쥬신게임개발학원/2. 윈도우 API를 이용하여 2D어플리케이션 개발

백그라운드를 감싸는 원을 만들고 중심에서 반지름만큼 떨어진 원에서 몬스터 생성


Regeneration_Monster

{

CGameObject* pGameObject;

for(int i = 0; i <20; ++i)

{

pGameObject = CMonster::Create();

if(nullptr == pGameObject)

return false;

CObject_Manager::Get_Instance()->Add_..

}

}


메인앱에 dwTime 변수 (리젠 시간용)

dwTime은 이니셜라이즈 리스트에서 초기화

메인앱-업데이트에서 리젠 몬스터 호출




몬스터의 위치!

거리와 각도(랜덤)를 알면 내접하는 원의 자리를 알 수 있다

사인 코사인 탄젠트

코사인이 가장 많이 쓰지 않을까(추후에 내접..)


삼각함수

점 2개가 있으면 직각 삼각형을 만들 수 있다


피타고라스의 정의

밑변제곱 높이제곱 빗변의 제곱


직각삼각형의 하나의 각은 90도(직각) 하나의 각은 임의의 각일때

밑변/빗변 = 1/루트2


45도 1:1:빗변의 길이?(->루트2)->1/루트2->2/2루트2

30도 1:1:


수학의 함수 Y=2x + 1

Y = 각도


삼각함수: 각도와 Y, Y에 따른 빗변/높이 밑변/높이

사인: 

사인 세타:직각삼각형일때 하나의 각도가 세타일 때 빗변/높이

코사인 : 빗변/밑변

코사인 세타:직각삼각형일때 하나의 각도가 세타일 때 빗변/밑변

탄젠트 : 밑변/높이


나는 빗변의 길이와 높이를 알고 있다->밑변의 길이와 높이를 알면 x,y를 구할 수 있다

몬스터가 태어나는 x1 y1을 알 고 싶다!

->나는 x와 y를 알고(BG의 중심), 임의의 각과 임의의 빗변을 안다

->밑변의 길이와 높이를 알면 x1, x2를 알 수 있다

x1 = x+밑변

y1 = y-높이


밑변 = 빗변의 길이 * 코사인 세타

높이 = 빗변의 길이 * 사인 세타 


cosf(임의의 각) = 코사인세타

각도가 고정적이면 코사인세타는 일정하다

->임의의 각은 Degree가 아니다


math.h에서 사용하는 각도의 단위

각도가 커질수록 원의 호의 길이가 늘어난다 -> 라디안

원의 호의 길이 = 2*파이(원주율->360도 일때의 라디안)*r(반지름)

180도 = 파이

90도 = 2/파이

1도 일때의 라디안 = 2파이/360 = 파이/180


//각도

m_fAngle = rand() % 360;

//빗변의 길이

m_fDistance = 50.f; 


m_fX =WINSIZEX * 0.5f + m_fDistance * cosf(m_fAngle * (3.14f / 180.f());

m_fY = WINSIZEY * 0.5f + m_fDistance * sinf(m_fAngle * (3.14f / 180.f());

'쥬신게임개발학원 > 2. 윈도우 API를 이용하여 2D어플리케이션 개발' 카테고리의 다른 글

프린스  (1) 2017.07.21
프린스 작업  (1) 2017.07.17
페르시아  (1) 2017.07.11
pop2  (1) 2017.07.06
43일차(3-03) VLD 메모리 릭 체크  (1) 2017.07.03