본 캠프를 시작했다.사전 캠프에서 만났던 조원과 같은 조라 편하고, 좋았다.시작하자 마자 간단한 OT와 미니 프로젝트를 부여받았는데,새로 구성된 팀원과 함께 TMI 카드 뒤집기 게임을 제작하는 것 이다.새로운 팀의 이름은 개발 9해조열심히 캠프를 진행해서 훌륭한 예비
오늘은 MainScene - End 화면 UI 세팅 및 TileBtn 기능 추가를 진행했다.팀장님이 사정이 있으셔 큰 수정사항 없이, 두 명이서 개인 공부와 간단한 프로젝트 수정을 했다.플로우 차트를 완벽하게 숙지해야겠다!카드 Prefab 이미지 구현MainScene
규진님이 사정이 생겨 내일배움캠프에서 하차하셨다.규승님과 함께 프로젝트 완성해 나가는 중이다.규승님이 유니티를 잘 안다뤄보셨다고 했는데, 굉장히 잘하신다.나도 최선을 다해서 도움을 드리고 싶은데, 잘 안되는 상황이 속상하다.내가 할 수 있는 상황에 최선을 다하자!부탁하
오늘은 미니 프로젝트의 발표날이다! 발표하기 전 긴장이 풀렸는데막상 발표 시작하니까 얼굴이 붉어졌다.긴장을 안하는 날이 올까?반응도 좋았고 발표도 나름 잘 됐다.만족!발표를 하면 질문이 들어올 수 있게 때문에여러가지를 알아왔다.프로젝트 로직 공부스테이지를 전역 변수로
새로운 팀이 구성되었다.유니티를 오랜만에 다시 했는데, 문법을 배우고 오니 생각보다 코드가 잘 읽혔다.또한 직관적인 UI를 보니, 개발하는게 재밌었다.앞으로도 더더욱 공부를 열심히 하자.!Pong 제작TopDownShooting 프로젝트 구현Unity에서 InputSy
개인 과제를 시작했다! Input System을 복습했고,Animation을 제작했다. 생각보다 오랜만에 해서 어려웠다.그리고 GameManger를 쓰는 걸 까먹었다..! 내일 Nickname을 설정할 때 생성해줘야겠다.캐릭터 움직이게 하기카메라가 캐릭터 움직임 추적하
오류 해결이 안되고 있다. 내일 다시 해야지.. 뭐가 문제일까 대체
개인 과제를 제출하고, 조금 자유로운 하루였다.염예찬 튜터님께서 개인과제 해설과 UI 사용 자율 과제를 주셨다.UI와 친숙해지기 위해 다양한 기능을 사용했다.UI 제작하기UI는 구역별로 나누어 작업했다.상단 버튼프로필 부분친구 추천스토리포스트하단 버튼예쁘게 만들기 위해
팀 프로젝트를 새로 시작했다! 프로젝트 명Save The Undead!프로젝트 소개어느 날, 당신은 좀비가 되었습니다! 인간들의 공격을 피해 최대한 오래 살아남으세요!역할UI & AudioManger를 담당하게 되었다.https://github.com/NBCa
주말이다! 주말에도 열심히 과제를 구현했다.토요일은 UI를 전체적으로 통일했고,오늘은 오디오를 재생할 수 있게 기능을 구현했다!09.09 - UI09.10 - Audio골드메탈님의 강의를 통해 배열로 다양한 소리를 관리하는 AudioManger 제작방법을 알게 됐다.약
오늘은 UI를 조금 작업하고, 볼륨을 조절하는 기능을 추가했다.Volume Control우선 볼륨을 조절하는 방법은 두가지 선택지가 있었다.슬라이드를 통해 값을 직접 설정하는 방법버튼을 클릭해, 4가지 값으로 값을 설정하는 방법.플레이어에게 더 친숙한 것은 값을 직접
오늘은 여러가지 기능을 추가했다.특강을 듣고, UIManager도 제작해보기로 했다.결국 배경음악은 하나로 바꿨는데, 이게 더 나은 것 같다!생각보다 마감일이 다가올수록 급해진다.열심히 하자!DontDestroyOnLoad 버그목숨, 폭탄, 폭탄 애니메이션 추가UIMa
https://github.com/NBCampUnityA05/SaveTheUndeadREADME.md 완성!
오늘은 팀 과제를 발표했다.생각보다 기능이 잘 구현됐다.굉장히 기쁨!아래에서 플레이를 확인하세요~https://www.youtube.com/watch?v=ktlQCnRH0FA&t=31sDelegate우선 델리게이트에 대해 알기 전 변수에 대해 생각해보자.변수
오늘은 Unity Eduacation을 여러 개 듣고,이전에 만들던 TopDownShooting 게임 강의를 새로 듣게 됐다.또한 Event, Action에 대해 배울 수 있었다!ObserverEventActionScriptable ObjectObeject Pool옵저
오늘은 새로운 팀을 구성했다!팀장으로서 2주간 열심히 달려보자.코루틴에러 처리코루틴은 비동기적으로 실행되는 함수로, 특정 코드 블럭의 실행을 일시적으로 중지하고 다시 시작할 수 있게 해준다.IEnumerator 리턴 타입의 함수에서 yield return을 사용하여 코
LINQ?알고리즘 레벨이 높아지면서, LINQ에 대해 더 자세하게 학습할 필요가 있었다.오늘은 2DTopDownShooting을 완료하고,3D를 어느정도 들었다.LINQ는 Language integrated Query다..NET 3.5 부터 지원을 시작했다. C아래 네
개인 과제를 시작했다.플레이어 정보까지는 정말 수월했는데, 역시나 인벤토리 및 상점에서 막혀버렸다.인벤토리를 구현하고 싶은데, 생각보다 어렵다.쉽게 생각하면 쉽겠지만 처음 써보는 기능들을 다 추가하려니많이 돌아가고 있는 듯 하다,,,델리게이트 사용! 개인 과제에서 델리
개인 과제를 어떻게 구현은 했는데,완전히 다 구현하지는 못했다.아쉬운 부분이 너무 많다.코루틴 직접 적용하기인벤토리에서 아이템을 적용하면, 스탯창에서 아이템 스탯까지 반영해야한다.그러나 스탯창은 비활성화 상태일 때, 스탯값을 받지 못하는 상태다.이때 값을 전달해주기 위
개인 과제가 끝났다.최대한 노력했지만 결과물이 영 만족스럽지 않아서 아쉽다.객체와 스크립트 간 연결하는 부분을 더 연습해야겠다.어떻게 하면 객체가 원하는 로직을 가지고 있을지 스크립트로 구현하는 연습이 필요한 것 같다.3D 강의를 완강했는데, 가장 신기한 부분은 AI
팀 과제 시작..그리고 아이앱 반팔 당첨됐다! 🐧하지만작업하던게 맘에 안들어서 여러번 날리고, 다시 태초마을로 돌아왔다...Drag & Drop주말에,,Draggable.csDroppable.cs타워 객체 생성하기
랜덤 다이스의 다이스를 만드는게 이렇게 어려울지,,,세상에 똥겜은 없다.모든 게임 개발자에게 존경을,,,다이스 타워의 정보를 만들었고, 다이스 타워를 생성하는 부분까지 제작했다.우선 타워의 클래스 다이어그램이다.이렇게 진행하면, 타워의 정보를 생성할 수 있다.타워의 속
타워를 스프라이트로 하느냐, 이미지로 하느냐 각자의 장점이 있지만,스프라이트로 하기로 결정하고이미지로 했던 모든 작업을 날리고 다시 만들었다.제네릭타워 스폰매니저를 만들었다.스폰 위치와 타워, 도트 모두 프리팹으로 구현해서 코드로 관리했다.이미지를 활성화하고 비활성화하
README.md를 읽어주세요!https://github.com/NBC-Unity-A05-TeamProject/Random5bject/tree/develop
프로젝트가 하나 또 완성됐다.https://github.com/NBC-Unity-A05-TeamProject/Random5bject연휴가 길어서 걱정을 많이 했는데, 연휴에도 개발을 하다보니 생각보다 구현이 잘됐다.다만 아쉬운점은 타워마다 특별한 특징이 없는
3D 심화 강의를 다 들었다.거의 복붙 수준이라 추후에 강의를 필요한 부분만 다시 들으면 좋을 것 같다.멀티 플레이를 구현하는 방법도 배웠는데,아직 너무 어렵다.후발대 강의에서는 Stack과 Heap에 대해 배웠다.이전에 포인터에 대해 공부를 조금 했어서 이해는 쉬웠다
게임 구상을 하느라 시간을 다 썼는데, 마땅한 아이디어가 나오지 않아 큰일이다..제네릭 싱글톤이전 포스팅에서 제네릭 싱글톤에 대해 한 번 다룬 적이 있다.하지만 왜 써야하는지는 적지 못했고, 해당 코드보다 더 마음에 드는 코드를 발견했다.우리가 흔히 싱글톤을 구현하는
개인 과제 구현 한다고, 생각만 앞서다가 시간을 다 잡아 먹었다...내가 원하는 기능을 구현하는게 쉬우면서도 어려운 것 같다.지금 더 열심히 한다면, 고점을 뚫겠지..!TerrainAnimation유니티에서는 WordBuild를 제공한다. 대지의 형태, 초목 등 환경
개인 과제 대략적으로 완성..!새로운 팀 과제가 만들어졌다!!열심히 해봐야지.오디오를 최대한 깔끔하게 코드를 수정해보자!BSP Dungeon Creatorhttps://github.com/Munch310/Personal2D_3DProject/wiki/3.-BS
Audio 작업을 진행했다!이전에 썼던 오디오 코드를 수정하고, 업그레이드 할 예정이다.우선 저번 프로젝트에서 오디오를 담당할 때, 막혔던 부분은 BGM을 여러개로 나누지 못했던 것, enum을 같은 클래스안에서 사용했던 것이다.또한 함수를 사용하는 데 있어서 더 효율
코드 수정 Nuget 외부 라이브러리 사용 > https://github.com/GlitchEnzo/NuGetForUnity
오늘은 대사에 오디오를 추가했고, 인트로씬을 구성했다.인트로씬 !코루틴을 이용한 인트로씬이다.시작할 때 로고와 타이틀의 알파값을 0으로 설정하여 투명하게 만들고, IntroSequence()코루틴을 시작한다.FadeIn, FadeOut 코루틴으로 알파값을 조절하여 UX
협업을 진행하다보면, 캡슐화가 되지 않은 코드를 볼 수 있다.캡슐화가 좋다는 것은 알지만, 나도 정확하게 설명할 수 있게 공부를 했다.캡슐화프로퍼티객체 지향 프로그래밍의 핵심 원칙 중 하나로, 데이터와 데이터를 조작하는 메서드를 하나의 '클래스'라는 캡슐로 묶는 것을
상속과 다형성에 대해 공부를 진행했다. 상속을 잘못 사용하는 복잡도를 높일 수 있다. 공통 기능이 아닌 개별 기능까지 부모 클래스에 포함시키면 코드가 불필요하게 복잡해질 수 있다.또한 다형성 없는 코드 즉, 모든 객체를 독립적으로 처리하려고 하면 비슷한 로직을 반복해서
최종 프로젝트를 진행하기 앞서, 깃허브를 이용하는 방법을 다시 알아봤다.아무래도 최종 프로젝트는 포트 폴리오와 연관될텐데,팀원과 협업 하는 방법을 현업과 최대한 비슷하게 구성해서 진행하고 싶었다.내가 보통 협업을 진행하는 방식은 개인 브랜치를 생성해서 Develop에
Unity의 강력한 애니메이션 / 트위닝(inbetweening) 라이브러리인 DOTween에 대해 알게 되었다.DOTween은 게임 오브젝트를 쉽게 움직이거나, 스케일을 변경하거나, 회전시키는 등의 다양한 애니메이션 작업을 단순화해주는 라이브러리다. 코드를 통해 세밀
게임을 제작하다, 스팀 플랫폼 출시를 생각한다면 게임 언어를 변경할 필요성을 느꼈다.Unity에는 이를 위해 Localization 패키지가 존재한다.Unity에서는 Localization을 보다 쉽게 구현할 수 있도록 도와주는 Unity Localization 패키지
유니티에서 해상도를 변경하는 것은 게임이 다양한 화면 크기와 해상도를 가진 디스플레이에서 잘 동작하도록 하는 데 중요하다. Resolution 클래스는 이를 가능하게 해준다.Resolution 클래스는 게임을 실행하는 디스플레이의 해상도를 나타내는 클래스로, 게임의 렌
화면을 구성하면서 수직동기화에 대해 알게되었다.수직 동기화는 그래픽 카드가 화면에 그림을 그리는 속도와 모니터가 화면을 갱신하는 속도 간에 동기화를 맞추는 기술이다.컴퓨터 그래픽에서는 그래픽 카드가 생성한 이미지가 모니터에 표시되기 전에 버퍼에 저장된다. 그래픽 카드는
가비지 컬렉션에 대해 깊게 공부를 해봤다.이에 대한 꼬리 질문을 여러개 생각해봤다!가비지 컬렉션의 전체적인 진행 방법.가비지 컬렉션의 장단점은 무엇인가요?가비지 컬렉션이 작동하는 원리나 알고리즘에 대해 설명해줄 수 있나요?가비지 컬렉션과 메모리 누수의 관계는 어떻게 되
게임 개발을 하면 내가 만들고 있는 게임이 메모리는 얼마나 사용하고 있는지 확인 할 필요가 있다.유니티에서는 메모리 사용량을 확인하고 분석하는 방법이 여러가지가 있다.유니티 에디터 상단의 'Window' -> 'Analysis' -> 'Profiler'를 선택하여 프로
게임을 제작할 때 몬스터 사전에 들어갈 스크롤 뷰와 뷰를 움직이는 버튼이 필요했다.구글에서 자료를 서치하면서 감사하게도 구현이 되어있는 코드를 발견했다.https://m.blog.naver.com/showmeii1201/220261855402아래 스크립트는 U
모의 면접을 진행하면서 메모리 파편화에 대해 알게 되었다.🐧 내일 할 일
리소스를 관리하는 방법으로 어드레서블 에셋에 대해 알게 되었다.어드레서블 에셋은 유니티의 에셋 관리 시스템의 일부로, 개발자가 에셋을 쉽게 관리하고 로드할 수 있게 도와주는 패키지다.각 에셋은 주소나 그룹을 통해 식별되며, 에셋의 포장, 로딩 및 언로딩을 더욱 효율적으
스타트씬의 배경을 제작했다! 디자인은 정말 어려운 영역이다. 프로젝트를 진행하다보면 리소스에 대해 많은 얘기가 오간다. 이와 더불어 메모리관리에 대해서도 많은 의견을 주고 받는데, 과연 프리팹이 100개인 경우 어느정도로 이 기능을 사용하면 게임의 다양한 에셋을 분류하
UI를 제작하는데 있어 튜터님께 큰 도움을 받았다.튜터링에 따라 코드와 구성을 모두 리팩토링했다.기존에 사용하던 UI 구성은, 각 씬마다 이벤트 드리븐 패턴을 이용해 씬을 구성했다. StartSceneUI 스크립트는 각 버튼에 대한 이벤트를 구독하고,StartScene
StartScene에서 다른 Scene으로 이동 후 다시 StartScene으로 돌와왔을 때 발생했다.오류 메시지MissingReferenceException 해당 오류는 게임 오브젝트가 파괴되었지만 여전히 참조하려고 할 때 발생한다. 일반적으로 씬을 이동할 때 발생하
게임을 제작하다보면 유니티에서 여러가지 패키지들이 사용된다.그러나 내가 사용하려고 하는 패키지에 대해 이해가 필요하지만 예제가 존재하지 않아 패키지를 모르고 쓰는 경우가 많다.유니티는 이런 사용자를 위해 samples를 재공하는 패키지가 존재한다.Localization
프로젝트를 진행하면서 내가 사용해야 될 리소스 매니저에 대해 공부를 진행했다.어드레서블 에셋을 사용하게 될텐데, 이해도가 필요했다.리소스 매니저는 리소스 로딩과 관리의 복잡성을 줄이기 위해 설계되었다. 특히, 어드레서블 에셋 시스템을 사용하여 리소스 로딩을 최적화하고
https://www.miricanvas.com/v/12lclsy중간발표가 끝났다.생각보다 좋은 칭찬을 많이 받을 수 있었다.다만 아쉬운 점은 시간이 부족하다 생각해 더 강조할 수 있었던 부분을 놓쳤다.내가 진행했던 파트에 대해 피드백을 받았던 부분을 회고한다
🐧 들어가기 앞서 UI를 제작하다보니 팝업이 필요했다. 게임을 종료할 때 정말 종료할 것인지 묻는 중간 확인 단계가 필요했다. 따라서 Popup을 만들었는데, 프리팹으로 만들어두고, 텍스트는 원하는 상황에 따라 교체하기 위해 작업을 실시했다. 🐧 오늘 배운
오늘은 굉장히 많은 변경사항이 있었다.Popup에서 Localization을 적용하는 부분UI를 표시할 때 Sorting Order를 적용하는 부분Adressable Asstes를 사용하는 부분어제 발생했던 문제는 Popup의 Text를 어떻게 관리할지?Popup에서
오늘은 리소스 작업에 빠졌다.. 크게 한 건 없는데 시간이 너무 잘 간다.게임에 맞는 리소스를 찾는것도 중요하지만, 인디 게임 개발은 특히 리소스를 직접 제작할 줄 아는 법도 알아야 할 것 같다..작업은 일러스트레이터를 이용했다.
프로젝트를 진행하면서, Scriptable Object를 사용하게 되는데 이를 관리하는 코드를 팀원분께서 만들어 주셨다.나도 Scripatable Object를 사용하게 되는데,내가 다른 사람이 만든 코드를 이해하고 프로젝트에 함께 적용할 수 있어야 개선점도 파악할 수
유니티 인트로 씬을 제작하기 위해 다양한 접근법을 공부했다.이전에는 인트로를 제작할때 스크립트에 코루틴을 섞어 이미지의 페이드인, 아웃 기능을 구현했었다.이때 단점은 관리가 굉장히 어려웠다.(타임라인에 비해)그러나 이를 지원해주는 타임라인 기능이 존재했다!유니티 타임라
플레이어의 게임 데이터를 저장하기 위해 JSON을 이용할 예정이다.이때 고려할 점으로 플레이어 데이터를 조작하는 상황을 방지하기 위해 암호화 알고리즘을 어떻게 적용할지 고민해봤다.AES (Advanced Encryption Standard) 알고리즘을 사용하여 데이터
오늘은 매직 넘버 제거와 하드 코딩된 문자열을 보수하는 작업을 진행했다. 코드의 가독성과 유지보수성을 저해하는 요소가 되었다. 진행하고 있는 프로젝트에서 예시를 간단하게 들어보자.아래 코드는 UI 경로를 문자열로 하드 코딩했다. 이는 유지보수성과 재사용성을 저해하는 문
프로젝트를 Revert하는 과정에서 예상치 못한 오류가 발생했고, 이로 인해 파일 시스템이 심각하게 꼬였다. 문제를 해결하기 위해 Bash의 Git Reset과 Cherry Pick 기능을 활용하기로 결정했다.특정 커밋으로 레포지토리의 상태를 되돌렸다. 여러번 Reve
게임 데이터를 저장, 불러오기를 제작했다.그러나 간과한게 있었다...유니티에서는 MonoBehaviour나 GameObject 같은 특정 객체를 직접적으로 직렬화하는 것이 어려울 수 있다.Unity의 MonoBehaviour, GameObject, Transform 등
게임 개발 과정에서 플레이어 데이터를 저장하는 기능을 구현했다. 특히, 이 데이터가 JSON 형식으로 저장될 때, 보안은 더욱 중요지는데, 데이터의 안전성과 무결성은 게임의 신뢰성을 결정짓고, 플레이어의 경험에 직접적인 영향을 미친다고 생각한다. 온라인 게임에서 데이터
오늘은 FosmonInfoPanel 클래스에 대한 리팩토링 작업을 진행했다.기존 코드는 몬스터 정보를 표시하는 데 필요한 모든 텍스트 필드를 단일 헤더 아래에 두었다. 리팩토링된 코드에서는 각 섹션(이름, 설명, 선호도, 행동)별로 헤더를 분리하여 가독성과 관리 용이성
프로젝트에서, 버튼의 위치를 조정하기 위해 Y축을 180도로 바꿨는데, 버튼이 동작하지 않는 버그가 생겼다.유니티 2D에서 버튼의 Y축을 180도로 회전시킬 경우, 버튼 클릭이 작동하지 않는 이유는 주로 버튼의 렌더링 방향이 바뀌기 때문이다.Y축을 기준으로 180도 회
오늘은 빌드를 진행했는데,시간에 맞춰서 급하게 작업하다보니사용자에게 굉장히 불친절한 게임이 탄생했다.UI에서 하버 기능을 조금 수정했는데, 마우스를 올리면 색상이 변하고, 텍스트가 나오게 제작했다.Hex 컬러를 이용하는 기능버튼에 정보를 딕셔너리로 관리.버튼 초기화마우
이번에는 저번에 세이브 로드를 암호화 하는 과정을 구상만 했었는데,실제로 프로젝트에 암호화를 적용해야할 일이 생겼다.Json Raw Data우리 프로젝트의 Save Json 원본이다.여기서 값만 수정한다면, 게임에서도 수정된 파일이 그대로 실행되었다.이를 방지하기 위해
포스몬 사전 부분을 수정했다. 아무리 봐도 가독성도 떨어지고, 오류도 찾기가 힘들었다. LoadMonsterForPlanet 메서드에 비동기 로딩이 추가했다. 이전 코드에서는 몬스터 데이터를 동기적으로 로드했을 수 있는데, 새 코드에서는 async 키워드와 await를
오디오의 설정값을 저장하면 좋겠다는 피드백이 들어왔다.해결 방법으로는1\. DataManager에 오디오값을 저장한다.2\. PlayerPrefs 이용한다.1번으로 하기에는 굳이? 라는 생각이 들고, 간단한 오디오 정보는 PlayerPrefs에 저장하면 좋다고 생각했다
🐧 들어가기 앞서 드디어 100일!!!!! 오늘은 오디오 매니저와 씬을 로드하는 코드를 리팩토링했다. ⚠️ 리팩토링 전의 문제 오류 발생 가능성 문자열 기반의 코드는 타이핑 오류나, 문자열 불일치 등으로 인해 런타임 오류가 발생할 가능성이 높았다. 코드 변경
배포 성공!itch.io는 다양한 운영 체제와 호환되는 게임을 지원한다. 게임이 여러 플랫폼에서 잘 작동하는지 확인한다. 또한, 사용자가 쉽게 다운로드하고 설치할 수 있도록 파일 포맷을 최적화하고 있다.임 페이지는 사용자의 첫인상을 결정한다. 명확하고 매력적인 게임 설
캠프 시작 전, 컴퓨터공학을 졸업했지만, 이론에 치우쳐 실제 코딩에는 능숙하지 못했습니다. 편입학을 통해 컴공을 공부했으나, 코딩에 대한 기본적인 지식조차 부족했습니다. 성적만으로 평가받던 학생 시절과 달리, 졸업을 앞두고 취업에 대한 불안감은 점점 커져갔습니다. 결국