MonoBehaviour 는 무슨 클래스인가 MonoBehaviour는 Unity 프로젝트에서 작성하는 컴포넌트형 C 스크립트가 주로 상속하는 기본 클래스이다. GameObject의 컴포넌트로 동작하는 스크립트는 보통 MonoBehaviour를 상속한다. MonoBeh...
게임 개발 첫 삽 뜨기 게임 개발을 하겠다고 마음 먹은만큼, 앞으로 매일 2시간 정도는 게임 개발에 시간을 할애하기로 했다. 일단 아무거나 만들어보자는 생각을 하면 오히려 방향성이 없어서 쉽게 포기할 수 있기에, 확실한 장르, 디자인 등을 선택했다. 장르와 디자인 우선...
Java와 C 닮은 듯 다른 두 언어 Java와 C은 가상머신 위에서 돌아간다는 공통점이 있다. 그런데 최근에 두 언어를 다시 배우면서 대충 넘어갔던 부분, 그리고 새롭게 알게된 부분이 있어서 한번 정리해보려고 한다. VM은 언어마다 하나만 있는게 아니다 나는 Java...
어쩌다 Unity까지 하게 되었다 교육을 받으면서 틈틈이 독학으로 이거저거 배우고 있는 중에, 나는 어느새 Unity까지 배우고 있다. 시작은 WebXR을 구현하기 위한 여정 웹에서 XR을 구현하기 위해 Babylon.js도 써보고, Three.js도 알아보고 해봤다....
Entity Component System 앞으로 있을 프로젝트를 위해 Babylon.js를 독학하며 간단한 게임을 개발하고 있다. 그래서 게임 쪽 용어들을 접하는 경우가 많아졌다. 그 중에 눈에 들어온 용어가 Entity Component System 이었다. 무엇인...
코드 생성 시작 설정파일 및 진입점 생성 클로드를 이용해서 마크다운 파일들을 참고하여 코드를 생성하도록 했다. 우선은 비어있는 프로젝트 폴더에 vite.config.ts, tsconfig.json, package.json 들을 만들어 필요한 설정들을 포함하도록 했다. ...
구체적인 계획 설정 그러면 장르는 정했는데 이제 무엇을, 어떻게 구현할 것인지를 정해야했다. 먼저, 레이싱 게임에 필요한 요소가 뭐가 있는지 적어봤다. 1. 자동차 2. 트랙 3. 속도계 4. 랩타임 5. 기록 저장 코딩 에이전트로는 Claude Code를 사용했다. ...
웹에서 3D 컨텐츠 구현해보기 웹에서 3D를 구현하는 방법에는 여러가지가 있지만, 현재 많이 사용되고 있는 것은 Three.js 그리고 Babylon.js 가 있다고 한다. 3D를 구현해보는건 처음이기에 둘 중 어느 것으로 구현을 하는게 좋을지 조사했다. Three.j...
최근 Java 교육을 받으면서 틈틈이 언리얼 엔진을 독학하고 있다. 현재 배우고 있는 기술들이 버추얼 산업계에서의 실시간 렌더링 및 인터랙션 기술 활용에 초점이 맞춰져 있다 보니, 언리얼 같은 강력한 엔진에 대한 깊이 있는 이해가 필수적이라는 생각이 들었기 때문이다. ...
Gemini CLI 를 이용해서 만든 슬라이드 퍼즐 게임 최근에 문화상품권을 얻으려고 크롬 대신 마이크로소프트의 빙을 쓰고 있다. 그런데 빙에서 포인트를 주는 문제로 슬라이드 퍼즐 게임을 주더라. 이걸 보면서 흠, 생성형 AI를 이용하면 간단한 퍼즐 게임은 빠르게 만들...
Go, 잠시만 안녕! Go Echo에서 NestJS로 API 서버를 전환하게 된 계기 블로그 서버를 Go 기반의 Echo 프레임워크에서 TypeScript 기반의 NestJS로 옮기기로 했다. 이유는 다음과 같다. 1\. 프론트엔드와 개발 언어 통일 기존에는 백엔드는 ...
React Native와 FastAPI 프로젝트를 모노레포로 관리하기 왜 모노레포로? 우선, 나는 모노레포 프로젝트를 실무에서 경험해보지 못했다. 회사에서 진행했던 프로젝트들은 관련 있는 프로젝트들도 모두 개별 Git에서 관리되고 있었고, 나 또한 프로젝트들을 진행할 ...
Python import는 어떻게 작동하는가 내 supabaseclient가 None이었던 이유를 찾아서 최근에 개인 프로젝트를 하면서 Python을 만져보고 있다. 그런데 내가 기존에 쓰던 언어들과는 참 다른 특징을 가지고 있어서, 프로젝트를 진행하면서 혼란이 왔었다...
GraphQL GraphQL은 Facebook(현 Meta)에서 만든 API를 위한 쿼리 언어이자 서버 사이드 런타임이다. 특이하게도 쿼리 언어이지만 SQL이 아니라 REST와 비교되곤 한다. 왜 그런걸까? 이는 SQL이 데이터베이스에 저장된 데이터를 가져올 목적으로 ...
Riverpod Riverpod. Provider 패키지와 동일한 개발자가 만든 상태 관리 패키지이다. 기존에 회사에서는 상태 관리를 위해 Provider를 사용하고 있었다. 당시에는 편리하게 사용하고 있었지만 가끔씩 문제가 발생할 때마다 난감했는데, Riverpod의...
최근에 깨달은 점이 있다. 나는 개발을 다소 안일하게 생각하고 있었던 것 같다. 특히 비전공자인 만큼 개념적인 부분에서 더 노력해야 하는데, 지금까지는 포트폴리오를 꾸미는 데에만 집중해 왔다. 그래서 오늘은 시간 복잡도에 대해 공부한 내용을 정리하려고 한다. 시간 복잡...
지난 7월 26일, Google I/O Extended Incheon 2025 이 열리는 인하대로 갔다. 이런 이벤트는 예전에 2022년도에 건국대에서 열린 Flutter I/O Extended Korea 이후로 처음이었다. 당시엔 Flutter 개발자로서 Flutte...
이제 총알 컴포넌트를 추가할 차례다. 튜토리얼에서는 패닝을 통해 우주선을 조종하고 있기에, 우주선을 조종하는 동안 총알을 발사하고, 우주선을 멈추면 발사도 멈추는 형식으로 구현하도록 안내하고 있다. 총알 컴포넌트를 구성하는 코드는 다음과 같다. dart class Bu...
블로그 게시글 리스트를 보면 너무 심심했다. 썸네일 이미지도 없이 제목과 내용 일부가 전부. 썸네일이 없다보니, 각 게시글이 어떤 내용을 다루는지 빠르게 파악하기 어려웠다. 그래서 썸네일을 추가하기로 했다. javascript export default function...
이제 cwebp 을 이용하여 파일을 webp로 변환해야 한다. 어떻게 하면 될까? 찾아보니 앱 루트에 assets 폴더를 넣고 그 안에 외부실행 파일을 넣어서 실행하면 된다고 한다. 앱의 루트 경로에 assets/bin 폴더를 만들고 그 안에 cwebp 실행 파일을 넣...
블로그에 이미지를 업로드할 때, png나 jpg 이미지들을 webp로 변환하여 업로드한다. 그 이유는 무시하기 힘든 파일 크기 차이 때문이다. 지금은 1 - 2 MB 정도의 크기이지만 나중에 게시글이 많아지면 차지하고 있는 양에서 차이가 날 것이기에, 게시글을 쓰는 초...
이제 게임에 Animation을 추가할 차례다. 그러기 위해선 기존에 SpriteComponent를 상속한 Player 컴포넌트를 SpriteAnimationComponent를 상속하도록 변경해야 한다. dart class Player extends SpriteAnim...
Flutter Flame 게시글을 쓰던 중 발견했다. Dart 코드는 하이라이팅이 제대로 안 되고 있었던 것. 아무래도 Dart는 신생언어다보니, highlight.js에서 지원하는 기본적인 언어 케이스에 들어가지 않았다. 그래서 Dart 언어를 지원하기 위한 수많은 ...
이제 컴포넌트에 상호작용을 추가해야한다. 튜토리얼에서는 마우스나 터치 제스쳐를 통해 플레이어 컴포넌트를 조종할 수 있도록 안내하고 있다. 기존에 만든 FirstFlameGame 클래스에 PanDetector를 추가한다. dart class FirstFlameGame e...
Flame은 Flutter 기반의 2D 게임 엔진이다. Flame을 이용해 멋진 게임들을 만들 수 있다고 한다. 일반적으로 게임을 만들 때는 Unreal Engine이나 Unity를 사용해서 개발하지만, 내가 게임 개발 관련해서는 문외한이기도 하고 Flutter 기반의...
React에선 반복되는 요소가 있을 시 key 값을 넣어줘야 한다. 그렇지 않으면 오류가 발생한다. Warning : Each Child in a list should have a unique "key" prop. 이런 식으로. 당연히 알고 있는 문제이기에, li 에 ...
Hello, world! 첫 블로그 게시글 테스트 완료. 이미지 업로드 테스트 완료. 안녕하세요.