Open gitdainn opened 1 month ago
엑셀로 모든 오브젝트(A, B, C)의 정보를 넘길 때 각 오브젝트의 세부 정보==컴포넌트 정보(Collider, KeyFrame) 등의 정보를 어떻게 넘기냐는 질문!
Collider(position, rotation, offset) KeyFrame( ~~~) 오브젝트마다 가지고 있는 컴포넌트 수도 다르고, 각 세부정보를 구조체로 관리하는건 당연하지만 이걸 엑셀로 관리하는지 바이너리 파일로 관리하는지!
오브젝트별로 땡겨오는게 아니고, 오브젝트를 로드할 때 필요한 컴포넌트를 땡겨오는 방식으로 해야 훨씬 편할것같고. 컴포넌트별로 필요한 데이터를 통일해야함 통일되지 않는다면 그 컴포넌트는 잘못구현된거라는걸 알았으면 좋겠음! 컴포넌트에 대한 개념이 틀려버림.. 이해되기 쉽게 풀어서 이야기한다면 컴포넌트에 특정 데이터를 안쓴다면 0으로라도 채워서 보내야한다는 뜻
ex) 컴포넌트 데이터 로드 -> 오브젝트 로드 및 초기화 단계에서 -> 로드해놓은 곳에서 필요한 데이터 find 및 할당. 깔끔 !
추가로 이런 방법론적인 방법을 물어본다면 답변해주겠지만 실력 향상에 도움이 크게 되지는 않을 것 같음~! 다 경험을 해봐야 할 수 있고 알 수 있는 것들이라고 생각해서! 근데 진짜 난 꼭 더 효율적인 방법을 알고싶어!! 그리고 있을거같아!! 하면 물어봐도 되긴함.. 대신 기회를 놓치는거라고 생각해 코테로 비교하자면 답지를 보면서 푸는것도 도움이되고 실제로 그 방법도 사용하지만, 답지 안보고 더 시간을 쓰고 더 힘들고 어렵게 답답하게 공부하는 사람이 실제 시험 합격률도 높다. 와 똑같음!
앞으로 물어볼때는 다 만들어두고나서, 이렇게 해봤는데 이런거때문에 너무 안좋은거같은데 혹시 더 좋은 생각이 있나 피드백 요청을 했으면 좋겠음!..
지금도 '비효율적'이라는 방식으로 한다고 했지만 그 방식이 다인이 입장에서 가장 효율적인거고 그 방식으로 만들어놓는다고 했지만, 막상 내 방식보면 다시 만들거아녀. 다 하고나서 판단 ㄱㄱ 근데 진짜 이건 너무 아니다 싶으면 버릴 줄도 알아야하고 그렇지만 이 버릴 줄 알아야하는 실력 자체가 버릴 수 있는 코드를 왕창 만들어봤을 때 이야기.
요약 : 지금 이거는 내가 대신 구현해주는거랑 다를게 없어!!!!!!!!!!!! 왜냐? 방법을 알면 코드 타자 치는것 자체는 어려운게 아니니까!!
내가 도와주려는 취지와 주제는, 개념론적(렌더링 등) 어려움, 문법 어려움, 에러 해결 너무 안됨! 그냥 아예 구현 아이디어가 떠오르지 않아서 불가능한거같음!!! ㅜㅠ 이거랑 스컬 제작 상황을 보고 이런것들 해보면 어때?, 이거랑 다 만들어봤는데 이거 너무 별로인거같애. 근데 뭐가 별로인지는 알겟는데 어떻게 더 좋게 할 수 있는지 너무 궁금해! 이것저것 시도해봤는데 다 비슷비슷한거같은데 혹시 피드백가능한가? 요거!
어떤 방식이든 구현 아이디어 자체가 떠올랐다면 물어보지 않았으면 좋겠다~ 요말
Problem
엑셀을 이용한 오브젝트 정보 관리 시 각 컴포넌트에 관한 세부 정보를 어떻게 관리해야 할지 아이디어가 필요함.
Description
진행상황
엑셀 형식
Approach
우리 기존 학원 때처럼 바이너리 파일 하나에 모든 오브젝트의 콜라이더 정보를 저장 -> 각 오브젝트는 엑셀 파일을 읽어 자신이 Create될 때 내부에서 바이너리 파일을 열고 자신의 오브젝트ID로 자신의 콜라이더 정보를 읽어오기 -> 문제점: 오브젝트 하나하나 생성될 때마다 모든 콜라이더 정보가 담긴 바이너리 파일에서 자신의 오브젝트ID와 일치한 정보를 찾아야하는 시간복잡도 최악..
걍 엑셀에 콜라이더의 구조체 정보까지 다 적고 관리해버리기 -> 문제점: 추가할 컴포넌트는 콜라이더뿐만이 아님.. ColliderAABB, ColliderSphere, 그 외 여러 컴포넌트가 계속 생길텐데 엑셀에 이 모든 정보를 적는 건 말이 안됨.
the Answer I Want
Opinion
먼저 실현 가능하나 매우 비효율적인 방법이다. 라고 생각되었지만 더 효율적인 방법이 떠오르지 않는다면, 매우 비효율적이었던 그 방법이 본인에게 가장 효율적인 방법이니 먼저 구현해보고 그 후에 문제점을 파악 그리고 느껴보면서 효율적인 방법을 유도할 수 있는 과정을 거쳤으면 좋겠음. 내가 다 알려주게 되면 언젠가 또 마주하게 될 때 같은 패턴이 반복될 것임.
Solution
1-1. 세부질문 엑셀로 모든 오브젝트(A, B, C)의 정보를 넘길 때 각 오브젝트의 세부 정보==컴포넌트 정보(Collider, KeyFrame) 등의 정보를 어떻게 넘기냐는 질문!
이건 나도, 그리고 현업 개발자 10년차도 시간 많이 써서 고민해봐야하는 문제이고, 본인 게임에 따라서 다양하게 최적화 할 수 있기 때문에 뭐라 설명불가능. 각 로직에 따라서 방법이 다양하기 때문에 엑셀을 로드하는 다인이 코드를 내가 보면 방법 자체를 설명해줄 수는 있겠지만 나한테 도움될듯 그런건. 암튼 구조체를 잘 묶거나 등등 c++ 이라면 c++, c#이라면 c# 본인의 언어를 잘 파악해서 활용하거나. 등등 stl 도 각각 속도 차이는 엄청나니까! 뭐든 적어도 포폴이라면 비교해서 분석하는게 필요함.. 그냥 뭘 만들엇고 이렇게해서 최선의 결과를 도출했다. 는 최선이 아님 더 좋은 방법은 언제나 있기 때문!
아 그리고 최적화는 구현 전에 생각하는 것도 좋지만, 일단 구현부터하고 개선하는 것이 훨씬 효율적이라고 생각함. 어떻게든 구현하고 나면 언제나 더 좋은 방법이 생기기 때문임. 완벽한 코드는 거의 없음! 그래서 이렇게 하기전 고민하는 시간보다 하고 난 후 고민하는 시간이 많아졌으면 좋겠음. 언제나
요약. 엑셀에서 기획자가 데이터를 정리해서 올려주면, 클라는 c# , c++ 등 원하는 언어로 엑셀을 로드함. 이후 엑셀 파일 자체를 txt파일에 적어서 클라 로딩 속도를 매우 줄임.
그리고 엑셀 자체가 문제가 되는 것도 아니고, 엑셀 자체를 클라에서 로드하는 게임도 있을거고 훨씬 효율적인 라이브러리를 제작해서 사용할 수도 있기 때문에 확답 불가능. 이 경우는 나에게 물어보는 것 보다 구글링 혹은 본인 스스로 엑셀을 직접 클라 로딩에 사용하고 txt를 사용해서 시간 측정 후 로딩 속도를 개선했다 등 포폴을 제작하는 게 고민하는 시간보다 훨씬 유리할 것. 실제로 로딩 속도 개선은 포폴에 많이 사용되고 신입 클라 수습 과제로 많이 주기 때문에 면접에서 아주 좋을거.
머든 항상 베스트를 원하지 않고 진짜 바보같이 짠 코드를 개선하는 걸 원함. 베스트 == 구글 이기 때문에! 남들 다 하는 지피티 말고 지피티가 구글이 할 수 없는거 ㄱㄱ
Reference
참고자료 및 해결할 때 도움될만한 링크 첨부
Etc
ㅋㅋ@@@@@@@빠이팅!@@@@@@@@@ㅋㅋ