게임개발 11

11일차 - TRPG 팀 프로젝트 1 (Git특강 2회차 + 와이어 프레임)

Git 팁협업 내용을 작성 하기 전 2번째 Git 특강을 들으면서 유용했던 부분에 대해 적어보려한다.Cherrypick: 히스토리에서 원하는 커밋을 골라서 브랜치에 가져오는것 커밋을 할 때는 하단의 사진과 같이 코멘트 앞에 어떤 내용의 커밋인지 카테고리를 남겨두면 좋다. 브랜치를 만드는 과정에서 처음 시작할 때 dev 브랜치 만든 후 기능 브랜치들을 생성해 나가면서 진행하는 것이 좋다. TRPG 협업개인 과제로 진행했던 TRPG에 이어 이번엔 협업으로 진행해보려 한다. 먼저 와이어프레임을 작성해서 전체적인 구조를 정리한 다음 구현을 시작할 계획이다.각 요소들에 어떤 것들이 들어가야 하는지 정리한 부분이다 전체적인 흐름과 각 씬에서 이동해야할 화면들을 정리한 부분이다각 씬별로 어떤 클래스들을 만들고 해당 ..

9일차 - C# 4 (TRPG 만들기 2)

오늘은 어제에 이어 TRPG 제작을 계속해서 진행했다.어제 작성했던 코드는 전체적으로 문제가 자꾸 생겨 아예 다시 코드를 작성했다.이번엔 또 꼬이지 않도록 순서를 먼저 생각하고 해보고자 노력했다.먼저 상단에는 캐릭터와 아이템의 클래스를 정의하였다.클래스 정의// 캐릭터 클래스public class Character{ public string Job { get; } public int Level { get; } public int Atk { get; } public int Def { get; } public int Hp { get; set; } public int Gold { get; set; } public Character(string job, int level, ..

8일차 - C# 3 (인터페이스~LINQ, TRPG 만들기)

▷▶ 학습 내용인터페이스클래스가 구현해야 하는 멤버들을 정의하는 것 인터페이스를 사용하는 이유코드의 재사용성: 타 클래스에서 해당 인터페이스를 구현하여 동일한 기능을 공유하면 다양한 클래스가 동일한 동작을 수행할 수 있음유연한 설계: 클래스의 내부 구현에 대한 변경 없이 인터페이스의 동작을 변경하거나 새로운 인터페이스를 추가할 수 있음// 구조interface IMyInterface{ void Method1(); int Method2(string str);} 예시// 아이템을 사용할 수 있는 인터페이스public interface IUsable{ void Use();}// 아이템 클래스public class Item : IUsable{ public string Name { get; ..

7일차 - C# 2 (배열 ~ 클래스, 객체)

▷▶ 학습 내용배열동일한 자료형의 값들이 연속적으로 저장되는 자료 구조1) 1차원 배열동일한 데이터 유형을 가지는 데이터 요소들을 한 번에 모아서 다룰 수 있는 구조인덱스를 사용하여 요소에 접근 가능선언된 크기만큼의 공간을 메모리에 할당받음// 배열 선언데이터_유형[] 배열_이름;// 배열 초기화배열_이름 = new 데이터_유형[크기];// 배열을 한 줄로 선언 및 초기화데이터_유형[] 배열_이름 = new 데이터_유형[크기];// 배열 요소에 접근배열_이름[인덱스] = 값;값 = 배열_이름[인덱스];// ex)int[] itemPrices = { 100, 200, 300, 400, 500 };int totalPrice = 0;for (int i = 0; i  2) 다차원 배열여러 개의 배열을 하나로 묶..

6일차 - C# 1 (기본 구조~반복문)

이번주는 C#에 문법에 대해 학습하는 시간이다. ▷▶ 학습 내용1. 기본 구조using System;namespace HelloWorld{ class program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }}// 1번째 줄: 네임스페이스를 사용하기 위한 코드. Console 클래스를 사용하기 위해 필요// 3번째 줄: 코드를 구성하는 데 사용되며 클래스 및 기타 네임스페이스의 컨테이너// 5번째 줄: 클래스를 정의하는 키워드. 클래스 이름은 Program으로 지정// 7번째 줄: 프로그램이 시작할 때 자동으로 호출되는 메서드. 프로그램 실행에 필수// 9번째 줄: 콘솔에 출력할 내용을..

3일차 - 멤버 카드 뒤집기 2

어제에 이어 기존 스테이지에 기능 몇가지를 추가했고 이어서 기존의 스테이지뿐만 아니라히든 스테이지를 추가해보는 시간을 가졌다. 기능 추가기능 추가에서 내 역할은 타이머 아래에 슬라이더를 추가하고 시간이 경과됨에 따라 색을 변화시켜긴박한 느낌이 들도록 하는 것이었다. 색의 변화는 Color.Lerp를 이용해 부드럽게 점차 변하도록 할 수 있었다.Color.Lerp를 사용하기 위해서 작성해야 할 것에는 시작색, 종료색, 시간이 필요하다.tSlider.value = time;float t = Mathf.Clamp01(time / maxTime);sliderFill.color = Color.Lerp(Color.yellow, Color.red, t);timeTxt.color = Color.Lerp(Color.ye..

2일차 - 멤버 카드 뒤집기

이번엔 팀 프로젝트로 이전에 만들었던 르탄이 카드 뒤집기 게임을 응용해서 만들어 보았습니다. 비교적 간단한 프로젝트라 주 목적이 완성도라기 보다는Github Desktop을 사용해서 협업하는 것에 익숙해지는 것이라고 생각합니다. 르탄이 이미지 대신 5명의 팀원이 각각 본인을 표현하는 이미지를 각 3장씩 준비했고난이도에 하드를 추가해 하드에서는 30장의 카드를 세팅해 15쌍을 맞추도록 했습니다. 그리고 전부 다 맞출 경우에는 팀원의 이미지 전체가 일괄로 나오도록 하였습니다.   제가 맡은 역할은 노말과 하드모드 각각 성공 시 이미지를 일괄로 보여주는 것과성공과 실패 시에 둘 다에 모두 필요한 요소인 StartScene으로 되돌아가는 버튼 구현입니다. 일괄로 보여주는 부분은 유니티 에디터 상에서 캔버스를 통..

1일차 - Git과 Github

Git 이란?VCS(Version Control System)로 팀 단위의 프로젝트를 진행할 때 공동 작업 하기에 유용한 시스템 Github 용어Commit: 로컬에 변경한 내용을 저장push: 커밋한 내용을 레포지토리에 저장pull: 다른 사람의 push를 내려받는 것Undo: 커밋을 취소Amend: 코멘트만 수정Revert: 푸쉬했던 내용을 되돌리는 것Branch: 소스코드를 분리해서 관리하는 것Merge: Branch를 메인에 합병하는 것

르탄이 카드 뒤집기

네번째 게임 '르탄이 카드 뒤집기' 배치된 카드를 뒤집어 쌍을 맞추는 게임  1. 보드 생성  보드는 for문을 통해 4x4로 만들어 주었고 각 칸에 들어갈 값을 배열로 생성했고각 칸에 들어갈 값들을 정렬할 때는 Lingq 정렬 연산자 OrderBy를 사용하여 우선 순위를 정해 정렬했습니다.  2. 카드 구현 및 배치 카드를 앞면과 뒷면을 나누어 생성했고 뒷면 상태가 활성화 된 상태에서 클릭을 하면 앞면이 활성화 되고그렇게 해서 뒤집은 카드의 정보를 firstCard와 secondCard로 나누어서 각각 저장했습니다. DestroyCardInvoke와 CloseCardInvoke 메소드는 카드 파괴, 다시 덮기 기능을 가졌고 DestroyCard와 CloseCard는 위 메소드 실행에 딜레이를 주어 카드..

고양이 먹이 주기

세번째 게임 '고양이 먹이 주기' 먹이를 발사해 고양이의 배를 채우는 캐주얼 게임1. 먹이 발사 먹이는 화면 하단의 강아지가 발사하며 Start문에 반복 발사와 발사 속도를 작성했습니다. 강아지의 이동은 이전 게임 제작에서도 사용했던 ScreenToWorldPoint를 이용해마우스의 위치를 월드 좌표로 변환했고 화면을 벗어나지 않도록 x축으로 -8.5~8.5 라는 범위를 지정해주었습니다. MakeFood 메소드에서는 먹이 발사 시작점을 정하고 회전하지 않도록 Quaternion.identity를 사용했습니다.  2. 고양이 생성 각 고양이들은 배고픈 상태와 배부른 상태로 나누어 배고픈 상태로 생성되고포만감 게이지가 가득 차면 배부른 상태로 전환되면서 화면 중앙을 기준으로 좌측에 있던 고양이는 좌측으로, ..