표기법 정리 및 통일(엉망진창 가로세로)
표기법 정리 및 통일1.Variable 과 Method의 표기 방법변수나 함수, 유형(Type)은 띄어쓰기를 허용하지 않는다. 만약 이들의 이름을 여러 단어를 이어서 짓고 싶다면 띄어쓰기 없이도 각 단어를 알아볼 수 있는 방법이 필요한데, 이를 위해 다양한 방법이 사용되고 있다.1.1 카멜 표기법i...
읽어보기hobby
직접 기획하고 구현한 게임 프로젝트 기록
표기법 정리 및 통일1.Variable 과 Method의 표기 방법변수나 함수, 유형(Type)은 띄어쓰기를 허용하지 않는다. 만약 이들의 이름을 여러 단어를 이어서 짓고 싶다면 띄어쓰기 없이도 각 단어를 알아볼 수 있는 방법이 필요한데, 이를 위해 다양한 방법이 사용되고 있다.1.1 카멜 표기법i...
읽어보기리팩토링현재 게임은 빠르게 만들기 위해 중복되는 함수가 존재하고, 모듈화를 시키지 못하였다. 오브젝트 매니저 형태로 게임을 전반적으로 관리하는 스크립트들은 점점 비대해져 관리하기 힘들어져 코드를 전체적으로 수정할 필요를 느끼게 되었다.전반적으로 서버와 게임에서의 메서드를 구분하고, 중복된 함수 제거...
읽어보기뒤끝 버전 관리빌드 할 시에 버전을 관리하는데 버전을 토대로 게임의 업데이트 여부를 확인하고 선택 또는 강제로 업데이트를 진행하여야 게임을 플레이 할 수 있게 하였다.Backend.Utils.GetLatestVersion();//Example(비동기 및 SendQueue에서도 동일한 로직으로 사용할...
읽어보기뒤끝 랭킹뒤끝서버에서 랭킹까지 지원한다. 현재 랭킹은 1~100등까지만 확인할 수 있게 해두었다.1)유저 랭킹 갱신uuid의 랭킹을 갱신함과 동시에 테이블의 row에 저장된 데이터를 갱신합니다. 랭킹에 사용한 테이블의 정보를 바탕으로 유저의 정보를 랭킹에 갱신한다.Param param = new P...
읽어보기뒤끝 차트차트 관리로 단어와 사전 csv를 관리할 수 있다. 뒤끝 콘솔에 등록할 수 있고, 차트 버전도 관리를 할 수 있다.1)차트 조회차트 목록을 조회한다.Backend.Chart.GetChartList();{ //GetReturnValuetoJSON rows: [ /...
읽어보기뒤끝 정보뒤끝 정보는 유저의 게임 정보와 트랜잭션이나 Where 절을 통해 관리할 수 있다. 현재 프로젝트에서 주로 사용하는 코드만 포스팅하였다.1)테이블 조회모든 테이블의 정보를 가져옴Backend.GameData.GetTableList();{ //GetReturnValueToJSON ...
읽어보기뒤끝 구글 로그인구글 로그인은 GPGS(Google Play Game Service)사용하여 커스텀과는 차이가 크다. 커스텀은 서버의 정보를 불러오거나 입력하는 구조로 간단하지만, GPGS는 GCP(Google Cloud Platform)와 GPC(Google Play Console)에서의 설정을 ...
읽어보기뒤끝 커스텀 로그인현재 프로젝트는 기본적으로 커스텀 로그인과 구글 로그인을 지원한다. 간단히 닉네임만 설정하여 회원가입할 수 있다. 회원가입을 할 때 커스텀 로그인으로 구현하였지만, 게스트 로그인으로 나타내어 구글 연동을 할 경우에만 다른 기기나 다시 로그인을 진행할 수 있고, 커스텀 계정으로 로그...
읽어보기뒤끝서버[뒤끝서버 홈페이지] https://developer.thebackend.io/ 뒤끝서버에서 지워해주는 다양한 기능이 있다. 뒤끝베이스 뒤끝베이스는 게임 개발에 필수적인 게임 유저 관리와 게임 데이터 관리를 포함해 다양한 기능을 지원 뒤끝챗 뒤...
읽어보기스테이지 생성방식 2[이전 글 확인] https://cheondi.github.io/mess/2021/12/14/mess6.html4.단어 총 갯수 확인 및 test단어의 갯수와 test를 통해 추가적으로 단어가 이상하게 겹쳐지는 부분이 없는지 확인한 이후 문제가 생길 경우 게임을 재생성하는 방식이...
읽어보기스테이지 생성방식0.화면 구성위의 이미지에서 보면 MainPanel과 SubPanel로 나뉘어져 있고, 가운데는 Button들을 배치하였다. MainPanel의 하얀색 빈 칸을 채워가며 게임을 플레이하는 방식이다. 보기가 SubPanel에 위치해 있다. SubPanel의 오브젝트들을 끌어서 빈 칸을...
읽어보기DotweenDotween은 유니티에서 사용할 수 있는 애니메이션 asset이다.사용법using DG.Tweening;상황마다 다르겠지만, 이번 프로젝트에서는 대부분 Domove만 쓰거나, sequence를 이용해 오브젝트를 이동시켰다.아래의 코드는 예시 상황이다.public class test :...
읽어보기단어정리기존의 ‘형태소 사전’에서 다운받아 단어를 추려 사용하였다. 사용된 단어들의 범주가 중구난방이여서 대부분의 사람들에게 어렵게 느껴질 수 있고, 추리는 입장인 나도 애매한 단어가 너무 많이 보였다. 그래서 현대인들이 자주 쓰는 단어를 사용하기 위해, 국립국어원의 사전 중 ‘한국어기초사전’과 ‘...
읽어보기배경화면배경화면은 기존의 구성되어 있던 이미지를 흘러가는 구조로 만들었다. 기존의 Metarial을 이용한 흘러가는 배경화면은 안드로이드 테스트에서 흘러가는 것이 작동하지 않아 수정하였다.[blog] https://hangjastar.tistory.com/43 위 블로그의 소스코드로 만들었다. u...
읽어보기Object 이미지 변경 및 추가 패널전체적으로 컨셉에 부합하게 혼란한 컨셉의 이미지로 설정하였는데, 게임을 플레이를 하거나 UI 글씨를 읽는 부분에 있어서 혼선이 있어, 폰트를 일부 수정하고 UI도 약간 조정을 하였다. 추가적으로 생성한 패널들에는 깔끔한 이미지를 적용하고, 폰트도 가독성이 좋은 ...
읽어보기엉망진창 가로세로 수정 내용 요약Object 이미지 변경 및 추가 패널게임의 이미지와 맞게 혼란한 컨셉의 이미지를 제작하고, 그에 맞는 폰트를 다운 받아서 적용하였다.배경화면기존의 Metarial을 통해 흘러가는 화면을 구성하였는데, 이는 안드로이드 빌드 시 에러로 인해 적용이 안되는 관계로 기존의...
읽어보기엉망진창 가로세로 수정안1.Object 배치현재의 GameObject들이 난잡하게 구성되어 있고, image와 sprite 구분 없이 배치되어 배치 순서가 난잡하여 UI가 GameObject의 밑으로 가거나 겹쳐서 보이는 부분이 있다. 이 부분을 바로 잡기 위해 UI 부분은 image로 구성하고 인...
읽어보기code게임 전체 코드이다.//image_tab.csusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class image_tab : MonoBehaviour{ ...
읽어보기게임 영상게임은 따로 빌드하지 않고 프로젝트를 두 개를 만들어 시뮬레이션을 돌려 보았다. 유니티의 구형 버전에서는 한개의 프로젝트의 path를 바꿔 여러 개를 켤 수 있지만, 현재는 되지 않는 모양이다. 두개의 유니티를 켜고 구현하는 영상을 유튜브 link를 올린다.
읽어보기Game 종료 및 BackEndMatch 서버로 결과 전송플레이어의 체력이 0이 되거나, 기권을 하게 되어 게임의 승패가 갈릴 경우에는 게임이 끝나게 된다. 제일 먼저 공격을 받고 플레이어가 죽으면 CheckBossDie 코루틴이 동작한다. 여기서 다시 GameOver 코루틴이 동작하게 된다.아래의...
읽어보기기권게임을 진행할 때 일시정지 버튼을 통해 게임에 기권을 할 수 있다. 게임 중에는 게임에서 나갈 수 없으며, 게임에 기권하면 패배하게 된다. 기권을 하는 동시에 기권을 송신한다. 기권을 할 경우에 플레이어는 데미지를 100을 받게 되고 죽게 된다. //기권 public void Reno...
읽어보기데이터 전송모든 행동에는 데이터 전송이 필요하다. 턴을 넘길 때도, 몬스터를 소환할 때, 공격을 시도했을 때, 능력이 발동될 때, 카드를 뽑았을 때 등 모든 상황에 능력이 발동된다. BackEnd 서버에서 지원해주는 함수는 Backend.Match.SendDataToInGameRoom(data)로 ...
읽어보기AbilityManagerAbilityManager은 몬스터의 능력을 발동시킨다. Update 문에서 지속적으로 확인한다. 몬스터의 능력은 여러가지 상황에서 발동되는데, 턴 시작 시, 소환 시, 공격 시, 공격을 당할 시, 턴 종료 시, 몬스터가 죽을 시 등 다양한 상황에 발동된다. 위의 상황들을 ...
읽어보기ToolTipManagerxml에 있는 능력에 대한 설명을 entity 위에 마우스를 올릴 시에 간단한 툴팁으로 보여준다. < ToolTip >xml의 설명 <row> <NUM>1</NUM> <NAME>도발</...
읽어보기EntityManagerEntityManager에서는 entity들을 관리한다. entity들의 움직임, 공격, 소환되는 것을 관리 1.EntityAlignmentEntity가 죽거나, 소환될 때 호출되며 entity를 정렬한다. public void EntityAlignment(bool i...
읽어보기CardManagerCardManager를 통해 카드를 관리한다. 1.덱 구성, shuffle, popitem class의 구성 요소이다. public class Item{ public string name; public int attack; public int health; ...
읽어보기TurnManagerTurnManager에서는 턴을 관리하고, 코스트를 관리한다.1.턴게임 시작 code WaitForSeconds delay05 = new WaitForSeconds(0.5f); public IEnumerator StartGameCo() //게임을 시작 { ...
읽어보기GameManagerGameManager는 게임의 시작과 끝을 관리하고, 치트키를 설정하여 게임을 좀 더 빠르게 테스트한다.1.게임 시작TurnManager에 있는 시작 코루틴을 불러와 게임을 시작 public void StartGame() { StartCoroutine(Tu...
읽어보기Cursor1.Cursor Image커서의 이미지는 따로 Texture Type을 지정해주어야 한다. import한 이미지를 클릭하여 보면 설정을 바꿀 수 있다. 바꾼 뒤에는 apply를 꼭 눌러야 한다.< Texture Type 변경 >< 커서의 Texture >2.Code커...
읽어보기게임 구조 및 오브젝트 설명게임은 턴제 게임으로, 게임 시작 시에 턴을 정한다. 정하는 방식은 덱 제일 위의 카드의 code가 더 큰 사람이 먼저 시작한다.(같다면 다음 카드를 비교하는 방식)자신의 턴에는 카드를 소환할 수 있고, 카드를 소환하면 entity 형식으로 필드에 소환된다. 소환된 ent...
읽어보기InGame 화면 구성< 게임 화면 >게임 화면에서 아래 진영은 나의 진영, 위 쪽은 상대 진영이다.인게임의 화면 구성은 내 손의 카드, 플레이어, entity, 덱, 코스트, 턴 종료 버튼, 일시정지 버튼으로 구성되어 있다. 화면 구성은 단순하게 제작하였다. 모든 리소스들은 메이플스토리...
읽어보기BackEndMatch 구현구현 단계에서는 BackEndMatch에서 기본적인 것만을 구현했으며, 게임의 있어서 문제가 되지 않을 정도로 구현했다. 서버에 대한 문제와 에러는 고려하지 않은 상태로 구현했기에 코드가 단순할 수 있다. 1.BackEndManagerMain Scene에서 부터 BackE...
읽어보기BackEndMatch 설명BackEndMatch는 뒤끝서버에 지원하는 뒤끝매치라는 것이다. 이를 통해 매칭을 지원하고 게임에 필요한 데이터를 통해 게임을 진행할 수 있다.1.매치 서버 구조매치 서버의 구조를 보면, 로그인 된 유저가 ‘매치 서버’에 접속 한 뒤, 매칭을 신청하는 것까지 진행된다. ...
읽어보기덱 설정 및 저장(backend 서버를 이용해 내 데이터 수정) 및 카드 배치덱을 게임 내에서 수정하고, 그 정보를 서버에 입력할 수 있다.1.덱 설정 및 저장2개의 scroll view를 통해 내 카드 목록에서 deck 목록으로 마우스 드래그를 이용해 옮겨 카드를 추가 및 제거를 한다. deck에...
읽어보기카드 및 미리보기 이펙트 설정기본 화면에서 카드를 확인할 수 있도록 하였고, script를 통해 이펙트를 설정하였다. 1. 카드 생성앞의 post에서 카드를 생성할 item을 미리 만들어 두었다. 이 item을 바탕으로 Image의 형식의 카드를 생성한다.카드는 Prefebs를 통해 UI에서도 잘 ...
읽어보기Xml 읽기 및 BackEnd 서버에서 내 데이터 불러오기카드의 데이터는 xml을 통해 저장되고, 카드의 정보를 불러오는에는 카드 고유의 코드를 이용한다. < xml 데이터 >1.서버의 deck 데이터를 통해 xml 정보 매칭하여 카드 생성System.xml.linq의 쿼리문을 통해 카드...
읽어보기Main 화면 구성Main 화면은 게임 입장에 위한 대기 또는 준비 화면으로 게임을 통한 전적, 내 정보, 환경 설정, 덱 설정 등 다양한 준비를 할 수 있다.1.기본 화면< 기본 화면 >기본 화면에서는 캐릭터의 경험치, 레벨, 전적 등 캐릭터에 대한 전반적인 정보에 대해 볼 수 있다.2...
읽어보기Scene 전환using UnityEngine.SceneManagement; // 꼭 써주기 public void scene_chage() { SceneManager.LoadScene("MAIN_SCENE"); //입력한 이름의 Scene으로 이동 }Scene 전환이 안...
읽어보기로그인 기능 - 2부 backend 서버를 이용한 로그인 및 데이터 저장“뒤끝서버”를 이용하여, 회원가입하고 로그인하여 유저의 정보를 생성하고 게임에 필요한 데이터를 쉽게 관리할 수 있다. 1.뒤끝서버“뒤끝서버”는 게임 서버에 전반적인 sdk를 지원하고 “뒤끝베이스”, “뒤끝챗”, “뒤끝매치”, “...
읽어보기로그인 기능 - 1부 크롤링크롤링은 웹 페이지를 그대로 가져와 거기서 데이터를 추출해 내는 행위이다. 주로 python에서 많이 사용되었다. C#에서도 크롤링을 사용할 수 있는데 Selenium이라는 라이브러리를 활용하면 할 수 있다. 이러한 크롤링 기능을 이용하여 웹페이지에서 로그인한 후 캐릭터 ...
읽어보기Title 화면 Object1.로그인 InputFieldInputField를 이용하여 유저의 아이디와 비밀번호를 입력 받는다. 비밀번호의 경우 InputField의 Content Type을 password로 바꿔주면 **로 입력된다. 아이디를 입력받고 키보드의 tab 키를 누르면 자동으로 비밀번호로...
읽어보기Title 화면 구성1.게임 시작 화면< 게임 시작 화면 >< 넥슨 계정 로그인 화면 >< 메이플스토리 계정 로그인 화면 >게임 시작 시에 구성되는 화면으로 넥슨 홈페이지와 최대한 비슷하게 구성하였다.2.로그인 화면< 로그인 실패 화면 >< 로그인 성...
읽어보기게임 소개메이플스토리의 IP를 활용하여 하스스톤 스타일의 게임을 구현1. 게임의 개요게임의 유저는 자신의 넥슨 계정을 이용하여 로그인 할 수 있고, 플레이어는 50장의 카드를 가지고 다른 유저와 카드로 배틀을 하는 구조이다. 자신이 덱을 직접 구성할 수 있고, 각 카드에는 고유한 효과나 능력을 보유...
읽어보기1. 게임 구성가. 플레이어(1) 직업별 분류 전사A. 히어로 마법사A. 비숍 궁수A. 보우마스터 도적A. 섀도어 해적A. 캡틴(2) 스킬 히어로분노: 이번 턴에 한하여 소환된 자신의 모든 몬스터들의 공격력이 1씩 상승한다. 비숍힐: 즉시 플레이어 자신의 체력을 3회복한다. 보우마스터...
읽어보기단어 찾기방대한 양의 단어들을 찾기 위하여, K-ICT 빅데이터센터에서 형태소 사전을 가져왔다. 초기 단어는 100만개로 그 중 3,4,5 음절인 단어를 추출하기 위하여, 단어를 “우리말샘”이라는 국립국어원의 자식 사이트에서 크롤링을 통해 검색하고, 북한말이거나 방언인 것을 모두 걸러내었다. ...
읽어보기1.Game 설명 없이 임의의 빈 칸을 보기 칸에서 음절을 한개씩 터치를 통해 옮겨 단어를 완성! 모든 단어를 완성하면 다음 스테이지로 이동 중간에 게임을 종료할 시에 현재 진행 중인 게임은 없어짐 200단계마다 칸 수가 증가하며, 1~200단계(10X10), 201~400(11X11)...
읽어보기