스크립터블 오브젝트
325
投稿した質問数 14
안녕하세요 수업 도중에 한 가지 질문이 생겨서 글 올립니다.
퀘스트를 모듈식으로 조립하기 위해 스크립터블 오브젝트를 많이 사용하던데, 스크립터블 오브젝트는 빌드에 포함되는 에셋 형태이기에, 빌드 용량이 커지게 되고, 사용자가 접근이 가능한 문제가 있다고 알고 있는데, 혹시 제가 이 부분에 대해서 잘못 알고 있는 것일까요?
만약 문제가 맞다면, 스크립터블 오브젝트말고 어떤 식으로 구조를 짜는게 좋을까요?
回答 1
1
수강해주셔서 감사합니다.
ScriptableObject는 Asset이기 때문에 빌드 용량이 커지는 것 자체는 맞으나 Data 객체이기 때문에 유의미한 정도로 늘어나는건 아닙니다. 프로젝트 폴더에서 ScriptableObject Asset의 용량을 확인해보시면 1~2kb 정도 밖에 안하구요, 나중에 Skill처럼 훨씬 많은 Data를 담는 ScriptableObject를 만든다고해도 10kb 내외의 용량을 가지게 됩니다. ScriptableObject를 수 십만개 만드실게 아니시라면 용량은 신경 쓸 부분이 아닙니다.
사용자가 접근이 가능한 문제라는건 아마 언패킹해서 데이터 변조 후 리패킹 하는 것을 얘기하시는 것 같은데요, 데이터 변조는 보안이 뚫린 이상 코드부터 시작해서 각종 에셋들까지 모두 변조가 가능하기 때문에 ScriptableObject만의 문제가 아닙니다.
보안상 가장 좋은 구조는 Database를 구축해서 Quest Table을 만들고, 서버에서 Database와 통신하여 실시간으로 Quest를 조립하고, Quest에 관한 모든 처리를 서버에서 진행, 클라이언트는 Update된 Quest의 정보만 받아오는 구조입니다.
로컬에서 DB와 통신해도 되긴하지만 그렇게되면 DB 수정을 통해 실시간 패치가 가능하다는 것과 ScriptableObject처럼 언패킹을 통한 직접적인 변조가 불가능하기 때문에 우회 변조를 해야한다는 점 정도를 빼면 보안상 큰 이점은 없다고 생각하시면 됩니다.
다만, 아무래도 인디 혹은 개인 개발자가 Database와 서버를 운용하기에는 비용 문제와 기술 난이도 문제가 있기 때문에 싱글 게임이나 인디쪽에선 ScriptableObject 기반 구조나 엑셀 기반 구조로 많이 만듭니다.
감사합니다.
Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.
0
21
2
Quest System의 확장성에 대한 질문
0
106
1
공부 방향에 대해 궁금한 점이 있습니다.
0
141
2
End()와 Complete() 함수를 따로 구현한 의도
0
165
2
Target의 value에 Object 자료형 관련 질문입니다!
0
149
2
TaskGroupState에 대하여 질문이 있습니다
0
111
2
Elite와 Normal Germ의 IsTarget()질문입니다.
0
99
2
퀘스트 시스템을 확장하면서 생긴 의문점 입니다.
0
166
2
퀘스트 클리어해도 동일 퀘스트가 노출됩니다
1
129
3
퀘스트 누적 클리어 횟수에 대해 여쭤보고싶습니다.
0
85
1
프로퍼티 사용 질문입니다.
0
117
1
Task 에서 Object 타입 사용
0
119
2
파일 저장방식, 퀘스트 실패에 관하여 여쭤보고싶습니다.
0
217
1
Destroy() 지연 파괴에 관하여
0
140
1
Action & Delegate
0
178
2
강의에서 리워드 관련 언급은 없으셔서 질문드립니다.
0
275
1
궁금한게있습니다
0
293
1
스크립터블 오브젝트 Instantiate?
0
436
1
원하는 타이밍에 퀘스트를 등록하고 싶다면 어떻게 해야할까요
0
339
1
Quest Cancel() 메소드
0
263
2
Task의 IsEqual
0
227
1
실전예제 UI 자료
0
194
1
Task 예시
1
167
1
퀘스트의 상태인 QuestState를 다른 스크립트에서 받을 수 있나요
1
306
2

