전체 글 (196)

  • 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
  • 2024.09.21
  • 2024.09.18
  • 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일 내에 다시 메일이 온다고 한다.

    반응형

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

    JIRA 입문 중  (0) 2024.12.10
    스팀웍스 사운드트랙 배포 검토, 1차 반려  (1) 2024.11.01
    Python FastAPI 범용 게임 데이터 서버  (3) 2024.10.31
    스타트업 인턴 2일차 진행 중  (2) 2024.10.23
    Day 1  (0) 2024.10.08
    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
     
    09
    21

    해당 백준 문제는 아래와 같다.

    https://www.acmicpc.net/problem/10989

    메모리에 신경쓰지 않고 그대로 제출하려고 했던 코드는 아래와 같다.

    import sys
    def LocalInput():
        with open("input.txt") as file:
            datas = file.read().strip().splitlines()
        return datas
    def BaekjoonInput():
        datas = sys.stdin.read().strip().splitlines()
        return datas
    
    # datas = LocalInput()[1:]
    datas = BaekjoonInput()[1:]
    
    datas.sort()
    for data in datas:
        print(data)

    인풋 단계에서 메모리를 낭비하지 말자는 아이디어는 있었지만, 어떻게 하면 좋을지 모르겠고 그 외 방도도 떠오르지 않아 GPT에 물어보고, 해당 내용을 학습해보려고 한다.

    그 내용은 아래와 같다.


    메모리를 초과하는 문제는 주로 정렬 시 사용되는 메모리, 데이터 저장 방식, 또는 출력 방식에서 발생할 수 있습니다. 아래에서는 코드의 메모리 사용량을 줄이고 효율적으로 개선할 수 있는 방법을 제시하겠습니다.

    문제 분석

    • datas = sys.stdin.read().strip().splitlines(): 이 코드는 입력을 한꺼번에 메모리로 읽어와 모든 줄을 리스트로 저장합니다.
    • datas.sort(): 정렬 과정에서 추가적인 메모리 사용이 발생할 수 있습니다.
    • for data in datas: print(data): 출력할 때도 리스트의 전체 요소를 메모리에 유지한 상태에서 하나씩 출력합니다.

    개선 방향

    1. 입력 처리 방식 최적화: 한꺼번에 메모리로 읽지 않고, 줄 단위로 읽으며 즉시 처리하는 방식으로 변경합니다. 이렇게 하면 메모리 사용을 줄일 수 있습니다.
    2. 정렬을 메모리 효율적으로 수행: 메모리 사용량을 줄이기 위해 외부 정렬(external sorting)처럼 동작하게 만들거나, 파일을 사용하는 방법을 고려할 수 있습니다. 그러나 Python에서는 sorted()를 사용하여 한 줄씩 정렬하는 방식으로도 효과적으로 처리할 수 있습니다.
    3. 입력과 정렬을 동시 처리: 입력을 받을 때마다 즉시 처리하여 메모리를 덜 사용하게 합니다.

    개선된 코드 예시

    import sys
    import heapq
    
    def LocalInput():
        with open("input.txt") as file:
            datas = file.read().strip().splitlines()
        return datas
    
    def BaekjoonInput():
        return sys.stdin
    
    # 메모리 초과 방지를 위해 제너레이터를 사용하여 입력 처리
    def process_input_and_sort(input_source):
        min_heap = []
    
        # 첫 번째 줄은 개수 정보이므로 제외하고, 입력을 한 줄씩 처리
        next(input_source)
    
        # 각 줄을 힙에 추가 (메모리를 효율적으로 사용)
        for line in input_source:
            heapq.heappush(min_heap, line.strip())
    
        # 힙에서 하나씩 꺼내면서 출력 (정렬된 순서로 출력)
        while min_heap:
            print(heapq.heappop(min_heap))
    
    # main 함수 호출부
    # process_input_and_sort(LocalInput())  # 로컬 테스트용
    process_input_and_sort(BaekjoonInput())  # 백준 제출용

    개선 포인트 설명

    1. 제너레이터 사용: 입력을 한꺼번에 메모리에 로드하지 않고, sys.stdin 제너레이터를 사용하여 한 줄씩 읽어 메모리를 절약합니다.
    2. 힙 정렬 (heapq) 사용: 메모리 사용량을 줄이기 위해 힙 자료구조를 사용해 점진적으로 정렬된 데이터를 출력합니다. heapq는 파이썬 표준 라이브러리에서 제공하는 힙 자료구조로, 효율적인 메모리 사용과 정렬을 동시에 제공합니다.
    3. 지연된 출력 처리: 정렬된 데이터를 즉시 출력하여, 리스트에 모든 데이터를 담고 있지 않도록 합니다.

    추가 고려사항

    • 파일 기반 정렬: 입력 크기가 매우 클 경우, 파일 기반 외부 정렬(External Sorting) 기법을 사용할 수도 있지만, 이는 보통 경쟁 프로그래밍에서 사용하지 않는 방법입니다.
    • Python 버전 및 최적화: 최신 Python 버전에서는 메모리 관리가 조금 더 효율적일 수 있으므로, Python 3.8 이상을 사용하는 것도 고려해볼 만합니다.

    이 방법을 사용하면 메모리 사용을 최적화하여 메모리 초과 문제를 해결할 수 있습니다.


    전체적으로 생소한 내용이라 바로 학습.

    반응형
    COMMENT
     
    09
    18
    반응형
    COMMENT