스토리 스킵이 가능하다면,슈가를 클릭하여 스토리 스킵 → 1차전직 →머리 위 전구로 스토리 스킵 후 2차 전직하여 완료 스토리 스킵이 불가능하다면, 메인 스토리를 따라가며 2차 전직까지 도달하도록 하자. (첨부할 자료 부족)
모험가 스토리의 스킵은4차 전직을 한 모험가 직업이 있을 경우 가능하다. 즉 한 번은 스토리를 정직하게 밀거나 잘 알려진 편법을 사용한다. 대표적인 편법으로는, 패스파인더 101레벨 이상 달성 후, 자유전직 시스템(직업변경)을 통해 보우마스터나 신궁으로 전직하는 방법이 있다. 자유전직은 미나르 숲 : 산양의 골짜기1로 텔레포트 후 전직관이 모여있는 '사제의 숲'으로 이동, 전직관에게 말을 걸어 진행이 가능하다. 자유전직 시, 현재 레벨에 따라 메소를 지불해야 하며, 레벨이 높을수록 많은 비용을 지불한다. 만약 패스파인더로 궁성비를 사용해서 200레벨이 된 후 자유전직을 시도하면 4.6억메소를 지출해야 하므로, 101레벨까지 직접 육성한다는 선택지와 저울질이 필요하다.
1-2. 시그너스 직업 튜토리얼과 1차전직 완료 후, 나인하트의 [시그너스 기사단] 수련기사의 끝 퀘스트로 2차전직 진행 몬스터에게서 전리품 획득 후 에레브로 돌아가야 하는데, 거리가 좀 있으므로 텔레포트 또는 마을이동 기능을 사용하면 좋다. 퀘스트와 함께 2차전직도 함께 완료된다.
1-3. 레지스탕스 직업
마을에 도착 할 때까지의 스토리 진행을 해야한다. 궁성비를 통해 10레벨 이상이 되었다면, 좌측 전구 아이콘 에서 [레지스탕스] 의문의 초대장 퀘스트를 받아, 인벤토리에서 초대장 사용 후 1차 전직을 진행한다. 전구를 통해 [레지스탕스] 방과 후 특별수업 및 [레지스탕스] 복수와 성장 퀘스트를 진행하여 2차 전직 완료 적을 처치해야 할 에델슈타인 임시공항의 위치는 아래와 같다.
2. 듀얼 블레이드 / 듀블 (10분+)
슈가 클릭 후 스토리 스킵 → 비화원 진입 후 튜토리얼 룸 세 단계 클리어 → 넬라, 제이엠, 돈 지오바네 조사 → (1.5차 전직)탁한 유리구슬 깨뜨리기 →머리 위 전구 퀘스트를 통해 헤네시스 이동 → 헤네시스에서 머리 위 전구를 통해 모험가 스토리 스킵 → 좌측 전구 아이콘의 [모험가] 비화원으로 돌아가는 법 퀘스트 완료 및 획득한 스킬을 사용하여 전직관에게 이동 → 전직관에게 말을 걸어 2차 전직 완료
2차 전직 퀘스트가 어째서인지 좌측 전구에 뜨지 않아서 직접 설희(전직관)을 찾아가야 한다.
3. 패스파인더 / 패파
동굴맵 탈출 후 바로 머리 위 전구를 통해 전직 가능
4. 아크
피난처 튜토리얼과 관계 없이 레벨만 되면 2차 전직이 가능하다.(한 번 더 검증 필요)
5. 일리움(30분)
2차전직을 위해 초반 스토리 진행 필요. 막힘 없이 진행 시, 약 30분 소요. 스토리 진행 중 지역 간 텔포 이동이 불가능하여 이동에 시간을 많이 소모한다. 또한, 아이템을 주워야 하는 퀘스트가 많아 펫이 있다면 조금 더 수월하게 진행이 가능하다. 아카데미아에서 각성(흰머리)과 함께 2차전직 완료. 유니온 UI를 띄울 수 없는 지역이지만 정상적으로 완료되었으므로 바로 종료하여도 무방함.
6. 카인
제일 먼저 보이는 스토리 퀘스트를 받고, 문 밖을 나가 NPC로부터 퀘스트를 진행하면 1차전직을 할 수 있고, 레벨이 될 경우 머리 위 전구를 통해 2차전직 바로 가능. 1층 서쪽 통로에서 머리 위에 뜬 전구를 통해 헬리시움으로 빠지지 않도록 주의. 실수로 헬리시움으로 이동되었다면, 다시 해당 맵으로 돌아와 스토리 퀘스트 진행하도록 하자.
7. 호영(5분)
스토리 퀘스트 조금 진행하여 도철을 봉인에서 풀어준 뒤, 1차 전직 후 바로 머리 위의 전구를 통해 2차 전직이 가능. 캐릭터 생성부터 약 5분 소요. 유니온 UI를 열 수 없는 지역이지만, 2차 전직만 완료되었다면 문제 없이 유니온 효과 적용.
8. 은월(15분)
여우마을 탈출과 함께 2차전직
9. 라라(3분?)
퀘스트 [라라] 내가 도와줄까? 및 [라라] 가까워진 산 꼬마들 로 1차 전직을 완료 후, 머리 위 전구 퀘스트 [헬리시움] 판테온으로 또는 길라잡이로 나린 밖으로 이동하고, 머리 위 전구를 통해 2차 전직
꼭 시작맵에서 1차 전직을 하고 이동하자.
실수로 1차 전직 전에 나린 밖으로 이동하였을 경우에는 아래 표시된 위치로 돌아가서 1차 전직을 완료한다.
10. 제로(약 5분?)
아래 필드에 도달 할 때 까지 튜토리얼 진행, 궁성비 사용 시 바로 유니온 멤버에 등록된다.
11. 루미너스
스토리 진행 중 엘리니아 사냥터 맵 진출 시점에서 전구 아이콘을 통해 2차 전직
99. 번외 - 캐릭터 슬롯 채우기 추천 직업 : 레지스탕스
생성하자마자 아무런 컷씬 없이 메뉴 조작이 가능하다
99. 번외 - 유니온 레벨 채우기 추천 직업 : 모험가, 라라
비교적 컷씬이 짧은 직업. 필자가 아직 플레이하지 않은 직업도 있어 최선이 아닐 수도 있음.
".env"파일을 ignore 되기 전에 미리 커밋 해 두는 방식도 생각할 수 있지만, 프로젝트의 진행에 따라 필요한 내용이 많아질 수 있어 아래와 같은 방식이 좋을 듯 하다.
WEB_SOCKET_URL=
CHANNEL_ID=
PAGE_IDX=
2. .gitignore에 내용 추가.
/Assets/.env
3. Unity에서 .env 파일 파싱 클래스 작성
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public static class EnvLoader
{
private static Dictionary<string, string> envValues = new Dictionary<string, string>();
public static void LoadEnv(string path)
{
envValues.Clear();
if (!File.Exists(path))
{
Debug.LogWarning($".env 파일이 존재하지 않습니다: {path}");
return;
}
var lines = File.ReadAllLines(path);
foreach (var line in lines)
{
if (string.IsNullOrWhiteSpace(line) || line.StartsWith("#")) continue;
var parts = line.Split('=');
if (parts.Length != 2) continue;
var key = parts[0].Trim();
var value = parts[1].Trim();
envValues[key] = value;
}
Debug.Log(".env 파일 로드 완료");
}
public static string Get(string key, string defaultValue = "")
{
return envValues.TryGetValue(key, out var value) ? value : defaultValue;
}
}
2. 이미지(기타 미디어에도 확장 예정)를 우클릭하면, '이미지를 특정 폴더에 저장' 메뉴가 뜨며, 프리셋으로 지정해놓았던 이름이 있어 해당 위치에 저장하게 된다.
개발 실패를 야기한 문제점
**크롬 정책 상 절대경로 참조를 통한 저장이 불가능하다.**
절대경로 저장을 위해서는, 저장 시점에 직접 폴더를 지정하거나 Native Messaging 외부 프로그램을 사용자가 함께 설치해야한다. - 직접 폴더지정의 경우는 애초에 설정한 프리셋이 무용지물이 되며 기존 기능인 '이미지를 다른 이름으로 저장...' 과 차이점이 없다. - Native Messaging 의 경우는 외부 프로그램의 힘을 빌려 연동하는 방식인데, 사용자가 직접 번거롭게 추가 세팅을 해야하는 게 제일 문제이다.
경로를 하드코딩하며 직접 실행 해 보았지만, 역시 기본 다운로드 폴더의 밖을 참조하려고 하면 오류가 발생한다.
즉 알려진 바로는 크롬의 기본 저장위치로부터의 상대경로(저장위치의 자식경로 한정)에만 저장이 가능하며, 이러한 제약사항때문에 확장프로그램의 효용성이 매우 떨어진다.
일단 GPT 자문을 통해, Unity 스타일과 C# 스타일에도 살짝 차이가 있다고 한다. 일단 차이를 확인 해 보면,
두 스타일이 크게 다르진 않은데, - private 멤버변수에 'm_'을 붙이느냐(Unity) 아니면 '_'을 붙이거나 아얘 생략하거나(C#) 할 수 있고 - C# 스타일에서는 public 멤버변수는 프로퍼티 사용을 하는 게 기본 스타일이라고 적혀있는데, 더 찾아보지는 않았다. 그리고 C#은 PascalCase를 사용하는 정도.
종종 변수명으로 private const string SERVER_ENDPOINT = "https://api.example.com"; 이렇게 ALL_CAPS의 경우도 보였는데, 이는 C++에서 주로 사용하는 스타일이고 C#에서는 ServerEndpoint 와 같이 PascalCase를 사용하는 게 권장된다고 한다. 또한 static readonly 변수의 경우에 특히 자주 보이는데 이 역시 PascalCase가 일반적으로 사용된다는 듯. 유니티와는 별개로 환경변수 파일에서는 ALL_CAPS 명명이 일반적이었던 것으로 기억한다.
게임개발 사이드라고 하더라도 유지보수에는 C# 스타일이 낫다고 하고, 개인적으로 m_ 명명법이 낯설어서 C# 스타일을 채택해야겠다.