[스스챌 도전기] 08. Unfiltered World

드디어 앱을 완성했고 지난 3월 1일 서류 제출까지 완료했다.

지난 프로로타입에서부터 앱을 완성하기까지 꽤 많은 수정과 오류, 오랜 기간이 걸렸다. 앱을 만드는 과정에도 지속적으로 글을 남기고자 했었지만, 시간적 여유도 그렇고 계속 몰아치는 오류와 수정사항으로 인해 글을 남길 수 없었다. 우선 이번 글에서는 앱이 완성되기까지 과정, 그리고 지원서 작성과 제출까지 일을 남겨보고자 한다.

앱을 완성하기까지

앱에서 최초 컨셉이 정해지고 나서 완성되기까지는 꽤나 많은 과정이 필요했다. 삽입 이미지(일러스트), 효과음, 배경음악, 시나리오 완성, 카피라이팅, 실제 개발과 오류 수정 등 정말 많은 난관이 있었다. 사실 2월 28일까지 제출 마감이어서 앱 개발과 함께 포항으로의 이사를 병행하고자 했는데, 앱 개발에 너무 많은 시간이 소비되어서 이사를 아예 하지 못하였다. 마찬가지로 블로그 글 작성도 병행하고자 했지만 실패했다.

삽입할 이미지 만들기

우선 가장 어려운 것은 삽입할 이미지를 만드는 것 이었다. 이전에 스케치 컨셉으로 앱을 만든다고 했지만 내가 그림을 잘 못그린다. 그럼에도 불구하고 스케치 정도면 직접 그릴 수 있겠지 라는 생각에 직접 그리려고도 시도해보고, 지인에게도 부탁해보았지만 원하는 스타일 + 일관성 + 시간 내에 완성 세가지 조건을 모두 만족시키기가 어려웠다.

그래도 괜찮다. 위대하신 AI 선생님께서 계시니…
나는 Gemini를 켜서 원하는 스타일 가이드를 넣고, json 기반의 이미지 생성 프롬프트를 작성해 이미지를 뽑았다.

하지만 결과는 좋지 못했다.

Gemini AI 인터페이스에서 생성된 3x3 그리드 형태의 검은색 라인 아트 일러스트레이션.
어두운 모드의 채팅 화면 중앙에 흰색 배경의 사각형 이미지가 배치되어 있으며, 상단에는 생성에 사용된 것으로 보이는 JSON 형식의 프롬프트와 스타일 가이드 텍스트 일부가 노출되어 있다. 일러스트는 단순하고 굵은 검은색 외곽선을 사용한 미니멀한 '낙서(Doodle)' 스타일로, 총 9개의 아이콘이 격자 형태로 배열되어 있다.

이미지 내 일러스트 구성 (왼쪽 상단부터 순서대로):

무표정한 어린 소년의 얼굴

헤드폰을 쓰고 있는 무표정한 소년의 얼굴

소용돌이 안경(또는 눈)을 쓰고 있는 소년의 얼굴

놀이터 미끄럼틀

앉아 있는 푸들 강아지

놀이터 그네

굴착기(포크레인)

단순한 형태의 집

시계탑이 있는 학교 건물

추출된 텍스트 설명:

[상단 프롬프트 영역]
year-old elementary school boy. 2. The same expressionless boy wearing large AirPod...
"project_name": "3x3 Doodle Sketch Grid",
"style_guidelines": "Black and white line art, simple doodle style, thick smooth black outlines, minimalist facial features, no color, pure white background, clear..."

[하단 인터페이스 영역]
이미지를 설명하세요 (입력창 안내 문구)
이미지 만들기 (활성화된 버튼)
빠른 모델 (모델 선택 드롭다운)
플러스마이너스제로 주식회사 채팅은 Gemini 모델을 개선하는 데 사용되지 않습니다. Gemini는 AI이며 인물 등에 관한 정보 제공 시 실수를 할 수 있습니다. 개인 정보 보호 및 Gemini (하단 고지 사항)

내가 원하던 느낌은 Sketch 느낌, 낙서한 듯한 느낌의 자유로운 형태의 이미지였다. 하지만 Gemini가 생성한 이미지는 조금 더 아이콘 스러운 형태의 이미지가 나왔다. 직접 그린 느낌보다는 thenounproject 같은 곳에서 다운 받은 아이콘 느낌이 많이 났다.

그 다음으로 ChatGPT 에게도 이미지 생성을 요청해보았다. 그리고 결과는 성공적이었다.

다양한 표정을 짓고 있는 어린 소년의 캐릭터 디자인 시트 일러스트레이션.
흰색 배경에 검은색의 굵고 부드러운 라인 아트를 사용한 미니멀한 낙서(Doodle) 스타일이다. 상단에는 소년의 얼굴이 4행 3열의 격자 형태로 배치되어 있으며, 하단에는 커다란 헤드폰 단독 이미지와 헤드폰을 착용한 소년의 모습이 그려져 있다.

이미지 내 상세 구성:

첫 번째 줄: 미소 짓는 얼굴, 땀을 흘리며 슬퍼하는 얼굴, 얼굴이 빨갛게 상기되어 화내거나 당황한 얼굴.

두 번째 줄: 입으로 바람을 부는 얼굴, 입을 크게 벌리고 놀란 얼굴, "ZZZ" 표시와 하트가 그려진 채 잠든 얼굴.

세 번째 줄: 혀를 내밀고 장난치는 얼굴, 하품을 하며 졸려 하는 얼굴, 은은하게 미소 짓는 얼굴.

네 번째 줄: 윙크하며 혀를 내미는 얼굴, 머리 위에 별이 떠 있는 화난 얼굴, 눈을 가늘게 뜨고 생각에 잠긴 얼굴.

하단 영역: 왼쪽에 디테일한 검은색 헤드폰 아이콘이 있고, 오른쪽에는 그 헤드폰을 착용한 채 밝게 웃고 있는 소년의 상반신이 그려져 있다.

챗 지피티는 내가 원하는 느낌으로 그림을 매우 잘 그려주었다. 일부 디테일한 부분에서 수정이 필요한 항목이나, 잘못 생성된 사진들도 있었지만, 대체로 내가 원하는 방향성에 맞게 표현되었다.

ChatGPT로 이미지를 만들때에는 모든 이미지에 대해 한번에 1개의 이미지 생성만 하지 않고, 한번에 9개정도의 일러스트를 한 이미지에 같이 담아 출력하도록 했다. 이렇게 하면 이미지 생성 제한에서 조금 더 여유롭게 이미지를 만들어낼 수 있고, 잘못된 이미지가 섞여 나오더라도 다음 프롬프트에서 섞어서 하면 되기 때문에 효율적이었다.

나는 ChatGPT로 앱에 필요한 모든 이미지를 만들고, 일러스트로 불러와 다듬었다. 그리고 모든 이미지를 다시 svg 의 벡터 이미지로 출력했다.

커다란 헤드폰을 끼고 미소 짓는 아이의 흑백 라인 드로잉 일러스트.
굵은 검은색 선으로 단순하고 귀엽게 표현된 카툰 스타일의 그림으로, 동그란 눈과 부드럽게 올라간 입꼬리를 한 아이가 즐겁게 음악을 감상하는 듯한 모습이다. 푹신한 패드가 있는 오버이어 헤드폰을 착용하고 있으며, 흰색 배경 위로 인물의 머리와 어깨 부분만 깔끔한 선화로 그려져 있다.

이미지를 PNG나 JPG가 아닌 벡터로 출력한 이유는, 확대나 깨짐 관련한 이유도 있지만 가장 큰 것은 용량이었다. 고화질의 이미지를 PNG로 출력하게 되면 큰 용량이 필요하지만 SVG 파일은 상대적으로 용량이 적고 안정적이다. 특히 내가 만들고자 하는 이미지들은 모두 흑백의 단순한 선 기반이므로 용량적으로 훨씬 큰 이득이 있다.

그렇게 다는 모든 이미지들을 ChatGPT 와 일러스트레이터의 조합으로 출력했다.

참고로 내 블로그의 메인 로고 아이콘도 여기서 출력한 이미지를 이용했다. 의미나 이유가 있기보다는 그냥 만족스러워서 넣었다.

효과음과 배경음악

효과음과 배경음악을 찾는 것도 쉽지만은 않았다.

가장 어려운 것은 적절한 효과음을 찾을 수 있는 웹사이트를 찾는 것이었다. ‘효과음’이나 ‘음악’을 무료로 공유하고 다운받을 수 있도록 하는 웹사이트는 많다. 하지만 그곳 중 저작권이 확실하게 보장되는 곳은 많지 않다. 효과음 라이브러리는 대체로 유튜브 영상 제작자들을 위한 사이트들이 많았고 그곳에 있는 효과음들도 유튜브에 더욱 적합한 효과음들이고, 게임이나 현실적인 소리들과는 거리감이 있었다. 무엇보다 저작권이 보장된, 안전한 파일들을 모아놓은게 아니기 때문에 함부로 이용할 수 없었다.

그러던 중 pixabay를 찾게되었다. pixabay는 원래부터 이미지 찾기를 위해 자주 접속하던 서비스인데, 여기서 효과음과 음악 또한 Copyright Free로 공유되고 있다는 것을 알게되었다. 이에 나는 앱에 사용될 모든 효과음들을 Pixabay에 검색해서 찾게 되었다. (학교종소리만 한국저작권위원회의 공유마당 서비스를 이용하였다.)

Pixabay(픽사베이) 웹사이트에서 'car honk'를 검색한 결과 화면 스크린샷.
화면 상단에는 서비스 로고와 검색창이 위치하며, 검색창에는 'car honk'라는 검색어와 'Sound Effects' 카테고리가 선택되어 있다. 중앙에는 '1,573 royalty-free car honk sound effects'라는 타이틀과 함께 자동차 경적 소리와 관련된 다양한 태그(honk, horn, car, vehicle 등)들이 나열되어 있으며, 하단으로는 다운로드 가능한 개별 음원 리스트가 목록 형태로 나타나 있다. 배경은 깔끔한 화이트 톤의 UI 디자인을 보여준다.

주요 텍스트 내용:

상단 메뉴

Pixabay 로고

검색어: car honk (Sound Effects 카테고리)

메뉴: Explore, Log in, Join, Upload

본문 타이틀

1,573 royalty-free car honk sound effects

Download car honk royalty-free sound effects to use in your next project.

관련 태그

honk, horn, car, vehicle, honking, beep, automobile, auto, traffic, car honking

음원 리스트 (일부)

Car Honk - DRAGON-STUDIO

Car horn beep beep two beeps honk honk - freesound_community

Double Car Horn - Universfield

Car Horns - Universfield

Vintage Car Horn - Universfield

개발하기

실제 개발 과정은 이전 포스트에서 언급한 것과 유사하게 진행되었다. 차이점이 있다면 이제는 기능 설계와 검증 단계를 넘어서, 실제 앱 프로세스에 맞게 개발을 진행하고, 맵을 만들었다. 그리고 수많은 버그 해결 과정이 있었다.

그림을 그릴 때 배경 스케치를 하고 점차 채색을 하고 디테일을 추가하듯이, 개발을 할 때에도 처음부터 완벽한 개발을 하기보다 하나하나씩 틀을 만들고, 디테일을 맞춰가는 식으로 진행했다.

최종 앱

최종적으로 완성된 앱이다.
최종 앱에서는 단순히 기능 뿐만 아니라, UX적인 부분도 고려하여 앱 프로세스를 만들었다.

온보딩

앱을 처음 켤 때 온보딩 화면에서는 메뉴를 모두 보여주지 않고, Start the Game을 메인 버튼으로 놓아 직관적으로 게임을 먼저 플레이하도록 하였다.

Swift Student Challenge 출품작 'Unfiltered World' 앱의 메인 온보딩 화면. 따뜻한 베이지색 배경 중앙에 커다란 노이즈 캔슬링 헤드폰을 쓴 아이가 미소 짓고 있는 흑백 라인 드로잉 일러스트가 배치되어 있다. 그 아래로 게임의 주제를 알리는 문구와 게임 시작 버튼이 중앙 정렬되어 있다.

Knowing how it feels helps us understand each other.
Start the Game
Go to main menu

게임 플레이를 누르면 바로 게임으로 넘어가지 않고, 간단하게 어떠한 게임인지 소개하는 화면도 만들었다.

'Unfiltered World' 게임의 조작 방법을 안내하는 튜토리얼 화면. 베이지색 배경 중앙에 헤드폰을 쓴 아이 캐릭터와 빈 동그라미가 직선으로 연결된 일러스트가 있다. 화면 좌측 상단에는 일시정지 아이콘이, 우측 하단에는 다음 단계로 넘어가는 텍스트 버튼이 있다. If you drag the circle, the character follows you. Next →

마지막으로 게임 플레이를 누르면 간단한 애니메이션과 대사가 나와 게임 플레이 전 이 상황과 스토리에 몰입할 수 있도록 하였다.

게임 시작 직전 상황 스토리를 전달하는 애니메이션 화면. 베이지색 배경 중앙에 미소 짓고 있는 단발머리 여성(어머니)의 흑백 라인 드로잉 일러스트가 위치해 있다. 그 아래에 마트에 가는 상황과 헤드폰의 용도를 설명하는 텍스트가 적혀 있다. We're going to the store today. This headphones will help you reduce the noise

메인 게임

아래는 메인 게임 플레이 화면이다.

상단에는 내가 진행해야할 미션들이 있고, 중앙의 맵에서 캐릭터를 움직여 게임을 플레이할 수 있다.
스트레스 레벨에 따라 화면이 일렁이고 흔들리며 게임 진행이 어려워지게 된다.

'Unfiltered World'의 실제 게임 플레이 화면. 화면 상단에는 마트, 집 등 목적지 진행도를 나타내는 동그란 아이콘들과 65%까지 차오른 주황색 '스트레스 레벨(Stress Level)' 게이지 바가 있다. 화면 중앙에는 구불구불한 좁은 길을 따라 강아지, 공사장, 신호등, 마트 등 다양한 소음 및 환경 요소들이 빨간색 또는 초록색의 파장 기호와 함께 배치되어 있다. 좌측 하단에는 헤드폰을 쓴 아이 캐릭터가 말풍선으로 플레이어에게 메시지를 전달하고 있다. Stress Level 65% Great! Let's go and look for casher.

스트레스 레벨이 100%를 찍으면 캐릭터는 안정을 취해야 한다.

이 때 팝업창이 뜨며 숫자를 셀 수 있는 화면이 나온다. 여기서는 숫자를 1-10까지 순서대로 눌러 캐릭터가 숫자를 카운팅할 수 있도록 하고 진정시킬 수 있다. 이 팝업 미션을 완료하면 스트레스 레벨이 0%로 리셋된다.

게임 중 감각 과부하로 인해 스트레스 레벨이 최대치에 도달했을 때 나타나는 숫자 카운팅 미니게임 팝업 화면. 흐려진 게임 플레이 화면 위로 모서리가 둥근 베이지색 팝업 창이 나타나 있다. 팝업 창 중앙에는 3부터 10까지의 숫자가 적힌 하얀색 동그라미들이 무작위로 흩어져 있고, 하단에는 손가락으로 숫자 2를 표현한 손 그림이 있다. Deep Breath, It's to noisy for me... Let's count the numbers from 1 to 10 to calm your mind. 4, 3, 9, 10, 8, 7, 5, 6 Two

게임을 종료하면 과감각에 대해 배우고 정보를 알 수 있는 메뉴로 접속할 수 있다.

이곳에서는 각 게임에서 있었던 요소들과 그 의미를 통해 과감각에 대해 더 잘 이해하고 알아갈 수 있도록 정보를 제공한다.

감각 과부하(Sensory Overload)에 대한 정보를 제공하는 인포메이션 화면. 화면이 좌우로 나뉘어 있으며, 좌측의 목차 영역에서는 '4. How to feel better?' 항목이 초록색으로 활성화되어 있다. 우측의 본문 영역에는 숫자를 세는 손 모양, 선글라스, 헤드폰을 쓴 아이의 흑백 일러스트와 함께 감각 과부하를 완화하는 방법들이 상세히 텍스트로 설명되어 있다. (좌측 목차) What is Sensory Overload? What is it? How does it feel? What happens next? How to feel better? How can friends help? For Parents & Teachers (우측 본문) How to Feel Better Counting: A Way to Calm Down Counting from 1 to 10 or taking deep breaths helps the brain focus on one thing. This makes the loud world feel a bit further away. Helpful Tools Noise-canceling Earmuffs are like sunglasses, but for ears! They are not for music. They block painful noises so kids can feel safe outside. Sunglasses Sunglasses help block out lights that are too bright. Noise-canceling Earmuffs These help make the world quiet and peaceful. Making a Safe Space • Safe Spaces: Moving to a quiet, dark room to let the brain rest. • Routines: Following a strict daily schedule to prevent unexpected sensory surprises.

게임 플레이 영상

마무리

위의 앱 제작을 마무리하고, 지원서까지 작성을 완료해 Swift Student Challenge 를 submit 하였다.

나 개인으로서는 만족스러운 결과가 나왔다고 생각한다. 하지만 실제 심사위원분들이 보는 관점은 다를 수 있고 지원서의 내용도 합격의 당락에 결과를 미칠 수 있기 때문에 기대는 하지 않으려 한다.

단지, 이 과정에서 내가 경험한 것들, 준비하며 얻은 조언과 배움들 덕분에 그 과정 자체로 뜻깊은 시간이었다.

이 게시글을

댓글 남기기