본문 바로가기

전체 글

[Youtube] 게임 디자인 #30 ★★★★★ 캐릭터 디자인의 중요성 좋은 퍼즐을 만드는 방법 스킬 트리 보스 공격 패턴 ★★★★☆ 어떻게 (악랄하지 않게) 유저를 몰입시키는가 유기적인 게임의 정의 디테일한 게임 애니메이션_생동감 넘치는 캐릭터 그래픽 디자인(UI) 게임 설명, 어디까지 해주어야 하는가 ★★★☆☆ 찰진 타격감, 효과음, 효과, 액션의 중요성 게임 밸런스2 두 장르를 합친 게임 동료 컨텐츠 ★★☆☆☆ Elo 시스템 게임 밸런스 탐험하는 게임(오픈월드) 디자인 그래픽 디자인(UI)_ver2 (은밀한)난이도 조절 시스템 레이싱 게임, 모두를 위한 디자인 ★☆☆☆☆ Scoring System으로 유저를 통제한다는 것 Disabilities를 위한 게임의 배려 어려운 게임, 을 위한 이지모드는 과연 좋은 것일까 현실같은 디테일한 게.. 더보기
소켓 프로그래밍 소켓 프로그램이란 : 소켓은 컴퓨터를 네트워크에 접속시키는 역할, 그러한 소켓을 이용한 프로그래밍 ###잘못된 내용이 있다면 알려주세요! #이론 네트워크에서 데이터들이 전송되는 방식 네트워크에서 돌아다니는 데이터의 규모와 용도는 굉장히 다양합니다. 이러한 데이터들의 전송을 관리하려면 일정한 규칙이 필요했습니다. 때문에 작은 데이터 하나를 전송해도 수많은 규칙에 따라 패키징 되어 전송되게 되는데, 그 수많은 규칙들을 프로토콜이라고 합니다. TCP/IP 4계층 응용 계층 : 어떤 데이터인지 전송 계층 : 어떻게 보낼 것인지 인터넷 계층 : 전달 네트워크 계층 : 전달(네트워크 하드웨어, 드라이버) ex) 실시간 데이터가 전송이 필요하니까 IP주소로 UDP방식을 통해 데이터를 전송해야지 #응용 소켓 프로그래밍.. 더보기
[Unity] 유니티는 단일 쓰레드 쓰레드를 열어 통신을 하고 수신된 값으로 씬을 열다가 오류가 났다. UnityException: @@@@ can only be called from the main thread. 유니티에서 지원하는 함수는 메인 쓰레드에서만 호출하라는 에러였다. 유니티는 단일 쓰레드로 프로세스를 처리한다. 새로운 쓰레드에서 단일 쓰레드에 끼어들 수 없다. 때문에 새로운 쓰레드에서 작업한 내용은 변수에 담아두고 메인 쓰레드에서 꺼내서 사용해야한다. void OnReceving() { while (true) { mSocket.Receive(data); mData = data; mIsResponsing = true; } mSocket.Close(); } // @유니티는 단일 쓰레드로 동작 // @ 통신 스레드에서 데이터가 오면.. 더보기
[Unity] MonoBehaviour 참고 링크 : https://skuld2000.tistory.com/25 Mono Behaviour 닷넷 프레임워크를 사용하기 위해 개발된 것 Mono를 활용하여 만든 기본 클래스 Monobehaviour 유니티 엔진에서 호출되는 콜백 함수를 제공 : MonoBeHaviour를 상속 받았다면 해당 콜백함수들을 계속 돌리고 있다는 뜻, 사용하지 않는다면 제거하는 것이 좋다. 더보기 상세 FixedUpdate 특정 시간마다 호출 (균일한 간격의 작업이 필요할 때 사용 : ex) 부드러운 이동) Update 매 프레임 마다 호출 (Input과 같이 매 프레임마다 체크가 필요할 때 사용) Start/Awake Start는 활성화 이후에 호출됨 (개인적으로)비활성화 상태였다가 활성화시켜서 사용하는 프리팹의 경우 .. 더보기
[C++]가상 함수 가상 함수 호출시 상속관계에 있는 클래스 중 실객체의 함수가 호출 가상 함수 동작 과정 : 가상 함수 선언시 자료형 판단 시점이 런타임으로 미뤄짐 가상 함수의 필요성 포인터 자료형 상관없이 실객체 함수 호출이 필요할 경우 다형성 인터페이스 더보기
[Unity] Json 라이브러리 Json 문자열을 다루기 위해 Unity의 JsonUtility를 사용했었다. 하지만 JsonUtility는 UnityEngine.dll 함수이기 때문에 외부 프로젝트에서 동일하게 사용할 수 없었다. UnityEngine.dll를 참조한 라이브러리 만들기 때문에 다른 Json 라이브러리를 사용하였다. NewtonSoft.json 프로젝트 -> Nuget패키지 관리 -> Newtonsoft.Json 다운로드 사용 예시 Json -> String JObject.FromObject(dic).ToString(); String -> Json Dictionary praram = JsonConvert.DeserializeObject(parameter); 단, 해당 라이브러리를 유니티에서 사용할 경우 빌드할 때 오류가.. 더보기
C#의 Delegate - CallBack 만들기 Delegate - 대리자 말 그대로 생성한 것을 대신 실행가능 = 함수를 대리 실행 시켜 CallBack 을 만들 수 있음 public class utility : MonoBehaviour { // GameObject를 파라매터로 가지는 CallBack public delegate void Del(GameObject obj); } // 오브젝트 Instantiate()으로 생성, 초기화 // 오브젝트 풀에 들어오는 객체들은 모두 objectPoolListener를 상속받음 protected GameObject InstantiateObject() { GameObject temp_obj = Instantiate(m_obj); m_memoryPool.Add(temp_obj); // @warning 오브젝트가.. 더보기
오브젝트풀과 옵저버 패턴 문제 오브젝트 풀에 객체를 생성하고 해제하는 과정에서 객체 클래스와 오브젝트 풀 클래스 간에 생기는 연결이 불필요해 보임 해결 방안 객체 선언 시, 해제할 때 처리하는 콜백함수만 있다면 깔끔하게 처리가능 방법 하나의 클래스가 여러객체를 관리한다는 점에서 옵저버 패턴과 비슷하기에 결합해서 코드 작성 코드 public class bombManager : objectPool { public GameObject m_bomb; // Start is called before the first frame update void Start() { /* delete 콜백 */ utility.Del cb_delete = new utility.Del(DeleteBomb); // 오브젝트 풀에 미리 생성 InitObjectMe.. 더보기