전환 점검
Unity 게임을 앱인토스 미니앱으로 옮기기 전에, 게임이 어떤 기술로 만들어졌는지와 플랫폼에 잘 맞는지 살펴봐야 해요.
이 과정을 통해 전환이 가능한지, 또 어떤 부분을 더 최적화하면 좋을지 알 수 있어요.
1. 호환성 체크 리스트
✅ 완전 지원 기능
렌더링
- Unity 3D/2D 렌더링 파이프라인: Built-in, URP, HDRP 모두 지원
- WebGL 1.0/2.0: 자동 감지 및 대체
- 셰이더: Standard, Lit, Unlit 셰이더 완전 지원
- 텍스처 포맷: PNG, JPG, WebP, 압축 텍스처 지원
- 애니메이션: Animator, Animation Clip, Timeline 지원
- 파티클 시스템: Visual Effect Graph 포함 완전 지원
스크립팅
- C# 스크립팅: .NET Standard 2.1 기반 완전 지원
- IL2CPP: 코드 최적화 및 성능 향상
- 이벤트 시스템: Unity Events, C# Events 지원
- 코루틴: 비동기 작업 완전 지원
- JSON 직렬화: JsonUtility, Newtonsoft.Json 지원
물리학
- 2D/3D 물리: Box2D, PhysX 엔진 지원
- 충돌 감지: Trigger, Collision 이벤트 지원
- 관절 시스템: Joint 컴포넌트 모든 타입 지원
- Raycast: 2D/3D 레이캐스팅 완전 지원
UI 시스템
- uGUI (Legacy UI): Canvas, EventSystem 완전 지원
- UI Toolkit (UI Elements): 런타임 UI 지원
- Input System: 신/구 Input 시스템 모두 지원
- TextMeshPro: 고급 텍스트 렌더링 지원
⚠️ 제한적 지원 기능
네트워킹
- UnityWebRequest ✅ — HTTP/HTTPS 완전 지원
- WebSocket ✅ — 실시간 통신 지원 (써드파티 라이브러리 필요)
- TCP/UDP Socket ❌ — 브라우저 보안상 미지원
- P2P 통신 ❌ — WebRTC 기반 솔루션 필요
파일 시스템
- Resources 폴더 ✅ — 제한적 지원 (용량 고려 필요)
- StreamingAssets ✅ — CDN을 통한 동적 로딩 지원
- File I/O ❌ — 로컬 파일 시스템 접근 불가
- PlayerPrefs ✅ — 브라우저 LocalStorage 매핑
멀티미디어
- 오디오 ⚠️ — 포맷 제한 있음 (WebM, OGG 권장)
- 비디오 ⚠️ — H.264, WebM 지원, 용량 제한
- 카메라 접근 ⚠️ — WebRTC API 활용 (권한 필요)
- 마이크 접근 ⚠️ — 브라우저 권한 정책 적용
플랫폼 특화 기능
- ARCore/ARKit ❌ — WebXR로 대체 가능 (제한적)
- GPS/센서 ⚠️ — 브라우저 API 활용 (정확도 낮음)
- 진동 ✅ — 앱인토스 SDK 지원
- 알림 ✅ — 웹 푸시 알림 지원
❌ 미지원 기능
네이티브 플러그인
- Native Plugin — iOS/Android 네이티브 코드
- DLL Import — 시스템 라이브러리 호출
- Platform-specific Code — 조건부 컴파일 (#if UNITY_IOS 등)
고급 시스템
- Multithreading — Job System 일부 제한
- Compute Shader — 제한적 지원
- XR (VR/AR) — WebXR 기반 제한적 지원
2. 성능 평가 기준
메모리 사용량
💚 좋음 (< 128MB)
├── 2D 게임, 심플한 3D 게임
├── UI 중심 게임
└── 퍼즐/캐주얼 게임
🟨 보통 (128–256MB)
├── 중간 규모 3D 게임
├── 2.5D 게임
└── 간단한 액션 게임
🔴 주의 (> 256MB)
├── 대형 3D 게임
├── 오픈 월드 게임
└── 고화질 그래픽 게임렌더링 복잡도
💚 적합 (< 100 Draw Call)
├── 2D 스프라이트 게임
├── 저폴리 3D 게임
└── UI 중심 게임
🟨 최적화 필요 (100-300 Draw Call)
├── 일반 3D 게임
├── 이펙트가 많은 게임
└── 복잡한 UI 게임
🔴 대대적 최적화 필요 (> 300 Draw Call)
├── 고품질 3D 게임
├── 복잡한 셰이더 사용 게임
└── 많은 오브젝트가 동시 렌더링네트워크 의존성
💚 낮음
├── 오프라인 게임
├── 간단한 리더보드만 사용
└── 로컬 저장소 위주
🟨 보통
├── 실시간 멀티플레이어 (턴제)
├── 클라우드 세이브 사용
└── 소셜 기능 포함
🔴 높음
├── 실시간 액션 멀티플레이어
├── 스트리밍 콘텐츠 사용
└── 서버 의존적 게임플레이3. 플랫폼별 특성 고려사항
모바일 환경 (iOS/Android)
고려사항
├── 터치 인터페이스로 UI 재설계 필요
├── 화면 크기 다양성 (4인치~7인치)
├── 성능 제약 (RAM 2-8GB)
├── 배터리 수명 고려
├── 네트워크 불안정성
└── 앱 백그라운드 전환웹 브라우저 환경
고려사항
├── 브라우저별 호환성 차이
├── 웹 보안 정책 제약
├── 파일 다운로드 제한
├── 팝업 차단 정책
├── 자동재생 정책
└── 메모리 가비지 컬렉션4. 게임 장르별 적합성 분석
🟢 매우 적합한 장르
✅ 퍼즐 게임
- 낮은 성능 요구사항
- 간단한 조작
- 짧은 플레이 세션
✅ 캐주얼 게임
- 직관적 조작
- 빠른 시작
- 소셜 요소 활용
✅ 카드/보드 게임
- 정적 요소 위주
- 턴제 게임플레이
- 네트워크 지연 허용🟡 적합한 장르 (최적화 필요)
⚠️ 액션 게임
- 터치 조작 최적화 필요
- 반응속도 중요
- 성능 최적화 필수
⚠️ RPG 게임
- 긴 플레이 세션
- 복잡한 시스템
- 메모리 관리 중요
⚠️ 시뮬레이션 게임
- 복잡한 로직
- 지속적인 연산
- UI 복잡도 높음🔴 도전적인 장르
❗ FPS/TPS 게임
- 높은 프레임레이트 요구
- 정밀한 조작 필요
- 네트워크 지연 민감
❗ 레이싱 게임
- 높은 성능 요구
- 물리 연산 집약적
- 60FPS 필수
❗ MMO 게임
- 대용량 데이터
- 복잡한 네트워킹
- 긴 로딩 시간5. 실용적 평가 도구
자동 평가 스크립트
c#
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
public class AppsInTossCompatibilityChecker : EditorWindow
{
[MenuItem("AppsInToss/Compatibility Checker")]
public static void ShowWindow()
{
GetWindow<AppsInTossCompatibilityChecker>("호환성 검사");
}
void OnGUI()
{
GUILayout.Label("AppsInToss 호환성 검사", EditorStyles.boldLabel);
if (GUILayout.Button("프로젝트 분석 시작"))
{
AnalyzeProject();
}
}
void AnalyzeProject()
{
var textureMemory = CalculateTextureMemoryUsage();
var meshMemory = CalculateMeshMemoryUsage();
Debug.Log($"예상 텍스처 메모리: {textureMemory}MB");
Debug.Log($"예상 메시 메모리: {meshMemory}MB");
CheckIncompatibleComponents();
SuggestOptimizations();
}
}성능 테스트 체크리스트
메모리 테스트
- 메모리 사용량 < 256MB
- 텍스처 압축 설정 확인
- 불필요한 리소스 제거
- 메모리 누수 검사
렌더링 테스트
- Draw Call < 200
- Batch 최적화 확인
- 셰이더 복잡도 검사
- LOD 시스템 적용
모바일 테스트
- 터치 입력 테스트
- 다양한 화면 비율 테스트
- 성능 프로파일링
- 배터리 소모 테스트
6. 마이그레이션 전략
단계별 접근법
1단계: 기본 포팅
├── 핵심 게임플레이 이식
├── 기본 UI 적응
└── 기본 기능 테스트
2단계: 최적화
├── 성능 병목 해결
├── 메모리 최적화
└── 로딩 시간 단축
3단계: 플랫폼 적응
├── AppsInToss SDK 연동
└── 최종 최적화리스크 관리
⚠️ 높은 리스크
├── 대폭적인 아키텍처 변경 필요
├── 성능 목표 달성 불가능
└── 핵심 기능 구현 불가
🔶 중간 리스크
├── 일부 기능 재설계 필요
├── 최적화 작업 대량 필요
└── 추가 개발 시간 필요
✅ 낮은 리스크
├── 기본 포팅으로 동작
├── 최소한의 최적화 필요
└── 빠른 시장 출시 가능7. 의사결정 가이드
전환 권장 조건
- Unity 2021.3 LTS 이상 사용
- 메모리 사용량 < 200MB
- 네이티브 플러그인 미사용
- 웹 친화적 게임 디자인
- 개발팀의 웹 기술 이해도
전환 비권장 조건
- 레거시 Unity 버전 (2019 이하)
- 대용량 게임 (> 500MB)
- 네이티브 의존성 높음
- 실시간 성능 크리티컬
- 짧은 개발 일정
