본문 바로가기

프로그래밍/게임 개발11

게임에 가장 적합한 유사 난수 발생기(PRNG)는 뭘까 일단 하드웨어 Random은 직접 Random으로 사용하는 게 아니다. 그 이유에 대해선 아래의 글을 참고. https://stackoverflow.com/questions/39288595/why-not-just-use-random-device c, c++에서의 rand() 함수도 고려 대상이 아니다. 일단 rand의 자체의 정밀도는 게임에 쓰기에 큰 무리 없다고는 생각하지만, 가장 문제되는 것은 랜덤 스테이트를 컨텐츠 별 지역화도 할 수 없다는 것 그리고 단일 호출로 발생되는 난수의 범위가 너무 작다는 것이다. Visual Studio 2019 기준 rand()가 반환하는 최대 값은 32767(RAND_MAX)으로, 이것을 강제로 스케일링 해서 원하는 최대 값에 맞춰도 값은 어차피 최대 값 까지 327.. 2019. 11. 1.
유니티(Unity)에서 구글 프로토콜 버퍼 사용 프로토콜버퍼 github 페이지 Release 탭으로 가서 protobuf-csharp를 받는다.https://github.com/protocolbuffers/protobuf/releases 압축을 풀고, 폴더로 들어가서 csharp/src 에 있는 솔루션 파일을 연다. * 여기가 핵심이다.유니티에서 사용 가능한 버전으로 .NET Framework의 버전을 낮춰준다. (2018/10/31일 기준 Unity는 .NET Framework 버전 3.5 초과 버전은 사용할 수 없으므로 3.5로 낮춰주면 된다.) Google.Protobuf 프로젝트를 빌드한다. 빌드돼서 나온 Google.Protobuf.dll을 유니티의 Scripts 폴더로 옮긴다. 이제 유니티 소스 내에서 Google.Protobuf를 참조할.. 2018. 10. 31.
비주얼 스튜디오에서 구글 프로토콜 버퍼(protobuf) 라이브러리 빌드하기 프로토콜버퍼(protobuf)의 버전2는 비주얼 스튜디오 빌드를 위한 별도의 프로젝트인 vsproject가 있었지만, 프로토콜버퍼 버전3에선 별도의 vsproject가 존재하지 않았다. 여튼 proto3를 사용하기 위해 빌드하는 방법을 정리. 프로토콜 버퍼를 다운 받자 프로토콜버퍼 소스를 공식 홈페이지에서 다운 받는다. https://developers.google.com/protocol-buffers/docs/downloads 링크로 진입하면 깃허브 저장소 링크가 있는데, releases 탭에서 최근 릴리즈를 받을 거다.요기서 protobuf-cpp-3.6.1.zip을 받는다. 압축을 풀고 cmake 폴더가 있는 걸 확인하고 고개를 끄덕인다. cmake 폴더가 있다는 걸 꼭 기억하자!! CMake를 설.. 2018. 10. 1.
랜덤 박스 관련 로직 테이블 RandomBox 스키마 이름 타입 Id int RewardType int RewardValue int Probability int reward엔 보상 타입과 보상 값이 있다. 보상 타입이 골드 같은 스칼라로 저장되는 경우 보상 값엔 개수가, 무기, 방어구 처럼 착용 가능한 아이템의 경우 Item의 Id를 기입한다. 랜덤 박스에서 보상 하나 뽑는 함수 코드 샘플 drawRandomBoxReward(randomBoxId){ randomBox = getRandomBox(randomBoxId); randomValue = getRandomValue(1, randomBox.TotalProbability); // 1~최고 값에서 임의의 값 추출 currentValue = 0; ret = null; for(r.. 2018. 8. 22.