전체 글 (198)

  • 2025.02.26
  • 2025.02.06
  • 2024.12.10
  • 2024.11.11
  • 2024.11.11
  • 2024.11.07
  • 2024.11.01
  • 2024.10.31
  • 2024.10.23
  • 2024.10.08
  • 2024.10.06
  • 2024.10.04
  • 02
    26

    아직도 변수명명을 일관되지 못하게 하고 있어서 생각난 김에 제대로 정하고 가려고 한다.

    앞으로 진행할 개인프로젝트에서도 유의할 것.

    일단 GPT 자문을 통해, Unity 스타일과 C# 스타일에도 살짝 차이가 있다고 한다. 일단 차이를 확인 해 보면,

    두 스타일이 크게 다르진 않은데,
    - private 멤버변수에 'm_'을 붙이느냐(Unity) 아니면 '_'을 붙이거나 아얘 생략하거나(C#) 할 수 있고
    - C# 스타일에서는 public 멤버변수는 프로퍼티 사용을 하는 게 기본 스타일이라고 적혀있는데, 더 찾아보지는 않았다. 그리고 C#은 PascalCase를 사용하는 정도.

    종종 변수명으로 private const string SERVER_ENDPOINT = "https://api.example.com"; 이렇게 ALL_CAPS의 경우도 보였는데, 이는 C++에서 주로 사용하는 스타일이고 C#에서는 ServerEndpoint 와 같이 PascalCase를 사용하는 게 권장된다고 한다. 또한 static readonly 변수의 경우에 특히 자주 보이는데 이 역시 PascalCase가 일반적으로 사용된다는 듯.
    유니티와는 별개로 환경변수 파일에서는 ALL_CAPS 명명이 일반적이었던 것으로 기억한다.

    게임개발 사이드라고 하더라도 유지보수에는 C# 스타일이 낫다고 하고, 개인적으로 m_ 명명법이 낯설어서 C# 스타일을 채택해야겠다.

    반응형
    COMMENT
     
    12
    10

    세부 옵션까지는 어렵지만 가능한 모든 메뉴를 만져보면서 익숙해지는 중.

    현재 단계에서 이해가 여려운 점

    1. 일단 타임라인에서 만든 이슈가, 보드 탭에서 안보이는 이유를 모르겠고 반대로도 보드에서 만든 이슈에 스타트날이랑 기한까지 붙여놓아도 타임라인에서 보이지 않는 점.

    2. 이슈 목록에서 보면 타임라인에서 만든 이슈는 '에픽'이고, 유형 보드에서 만든 이슈는 '작업'유형이 붙어있는데 why...

    계속 붙어서 익숙해져봐야겠다.

    반응형
    COMMENT
     
    11
    11

    튜토리얼을 따라하고 있었는데 Surface Options 가 보이지 않는다.
    노란색 부분이 보이도록 하고 싶음

    VFX 튜토리얼을 따라하고 있는데, 인스펙터에서 Surface Options 가 보이지 않는다.

    구글링 해도 해결법이 안 보여서 인스펙터를 직접 만져봤는데

    노란색 화살표로 표시 한 'Space' 속성을 Local 에서 World로 바꾸었더니, 잠깐의 로딩 후 Surface Options 카테고리가 보이기 시작했다.

    World 에서 Local로 바꾸어도 계속 보인다.

    아무래도 이런 식으로 한번 수정을 가해야 다른 옵션들(여기에서는 Surface Options)도 초기화가 이루어지는 듯 하다.

    반응형
    COMMENT
     
    11
    11

    체크한 부분이 안 뜨고 있었음, 해결 된 상태

    Output Particle Quad 키워드로 계속 찾다가 못 찾아서, 좀 더 그래프를 둘러보니 셰이더 그래프를 넣는 공간을 전혀 찾을 수가 없어 아래와 같은 키워드로 검색, 구글 검색 AI Labs 에서 나온 내용만으로도 해결되었다.

    Edit - Preferences - Visual Effects -> Experimental Operators/Blocks 체크

    요렇게 체크해준 뒤, 첫 사진처럼 셰이더그래프를 넣을 수 있는 공간이 생긴 것을 확인하였다.

    반응형
    COMMENT
     
    11
    07

    오늘 받은 메일

    평소에 GPT4-o 를 잘 쓰고 있던지라 유니티 AI가 궁금하기는 했다.

    실험프로그램에 참여하면 구독 없이 써 볼 수 있다고 해서 일단 신청을 넣어두었는데, 1~2일 내에 다시 메일이 온다고 한다.

    반응형
    COMMENT
     
    11
    01

    아래는 GPT로 정리한 해결 가이드


    상품 페이지

    1. 캡슐 이미지 문제:
      • 문제: 캡슐 이미지에서 로고나 제품명이 음악 배너로 가려져 있습니다.
      • 해결 방법: 다음 캡슐 이미지들이 로고나 제품명이 잘 보이도록 수정해야 합니다.
        • 헤더 이미지 (header.jpg)
        • 소형 캡슐 (capsule_231x87.jpg)
      • 참고 자료: 스팀의 캡슐 이미지 가이드라인을 확인하여 기준에 맞게 수정하세요. 캡슐 이미지 가이드라인.
    2. 설명 중복 문제:
      • 문제: 설명에 트랙 리스트가 포함되어 있어 메타데이터에 표시된 트랙 리스트와 중복됩니다.
      • 해결 방법: 설명에서 트랙 리스트 부분을 삭제하여 중복을 피하세요.
    3. 시스템 요구 사항 문제:
      • 문제: 시스템 요구 사항에서 일반 음질 파일과 고음질 파일 모두 동일한 크기가 표시되어 있습니다.
      • 해결 방법: 파일 크기가 정확히 반영되었는지 확인하세요. 표준 MP3 오디오만 제공하는 경우, 고음질 오디오 관련 언급은 삭제하는 것이 좋습니다.

    사운드트랙 파일

    1. MP3 파일 필수 요구 사항:
      • 문제: 스팀에서는 모든 사운드트랙에 MP3 파일이 포함되어야 합니다.
      • 해결 방법: Normal 디포에 MP3 형식의 사운드트랙 파일을 다시 업로드하세요.
    2. 고음질 파일 (선택 사항):
      • 문제: MP3가 아닌 고음질 파일은 별도의 Optional High-Quality 디포에 업로드해야 합니다.
      • 해결 방법: MP3 외의 고음질 파일이 있는 경우, Optional High-Quality 디포에 추가하고 설명에 해당 내용을 언급하세요.
    3. 디포 설정 오류:
      • 문제: 현재 고음질 파일이 "normal audio" 디포에 설정되어 있어 문제가 됩니다.
      • 해결 방법: 디포 설정을 다음과 같이 수정하세요:
        • Normal 디포에는 MP3 파일만 포함시킵니다.
        • Optional High-Quality 디포에는 고음질 형식의 파일을 포함시킵니다.
      • 참고 자료: 스팀의 사운드트랙 디포 설정 관련 문서를 확인해 보세요. 사운드트랙 디포 설정 가이드.

    다시 정리

    • Normal 디포에 기존 업로드했던 WAV파일 대신 MP3 파일을 다시 업로드 할 것
    • 기존 업로드 했던 WAV 파일은 Optional High-Quality 디포 로 수정
    • 캡슐 이미지(헤더 이미지, 소형 캡슐) 가이드에 맞게 수정
    • 설명에서 트랙 리스트에 관한 내용 빼기

    캡슐 이미지
    ChatGPT QA
    새로 업로드 할 헤더 이미지
    사운드트랙 설명

    MP3파일용 디포, WAV파일용 디포를 새로 파고 각각 업로드.

    가장 빠른 번호의 디포(앱 디포)를 꼭 채워야 하는 것 같다.

     

    내 경우에는 앱 디포 번호가 ~~~~21 이었고

    1차 시도에서

    MP3파일용 디포를 ~~22번에, WAV파일용 디포를 ~~23번에 생성했는데 21번이 비어있는 상태라 진행이 안되었다.

    위 디포들을 지우고 다시 21번에 MP3, 22번에 WAV용 디포를 작성하고 파일을 업로드했다.

    이 체크표시를 해결하기 위해 거의 한 시간을 찾아 헤멨다.

    상점 및 Devcomp 패키지 일치
    출시 테스트를 위해 귀하의 devcomp 패키지는 반드시 상점 패키지와 같은 디포를 포함해야 합니다.

    진짜 한참을 헤멨다. 아래와 같은 packagelanding 주소를 가지는 페이지에서 작업이 필요했었다.

    packagelanding

    '포함된 디포' 에 현재 사용하고 있는 디포 중 누락된 게 있어 포함시켜주었다.

    패키지랜딩 페이지에 어떻게 찾아갔는지, '뒤로가기'를 눌러 이전 페이지로 돌아가서 다시 찾는데도 한참이 걸렸다(...)

    '관련 패키지 및 DLC' 하단의 내용 중

    위 보이는 스크린샷에서, 빨간색 패키지를 클릭하면 나오는 페이지였다

    아무튼 해결

    2차 검토 신청을 하자

    반응형

    '다이어리' 카테고리의 다른 글

    JIRA 입문 중  (0) 2024.12.10
    유니티 Muse 실험 프로그램 참여  (0) 2024.11.07
    Python FastAPI 범용 게임 데이터 서버  (3) 2024.10.31
    스타트업 인턴 2일차 진행 중  (2) 2024.10.23
    Day 1  (0) 2024.10.08
    COMMENT
     
    10
    31

    한개 서버로 여러 서비스 폴더별로 구분하여 관리

    파일 시스템 구조

    • 미리보기

    서비스 생성

    새로운 서비스(앱, 게임 등) 생성 시, GameData, UserData, OtherData 폴더가 함께 생성되도록 하고, UserData 폴더에는 Info.json 파일을 생성하여 신규 유저의 UID 부여에 참고하도록 한다.

    {"next_uid": "000000000"}

    유저 정보 생성(회원가입)

    회원가입을 위해 서비스 이름, 입력ID, 입력Password와 함께 서버에 요청한다.

    1. 서비스가 있는지 확인, 겹치는 유저 ID가 있는지 확인
    2. (입력Password + 16자리의 salt) 를 해시 암호화 한 패스워드를 얻는다
    3. UID의 폴더를 생성하고, Base.json을 작성한다.
      1. uid, id, pass, salt 를 보관한다.

    데이터 백업 압축파일 다운로드

    백업했던 데이터 업로드하여 복원(덮어쓰기)

    게임 데이터 업로드(기존 서버의 게임 데이터를 덮기)

    게임 데이터 GET

    로그인 기능

    • SERVICE 내 ID PASS 검증.(즉 이 세 요소를 서버에 같이 전송해야함)
    • 토큰발행 후 유저에게 전송, 서버에 보관, (토큰-UID) 쌍이면 괜찮으려나
      • 아까 UserData 폴더 내에 Info.json 파일로 UID 관리했듯이, Token.json 하나 미리 마련해두고 여기에서 동적으로 관리하면 될 것 같다.

    로그아웃 기능

    • 클라이언트 앱이 종료되거나, 로그아웃 버튼을 누르면 서버에서 로그아웃 기능 수행. Key값이 해당 계정의 토큰값인 아이템을 삭제하면 되나?
    • 또는 토큰이 추가된 후 일정 시간(24시간?) 지난 게 확인되면 역시 보관된 아이템을 삭제하면 될듯. 만약 삭제된 뒤로 유저가 토큰으로 유저데이터에 접근을 시도할 경우, 클라이언트에 “님 지금 토큰이 보관되어있지 않은 것 같은데 로그인좀 다시 하셈” 이라고 메시지를 보내면 될 것 같다.

    유저 데이터 통으로 업데이트

    유저 특정 데이터 업데이트

    유저 데이터 모두 얻기

    유저 특정 데이터 얻기

    랭킹 시스템(업로드)

    Get 랭크보드(상위 N명)

    반응형
    COMMENT
     
    10
    23

    1 인턴 개요

    하루 네 시간 인턴 활동, 10월 중순부터 12월 중순까지 두 달 간 진행한다.
    시급 1만원 계산으로 두 달 160만 지원금 지급. 용역 계약으로 적혀 있어 인턴으로써 급료를 받는 건 아니다.
    매칭된 회사에 출퇴근하기 위해 판교로 거주지를 이동했다.

    2 주요 활동

    현업 팀장 및 인턴 팀원과 두달 간 한 개의 게임을 기획부터 완성까지 진행한다. 성공적으로 완료하여 정식 채용가지 이어지면 좋겠다.

    3 기타

    판교, 퇴근 시간 교통체증이 자비가 없다.
    버스를 타고 귀가를 해야 하는데 사람이 너무 많아 다 타지 못해 다음 버스를 기다렸다. 배차간격도 무자비했다.
    거주 고시원 근처에 새벽 5시 반까지 열려있는 넓은 카페가 있어 좋다.

    반응형
    COMMENT
     
    10
    08

    작업 과정

    • 타일맵을 통해 플랫폼 작성
    • Aseprite 에셋 가공
      • 애니메이션 클립과 컨트롤러 Export 하여 수정 후 사용

    • UI 작성(1개 캔버스에 다중 패널식)
      • Title - 게임시작 버튼
      • 전투 - 몬스터 체력바, 앞으로 나올 몬스터 스택, (일시정지-타이틀 버튼)
      • 결과 - 전투 결과, 다시하기 버튼, 타이틀 버튼, (Firebase 저장 관련)
    • 필요한 액션 정리
      • START 버튼 : 게임 시작
      • 게임 시작 : 타이틀 패널 비활성화, 배틀 패널 활성화, 전투 로직 시작
      • 적이 처치되었을 때 : 새로운 적 소환, 게임종료
      • 적 프로필이 클릭되었을 때 : 진행 일시정지, 정보 패널 보이기(DoTween, 위에서 내려오기)
      • 정보 패널 상태에서 아무 곳이나 클릭 될 때 : 패널 올린 후 일시정지 풀기
      • 종료되었을 때 : 결과값 따로 저장, 모든 상태 초기화, 결과 패널 보이기
      • RESTART 버튼 : 게임 시작
      • TITLE 버튼 : 모든 패널 비활성화 후, 타이틀 패널 보여주기
    • 스크립팅
      • CSV 데이터 읽어 매핑하기(DataIO.cs)
      • 게임 플로우와 주요 메서드 관리(GameFlowManager.cs)
      • MonoBehaviour 없이 UIManager.cs 사용 시도(잘 되었다)
      • UICanvasMap.cs 를 캔버스 프리팹에 두어 버튼과 텍스트 슬라이더 그리고 이미지 오브젝트를 미리 매핑해둔다. 이후 UIManager에서 참조하여 사용.
      • Managers.cs 를 새로 작성하여, 매니저들을 Managers에서 관리.
      • PlayerController, EnemyController 작성하여 등장연출, 공격 및 맞기 등 구현
      • ActionManager를 따로 두어 구독 형태 모아서 관리
    • 1일차 결산
      • Attack 구현하면 클리어지점까지 작동하기는 할 것 같다. 많은 디버깅 예상.
      • 한글 폰트를 하나 가져와야겠다. One Mobile 서체였던가 사용할 생각.
      • 결과 보여주는 UI를 작동하도록 해야한다. 금방 할 듯.
      • 플레이어의 애니메이션(Idle, Attack)과 적의 애니메이션(Idle, Damaged, Dead)가 작동하도록 해야한다.
      • 적 피격 시, 데미지가 몇인지 보여주는 효과를 넣고 싶다. 적 Speed 스탯에 따른 회피도 구현해야한다.
      • 적 체력바 중앙에 남은체력/전체체력 을 보여줘도 될 것 같다. 아니면 퍼센티지로.
      • 적 프로필을 띄웠을 때, 전투가 잠시 일시정지 되도록 하고 싶다. 그리고 트릭컬처럼 적 명함 안의 사진이 움직여도 괜찮을지도.
      • 전체적으로 완성도가 괜찮아졌다면 DoTween을 사용해 UI 연출에 활기를 넣고 싶다.
    반응형
    COMMENT
     
    10
    06

    탭키를 써서 변수와 주석을 정렬한 모습이지만, 세미콜론을 입력하는 등 코드 수정을 하면서 멋대로 정렬이 흐뜨러진다.

    문제는 Visual Studio의 자동 코드 정렬 및 서식 기능 때문.
    기본적으로 Visual Studio는 코드를 작성할 때 자동으로 정렬을 맞추려는 기능이 활성화되어있다.
    이를 비활성화하거나 사용자 정의 규칙을 적용해서 원하는 대로 코드를 정렬 가능하다.

    자동 서식 기능 비활성화

    1. Visual Studio 설정에서 자동 서식 기능을 조정.
      • Tools(도구) > Options(옵션)으로 이동.
      • Text Editor(텍스트 편집기) > C# > Formatting(서식) 항목으로 이동.
      • General(일반)에서 다양한 자동 서식 옵션을 볼 수 있다.
        • Automatically format on semicolon (세미콜론 시 자동 정렬) 같은 옵션을 체크 해제하면, 세미콜론을 입력할 때마다 자동으로 정렬되지 않게 할 수 있다.
    2. 주석 위치 유지:
      • Tools > Options에서 Text Editor > C# > Formatting > General에서, Ignore spaces in comments 옵션을 활성화하면 주석 위치가 자동 정렬로 인해 변경되지 않게 할 수 있다.
    반응형
    COMMENT
     
    10
    04

    현장 실습을 뭐라도 해보자라는 기세로 지원했다.

    혹시라도 최종선발까지 된다면 근처에 두 달 정도 살 곳을 구해야 하는 게 제일 어려운 점.

    반응형
    COMMENT