글

AI 영상 편집 에이전트 doublespeed.ai 공개

이미지
doublespeed라는 AI 에이전트가 공개되었습니다. doublespeed는 Premiere Pro, Final Cut Pro, DaVinchi Resolve, CapCut, After Effects 등 기존의 영상 편집 소프트웨어를 AI가 직접 조작해 영상을 편집합니다. 새로운 동영상 편집 프로그램을 만든 게 아니라 기존 프로그램을 사용하기 때문에 기성 영상 편집자들은 자신에게 친숙한 프로그램을 사용하면서도 생산성을 극대화할 수 있게 되었습니다. 5월 14일 현재 아래 링크의 doublespeed 홈페이지에서 이메일로 대기 명단에 등록할 수 있습니다. https://www.doublespeed.ai/

이제 미니 게임 정도는 누구나 AI로 쉽게 만든다.

이미지
2025년 5월 7일에 구글이 Gemini 2.5 pro의 업데이트 버전을 공개했다. 프로그래밍 성능을 중점으로 개선했다는데, 오픈과 동시에 활용 사례를 많이 보여줘서 나 또한 테스트 삼아 미니 게임을 만들어보았다. 만들면서 느낀 점은 다음과 같다. cat and mouse 미니 게임 1. 스타일링 사실 AI 서비스 전반의 프로그래밍 수준이 높아서 미니 게임 구현 정도로는 성능을 비교하기 어렵다. 대신 스타일링에 있어서 꽤 좋은 모습을 보여주었다. 스스로 테마를 만들고 색상과 서체를 비롯해 테두리 같은 디테일한 부분도 꽤 잘 만든다. 다만 한글보다는 영어로 입력했을 때가 더 괜찮았다. 2. 캐릭터 고양이와 쥐 사진을 주고 해당 이미지에 기반해 게임을 만들어 달라고 요청하자 이모지를 사용해서 캐릭터를 표현했다. 다람쥐 그림을 요청 했을 때는 도형을 조합해서 최대한 다람쥐처럼 보이는 개체를 캐릭터로 표현하기도 했다. 개인 경험으로 다른 AI를 쓸 때는 한 번도 이런 식으로 답변을 내놓았던 적이 없어서 흥미로운 부분이었다. 3. 안정성 여러 번 요청을 반복하며 피드백을 반영했지만 그동안 한 번도 버그가 생기지 않았다. 기능이 단순한 미니 게임 정도는 버그 없이 안정성 있는 코드로 구현하는 모습을 보였다. 4. 레벨링 당연하지만 첫 프롬프트로 한 번에 재미를 느낄 수 있는 난이도가 조성되기는 어렵다. 첫 프롬프트를 통해 나온 결과를 테스트하고 피드백하기를 여러 단계에 거쳐 반복해야 그럴듯한 결과물이 나온다. 인간의 개입 없이 레벨링이 완벽하면 그땐 정말 게임 개발 직군 종사자들이 위협 받을 것 같다.

캔바 AI 도구로 업무를 혁신하는 Visual Suite 2.0 업데이트 소식

2025년 4월 11일에 캔바(Canva)가 대규모 업데이트를 통해  Visual Suite 2.0 를  출시했습니다.  캔바는  이 업데이트를 통해 디자인과 생산성 도구를 통합하여 사용자의 창의성과 업무 효율성을 동시에 향상시키려고 합니다.

Vercel을 이용한 프로젝트 배포 준비

이미지
저번 글에서 Git, Vercel Cli, Supabase Cli 설치가 끝냈는데, 이번 글에서 GitHub 저장소를 만들고 Vercel 프로젝트 설정을 위한 준비를 하도록 하겠다. Git 저장소 초기화 Vercel은 GitHub 저장소와 연동하여 배포한다. 프로젝트를 Git 저장소로 초기화해야 한다. 다음 명령 줄을 하나씩 실행한다. cd '프로젝트 폴더 경로'  프로젝트 폴더로 이동한다. git init git init 하면 '.git'이라는 폴더를 만들어서 해당 폴더를 Git이 관리할 수 있게 해준다. 해당 파일은 숨김 처리 되어있으므로, 설치한 프로젝트 폴더에서 숨긴 파일 표시하면 나타난다.  git add .  처음 커밋할 파일 추가한다. git commit -m "Initial commit" 첫 커밋을 실행하는 명령을 하면 Git이 "누가 커밋을 했는지" 정보를 모르겠다는 오류가 발생할 수 있다. Git 커밋에는 항상 작성자 이름과 이메일이 들어가는데, 사용자의 정보를 아직 Git이 모르는 상태이다. 아래 두 명령어로 사용자 정보를 설정해야 한다. 이름은 실명이 아니어도 되므로 닉네임을 사용해도 된다. git config --global user.email "이메일" git config --global user.name "이름" 프로젝트 루트 폴더에서 .gitignore 파일을 생성한다. 메모장을 만들어서 이름을 변경하면 된다. 그리고 cmd에서 다음의 명령줄을 이용해 배포에 불필요한 파일을 제외한다. 또는 VSCode 등 사용하는 편집기에서 제외할 파일 이름을 직접 작성해도 된다. 그 때는 큰 따옴표 안에 파일 이름을 작성한다. echo "node_modules/" > .gitignore  echo ".env" >> .gitignore GitHub 저장소 생성 및 푸시 먼저 GitHub에서 새 저...

웹 게임 배포를 위한 Git, Vercel Cli, Supabase Cli 설치

얼마 전 그록3와 Phaser를 이용해 제작한 웹 2D 게임을 Vercel의 호스팅 서비스를 이용해 배포하고 Supabase 클라우드 서버를 통해 리더보드를 구축해보려고 한다. Vercel 호스팅 Supabase 클라우드 서버 연동 두 서비스 모두 이용하려면 Git이 설치되어 있어야 한다.   깃 설치 깃을 설치하려면 아래 깃 공식 사이트에서 설치 파일을 받아서 설치해야한다. 깃 공식 사이트 파일을 받은 후 cmd 에서 'git --version'을 통해 정상 설치 되었는지 확인할 수 있다. Vercell Cli 설치 cmd에서 다음 명령어를 입력한다. npm install -g vercel  vercel --version Supabase Cli 설치 Window 환경에서 Supabase Cli를 설치하려면 Scoop이 필요하다. Scoop 은  Windows에서 패키지(프로그램)를 간편하게 설치하고 관리할 수 있게 도와주는 명령줄 기반 패키지 관리자이다.  cmd로는 안 되고 powershell을 통해 scoop을 설치한 다음 cmd에서 Supabase Cli를 설치해야 한다.  바로 scoop을 설치하려고 하면 PowerShell의 "실행 정책"이 너무 엄격하게 설정되어 있어서 Scoop을 설치할 수 없다는 메시지가 출력되므로 다음의 명령을 먼저 입력한다. Set-ExecutionPolicy RemoteSigned -scope CurrentUser 그 다음 아래 명령을 입력하면 scoop이 설치된다. iwr -useb get.scoop.sh | iex 이제 cmd로 넘어와서 아래 명령어를 입력하면 supabase Cli가 설치된다. scoop install supabase 이제 Git, Vercel Cli, Supabase Cli 설치가 끝났으니 다음 글에서 GitHub 저장소를 만들고 Vercel 프로젝트 설정을 위한 준비를 하도록 하겠다.

그록3 바이브 코딩과 Phaser를 이용한 웹 게임 'Cheese' 개발 기록

이미지
올해 초 안드레이 카파시(Andrej Karpathy)가 처음 개념을 제안한 이후 여러 ai 커뮤니티에서 바이브 코딩이 주목을 받고 있다. 얼마 전에는 인디해커인 피터 레벨스(Peter Levels)가 커서 ai로 바이브 코딩해 3d게임을 만들어서 바이브 코딩이라는 개념이 더 가능성을 보게 된 것 같다. 몇 년 전 취미 삼아 웹 게임 개발을 공부했다가 잠깐 접어뒀었는데, 최근의 ai 업계 업데이트들을 계기로 바이브 코딩에 도전해보았다. 사흘 정도 걸려서 간단한 2D 웹 게임을 만드는데 성공해서 게임을 소개하고 어떤 요소들에 주의해 작업했는지 기록해두겠다.  cheese-game.vercel.app 위 링크를 통해 실행해 볼 수 있고, 간단히 적들을 피해 노란 원을 모아 오면 되는 게임이다. 스프라이트 이미지는 없고, 그냥 점수 아이템이 노란색이라 치즈라고 이름 붙였다. 게임 규칙 치즈 게임 접속 화면 게임에 처음 접속하면 이름을 입력하는 화면을 보여준다. 이름을 아무거나 입력하고 Start 버튼을 누르면 게임을 시작한다. 치즈 게임 플레이 화면 플레이어는 검정색 원으로 표시된 캐릭터로, 플레이어의 본진인 회색 원 위에 시작한다. 키보드 방향키로 조작하거나 모바일에서는 터치한 기점을 기준으로 조이스틱처럼 조작하면 된다. 치즈 게임 플레이 화면 치즈 게임 플레이 화면 플레이어가 노란색 원인 치즈를 먹으면 플레이어 위에 표시된 점수가 올라간다. 본진인 회색 원으로 돌아오면 플레이어 캐릭터에 있던 점수가 본진에 표시된 점수로 치환된다. 본진에 있는 점수가 진짜 점수이다. 플레이어는 맵에 돌아다니는 적 유닛을 피해 무사히 치즈를 운반해와야 한다. 치즈 게임 종료 화면 적은 일정 반경 안에 플레이어 캐릭터가 들어오면 추격해오기 시작한다. 플레이어가 적에게 충돌하면 게임이 종료되고 리더보드와 재시작 버튼이 나타난다. 개발 기록 개발 도구 개발은 자바스크립트를 이용한 게임 엔진 중 하나인 Phaser를 이용했다. Pygame이나 고도 엔진 같은 다른 게임 엔...

그록 AI와 Godot엔진으로 2D게임 만들기 - 재시작 버튼 구현

이미지
이전 글에서 그록3 ai를 이용해 플레이어 이름과 현재 높이를 표시하는 UI 렌더링까지 구현했다. 이번에는 플레이어가 떨어졌을 때 캐릭터를 사망 처리하고, 재시작 버튼을 통해 다시 시작할 수 있도록 구현했다. 이전 글  그록3 채팅 그록3에게 세 가지를 요구했다. 첫 번째는 플레이어가 특정 지점 아래로 내려가면 캐릭터를 사망 처리할 것, 두 번째는 캐릭터가 사망하면 Retry 버튼을 나타낼 것, 버튼을 누르면 다른 플레이어에게 영향 가지 않도록 게임을 재시작 할 것. 그록3의 요구사항 분석 그록3가 스스로 내 요구 사항을 분석한다. 그록3의 설계 요구사항을 분석한 다음 스스로 임의의 값을 설정해서 설계하고 코드를 제공해주었다. 구현된 재시작 버튼 플레이어가 시작 위치에서 아래로 일정 거리만큼 떨어지자, 플레이어의 이동이 멈추고 Retry 버튼이 나타나는 모습을 확인했다. 버튼을 누르면 가지고 있던 자원이 초기화되고 시작 위치로 다시 돌아온다. 이번에는 아무런 버그 없이 한 번에 작동해서 만족스러웠다. 자원 클러스터의 배치나 캐릭터 사망시 효과 등 소소한 설정을 개선하고, 바로 멀티플레이 구현 단계로 넘어가면 될 것 같다.

그록 AI와 Godot엔진으로 2D 캐릭터 이름 만들기

이미지
이전 글에서 게임 내에 플레이어가 채굴할 수 있는 자원을 설치할 수 있도록 했는데, 이번에는 플레이어가 게임 시작 전 캐릭터의 이름을 지정하고, 게임 내에서 캐릭터 아래쪽에 이름이 렌더링 되도록 했다. 이전 글 Godot 엔진 이름 라벨 적용 플레이 화면 이름 라벨을 적용해서 플레이 해본 화면이다. 원이 플레이어의 캐릭터이고 아래에 이름이 표시된다. 그록3에게 했던 요청 캐릭터의 이름 라벨을 구현하기 위해 그록3에게 Play 버튼 화면에서 플레이어가 캐릭터의 이름을 지을 수 있게 하고, 캐릭터 아래에 이름이 표시되게 해달라고 했다. 처음에는 이름 라벨을 적용하고 플레이어의 현재 높이도 표시해 달라고 했는데, 한 번에 여러 부탁을 하니 오류가 많아져 요청을 여러 차례 수정했다. Godot 엔진 이름 라벨 그렇게 해서 위 이미지와 같이 이름 입력란을 추가했다. 중간에 이름 UI가 업데이트 되지 않는 문제도 생겼는데, 그록3에게 몇 차례 오류 메시지를 알려주니 코드의 실행 순서 때문이라는 문제를 찾아내고 해결했다. 그 밖에 이름이 지형에 겹치면 가려지는 문제도 있었는데, 그록3가 이름 라벨의 Z인덱스 갚을 지형보다 높이면 된다고 해서 그대로 해결할 수 있었다. 이름 라벨의 Z 인덱스 값 수정 지형의 Z 인덱스 값은 기본 값인 0으로 두고, 플레이어 아래 이름 라벨 UI의 Z 인덱스 값을 1로 높이니 문제가 해결되었다. 플레이어 높이 표시 UI 추가로 플레이어의 현재 높이가 표시되도록 했다. 플레이어가 블럭을 쌓고 올라가면 우측 상단에 몇 미터 올라갔는지 실시간으로 업데이트 된다.

그록 ai와 Godot엔진으로 2D 자원 배치하기

이미지
이전 포스팅에서 플레이어 캐릭터를 생성했는데, 이어서 이번에는 플레이어가 채굴할 수 있는 자원을 배치해보려고 한다. 이전 글 Godot 엔진 게임 테스트 플레이 화면 플레이어에게 초기 자원을 할당하고 조작키를 통해 자원을 배치할 수 있게 했다. 초기에 랜덤하게 배치된 자원 덩어리를 향해 나아가 새로운 자원을 채굴할 수 있다. 그록3에 요청한 내용은 다음과 같다.

그록 ai와 Godot 엔진으로 2D 플레이어 캐릭터 생성하기

이미지
이전 글에서 시작 화면 구성을 보여준 데 이어서 이번에는 캐릭터를 생성하는 과정을 거친다. 이전 글 플레이어 장면 생성 File > New Scene 을 눌러 새 장면을 만들고, 루트 노드를 CharacterBody2D 로 설정(2D 물리 이동에 적합). 장면 이름을 player.tscn 으로 저장. CharacterBody2D 아래에 노드 추가: CollisionShape2D : 충돌 영역 정의. 인스펙터에서 Shape 를 New CircleShape2D 로 설정, 반지름을 16으로 설정(원의 크기). Sprite2D : 플레이어 시각화. Texture 를 New CanvasTexture 로 설정. Modulate 속성에 랜덤 색상을 적용(스크립트에서 처리). 노드 이름을 명확히: CharacterBody2D : Player CollisionShape2D : Collision Sprite2D : Sprite Godot 엔진 플레이어 노드 구조 처음 그록3 ai에게 게임 개요에 대해 설명할 때, 플레이어 그래픽을 랜덤 색상의 원으로 만들겠다고 얘기했었는데 이 점을 잘 반영해주었다. 다만 그록3가 숙지하고 있는 Godot 엔진의 문서와 내가 사용하고 있는 Godot 엔진의 버전이 맞지 않는지, CollisionShape 노드의 반지름을 설정하라는 것처럼 내가 사용할 수 없는 설정에 대해 얘기하는 문제가 있다. 이런 문제는 그록3의 설명을 무시하고 내가 리사이즈 핸들을 통해 직접 크기를 맞춰서 해결했다. 플레이어 스크립트 Player 노드에 새 스크립트( player.gd )를 추가. 아래 코드를 작성해 이동, 점프, 랜덤 색상을 구현: