1.포톤측에 퀀텀 trial 사용하겠다고 메일 보내기
2.
설치, 샘플 실행
https://www.youtube.com/watch?v=L0XzIU2uJCw
도메인 특화 언어 (DSL: Domain-Specific Languages)
도메인 특화 언어(DSL)란?
도메인 특화 언어는 관련 특정 분야에 최적화된 프로그래밍 언어입니다. DSL은 해당 분야 또는 도메인의 개념과 규칙을 사용합니다.
도메인 특화 언어와 '진정한' 프로그래밍 언어와의 차이점은 무엇인가요?
도메인 특화 언어는 일반적으로 Java, C, Ruby 등의 범용 언어보다 덜 복잡합니다. 보통 DSL은 해당 DSL이 사용될 분야의 전문가와 긴밀하게 협력하여 개발합니다. 대부분의 경우 DSL은 소프트웨어 전문가가 아닌, 해당 DSL의 대상 분야에 능통한 비 프로그래머가 사용하도록 제작됩니다
ast : Abstract syntax tree
뭐 자기들만의 스크립트를 짜놨으니 컴퓨터가 이해하기 위한 최종 결과물로 만드는 컴파일러가 필요할것이고, 컴파일 과정에서 쓰이는 어휘분석의 역할을 하는게 바로 ast라는 추상구문트리(?) 인데.. 이름은 공격적이고 타협의 여지가 없어보이지만 원래 컴파일러의 어휘분석도 분석한 어휘를 트리나 리스트의 형태로 가지고 있으니 결국 같은 역할.
blittable vs non blittable
blittable은 int float byte처럼 기본 자료형이고 non blittable은 class object array 등의 자료형이다
그리 친절한 document는 아니지만 어쨌든 존재하는 photon quantum 문서. 자료형, component등에 대한 설명
https://doc.photonengine.com/ko-kr/quantum/current/manual/quantum-ecs/dsl#4t3nzy6sm0kd7b2y
이건 unity ecs와 형태가 비슷한데, 아마 래핑 해놓은게 아닌가 싶다. 유니티 ecs는 모바일에서 문제가 많은데 어떻게 해결을 한건가? 아니면 자체 ecs를 구현한건가. 어쨌든 굉장히 긴 document의 첫번째 예제가 말이 엄청 길어서 뭔가 새로운 이론을 이야기 하는 줄 알았는데, 결국 "const 상수를 선언한 뒤 변경 불가하다" 라는 ecs system과는 상관없는 헛소리를 하는거같네 도큐먼트를 보면 내부 사정을 유추 할 수 있다고 하더니.. 진짜 이 엔진 써도 되는건가?
아, 쓰고보니 퀀텀 v2 시작하는글에 아직 초기라 문제가 많다. 뭐뭐 해서 v1 써라 라는 말이 있던데, 이거 ecs모바일 불안정성을 암시하는게 아닌가 싶네. 점점 불안해 지지만 어쨌든 쭉 가보자
https://doc.photonengine.com/ko-kr/quantum/current/manual/quantum-ecs/systems
티스토리 임시저장 없어서 너무 불편하네 저장 해 버리면 페이지 변경돼서 수정 하려면 ui 다시 클릭해야하고
그렇다고 저장 안하면 까먹고 종료했다가 몇페이지를 날려먹네
quantum.code
포톤퀀텀은 코드 작성시 유니티에서 c#코드를 건드리는 일도 있지만, 별도의 프로젝트인 quantum.code 프로젝트의 코드를 수정하거나 추가해서 dll을 뽑아다 쓰는 경우가 많다. 이때 기본 제공되는 quantum.code 프로젝트의 빌드가 실패 하는 경우가 있는데, 보통은 .net framework 버전이 맞지 않아서이다. 빌드실패시 예측할수없는 에러가 많이 발생하는데 그래서 더 원인을 찾기 힘들 수 있을것같다. 버전을 완전히 맞춰주지 않더라도 상위버전을 사용하면 보통은 빌드가 될 것이다.
Generate Asset Resources
퀀텀메뉴에서 선택하면 PlayerLink등을 부모 본체에서 자식 오브젝트로 바꿔주는기능 같은데, 이게 튜토리얼의 2019에서는 동작 하는 것 같은데, 2021에서 무반응이다. 이게 돼야 다음걸 진행하는데, 대안을 찾던지 2019를 쓰던지 해야할듯.
=> Resources/DB 폴더에 들어있으면 정상적으로 자식오브젝트가 나온다. "Generate Asset Resources"는 다른 용도인것같고 해당 메뉴를 실행하지 않아도 잘 나온다.
실행하는 이유는 엔티티를 인스펙터에 끌어다놨을때 missing 에러가 나는 경우가 있는데, 이 때 실행 해 주면 엔티티를 잘 찾아온다
포톤 플러그인 사용으로 커스텀한 패킷을 추가 할 수 있는지 확인이 필요.
포톤퀀텀 좀 나한테 맞는 강의를 만들어야할듯.
0. 시작하기0 : 샘플 다운받고 에러없이 준비하기
.net framework version. 4.6.2
4.6.1 x
4.7.1 o
1. 시작하기1 :
- 기본샘플에서 오브젝트 이동, 회전, 점프
- class에서 포인터 사용을 위해 unsafe키워드를 class 키워드 앞에 명시 해 줘야 한다
- 템플릿 인자로 넘겨주는 Filter는 class가 아닌 struct여야 한다
- 캐릭터컨트롤러가 있는 상태에서는 Move함수를 호출 해야 Jump도 작동한다.
- 넘겨받는 Direction 값은 normalized 된 값. Debug.WriteLine 으로 확인
- 로테이션 값을 0이상 일 때 작동하게 해야 깜박거리지않는다.
- dll코드에서 이동값 1이상일때 최소화 시켜주면서 안티치트를 언급하는데, 해킹하고자 마음먹고 해킹하면 전혀 의미없는 행동이다. 유니티 코드상에서 해킹 시도했을때만 의미가 있고 dll 코드에서 바꿔주면 결국엔 1이상의 값을 허용하게 된다
2. 시작하기2 :
- 컴포넌트 추가 : 컴퍼넌트 이름은 자유롭게
- 캐릭터 인덱스 가져오기. player_ref. 필터에 컴퍼넌트를 포인터로 안 넘기고 값으로 넘기면 유니티에서 에러 발생. write 가 아닌 read 가 목적이더라도 무조건 포인터로 선언 해야 함. 포톤에서 정해둔 룰이니 그렇게 쓰도록 하자.
컴퍼넌트를 쓰지 않고 필터에 playerref를 직접 넣어주는것도 불가능. 유니티와 통신하기 위해서는 컴퍼넌트로 감싸주고 필터에 넣어줘야 한다.
- Generate Asset Resources 엔티티미싱해결
- 방장이 미리 시작하고 나중에 유저들이 들어오면 플레이어 추가가 안 된다.
3. 시작하기3 :
- dll 디버깅. 포톤퀀텀 버전별로 되는게 있고 안되는게있음.
stable 버전은 점프하면서 이동이 안됨. 다른 동작을 하면 이전 동작이 정지 됨
- 유니티에 연결 및 재생
4. 시작하기4
- system 상속받는 유형종류. mian, main<>, trigger?
UseCulling 역할은?
unity net code bossroom 베이스로 프로젝트 만들어서 포톤 퀀텀이랑 비교해볼필요가 있을듯하다.
1.넷코드로 포톤퀀텀 시작하기1,2 예제랑 비슷하게 제작
2.보스룸베이스로 실제예제 만들어서 퀀텀과 비교
포톤 퀀텀 기타 프로젝트 각각 역할
-플러그인
https://doc.photonengine.com/ko-kr/quantum/current/manual/custom-server-plugin/overview
-quantum.console.runner
-quantum.console.spectator
순서
Hello Quantum V2.0
V 포톤메뉴얼
V 빠른시작가이드
V api 샘플 ( 실행할건 없고, 나중에 필요한부분 참고만 할것 )
V 애니메이션 ( 패스 )
RogueMoba
'서버엔진' 카테고리의 다른 글
| 유니티 넷코드 ( NET CODE ) & 유니티 MLAPI (0) | 2022.07.28 |
|---|---|
| 포톤 퀀텀2 (0) | 2022.07.24 |