2018년 10월 3일 수요일

C#에서 데이터 베이스에 연결하고, 쿼리를 실행하는 방법 (Mssql, .net)

개념은 잘 알고 있어도 막상 필요할때 코드를 작성할려면 매서드와 순서가 잘 기억나지 않는 애들이죠 ^^

저도 기억이 나질 않을때를 대비할겸 이번엔 C#에서 디비 연동과 쿼리 실행 부분에 대해서 알아보겠습니다.

(DB는 MSSQL을 기준으로 작성합니다만 윈도우 인증 부분을 제외하면 똑같으니 상관 없겠죠)

1. DB 연동
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System.Data.SqlClient;
//DB connection
SqlConnection sqlConnection = null;
//IP
string strDBIP = "127.0.0.1";
//ID
string strDBID = "user";
//PW
string strDBPW = "12345";
//DB
string strDBName = "dbName";
//DB 인스턴스 생성
public SqlConnection connSql()
{
   sqlConnection = new SqlConnection("server =" + strDBIP + "; uid =" + strDBID + "; pwd =" + strDBPW + "; database =" + strDBName);
   
   //윈도우 인증 계정일 경우엔
   sqlConnection = new SqlConnection("Server= localhost; Database= dbName Integrated Security = True;");
   
   //DB 오픈
   if (sqlConnection != null && sqlConnection.State == ConnectionState.Closed)
   {
       sqlConnection.Open();
   }
       return sqlConnection;
   }
}
//DB 연동
sqlConnection = connSql();

공통 파일에 위와 같은 매서드를 만들어 두고 35#와 같이 사용하여 디비와 연결할때 사용합니다.


2. 파라미터가 없는 일반 조회 쿼리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//조회 결과 데이터셋
DataSet Lds = new DataSet();
//쿼리
string srQuery = "SELECT * FROM TABLE;";
//DB 연결
SqlConnection sqlConnection = connSql();
//조회 요청
try
{
   SqlConnection sqlConnection = connSql();
   SqlDataAdapter Ldap = new SqlDataAdapter(srQuery, sqlConnection);
   //조회결과 저장
   Ldap.Fill(Lds);
}
catch (Exception exe)
{
   Console.WriteLine("조회 도중 에러 발생 : " + exe.Message);
}

1번의 방법으로 DB 인스턴스를 생성한 다음 15#의 SqlDataAdapter를 통해 쿼리를 실행한 다음 실행 결과를 18#에서 데이터셋에 담습니다.

조회 결과를 사용할땐
1
Lds.Tables[0].Rows[i][j].ToString().Trim();

요렇게 꺼내어 입맛에 맞는 형으로 변환시켜 사용합니다.

위에서 i부분은 조회 결과 열의 해당하고

j는 행에 해당합니다.

만약에 조회 결과가 2X2 형식인



이와 같다면 1행의 1열 데이터인 1을 사용할려면


1
Lds.Tables[0].Rows[0][0].ToString().Trim();

이렇게 0,0을 넣으시면 되고

2행의 2열 데이터인 4을 사용할려면


1
Lds.Tables[0].Rows[1][1].ToString().Trim();

1,1을 넣으시면 됩니다.



2. 실행 결과가 성공, 실패로 돌아오게 되는 추가, 삭제 쿼리 실행하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//쿼리 파라미터가 2개 들어가는 INSERT 쿼리
string srQuery = "INSERT INTO TABLE (COLSUMN1 ,COLUMN2) VALUES (@p1 ,@p2);";
//DB 연결
SqlConnection sqlConnection = connSql();
//저장 요청
try
{
   SqlConnection sqlConnection = connSql();
   SqlCommand commS = new SqlCommand(srQuery, sqlConnection);
   commS.Parameters.AddWithValue("@p1", "변수1");
   commS.Parameters.AddWithValue("@p2", "변수2");
                
   //쿼리 실행
   commS.ExecuteNonQuery();
}
catch (Exception exe)
{
   Console.WriteLine("저장 중 에러 발생 : " + exe.Message);
}

이번엔 값을 반환하는 SqlDataAdapter 대신 결과를 반환하는 SqlCommand을 사용하여 파라미터를 추가한 다음 쿼리를 실행합니다.

쿼리 실행 결과 자체로도 성공, 실패 여부를 알 수 있지만 위와 같이 그냥 TRY/CATCH문으로 해결하였습니다.

삭제도 쿼리만 다를 뿐 방식은 동일하며 조회도 조회 결과가 필요 없을 경우 위와 같은 방법으로 사용해도 상관 없습니다.



3. 파라미터가 있는 조회 쿼리

이번엔 쿼리 실행 결과 값도 필요하면서 파라미터도 넣어야 하는 상황인데요.

뭔가 어려울꺼 같지만 실제로는 1번에서 사용한 SqlDataAdapter 클래스에 파라미터를 넣는 매서드가 있어서 매우 간단히 해결할 수 있습니다 ^^

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//조회 결과 데이터셋
DataSet Lds = new DataSet();
//쿼리 파라미터가 2개 들어가는 SELECT 쿼리
string srQuery = "SELECT * FROM TABLE WHERE COLUMN1 = @P1 AND COLUMN2 = @P2;";
//DB 연결
SqlConnection sqlConnection = connSql();
//조회 요청
try
{
   SqlConnection sqlConnection = connSql();
   SqlDataAdapter Ldap = new SqlDataAdapter(srQuery, sqlConnection);
   Ldap.SelectCommand.Parameters.Add(new SqlParameter("@P1", "변수1"));
   Ldap.SelectCommand.Parameters.Add(new SqlParameter("@P2", "변수2"));
                
   //조회결과 저장
   Ldap.Fill(Lds);
}
catch (Exception exe)
{
   Console.WriteLine("조회 중 에러 발생 : " + exe.Message);
}

1번의 방식에서 쿼리를 실행하기 전에 SelectCommand.Parameters.Add() 매서드를 통해 원하는 파라미터를 순서대로 지정해서 넣어주시면 됩니다.

잘못된 내용이나 궁금한점은 언제든 남겨주세요 ㅎㅎ
Share:

2018년 9월 29일 토요일

변수명을 동적으로 선언해 사용하는 방법! (C#)

코드를 짜다 보면 반복문을 이용이거나 기타 여러가지의 이유로 인해 변수의 이름을 동적으로 할당해야 하는 경우가 발생합니다.

1
2
3
4
5
6
7
8
9
10
11
12
//반복문에 의해 반복하는 만큼 변수를 선언해야 하는 경우
for(int i=0; i<100; i++)
{
    //변수명을 이렇게 동적으로 지정하여
    string strName + i = "";
}
 
//이런 이름을 가진 변수들을 선언하고 싶은 경우
strName0 = "";
strName1 = "";
strName2 = "";
strName3 = "";
자바스크립트의 경우에는 위와 같은 방법으로 바로 변수를 선언하여 활용할 수 있지만 자바나 C#의 경우엔 리플렉션이나 map을 이용한 해결 방법이 있습니다.

어느 방법을 사용해도 상관없으나 그냥 변수의 이름 정도를 컨트롤 하는 일에 클래스 객체를 얻어오는 리플렉션 보다는 map이 훨씬 간단하고 컨트롤도 쉬우니 map을 활용한 방법에 대해 알아보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
//map 선언
Dictionary<stringstring> mapName = new Dictionary<stringstring>
 
//반복분
for(int i=0; i<100; i++)
{
    //원하는 변수명으로 해당 변수를 선언한 다음 map에다 추가
    mapName.Add(String.Format("strName{0}",i.ToString(), string));
    
    //변수 사용할 땐 이름으로 바로 호출
    napName["strName" + i]
}

#2 : 원하는 형태를 담을 map을 선언합니다.
선언할 때 첫번때 string은 변수명을 두번째 string은 해당 변수의 형으로 지정하였습니다.

#8 : 선언한 map에다가 반복문을 활용하여 원하는 이름으로 변수들을 선언한 뒤 넣는 과정입니다.

위와 같이 할 경우엔 변수들 이름은 strName0 ,strName1 ,strName2 ,strName3 이런식으로 되었겠네요.

#11 : 담아두었던 변수들을 사용할 때 호출 방법 입니다.

보시다시피 변수 이름을 문자열 형태로 작성할 수 있기 때문에 자유롭게 호출이 가능합니다.

^^

짧은 글이지만 해당 정보를 찾으시는 분들께 도움이 되었으면 좋겠습니다 

혹시나 다른 궁금한 사항이나 잘못된 내용은 언제든 남겨주시면 바로 답변하겠습니다

감사합니다!




Share:

2018년 7월 19일 목요일

[87] 악튜러스 플레이 후기 3편 (스토리 설명, 캐릭터 평가)

(악튜러스 OST - 사랑스런 숲)


제국과 왕국, 공화국에서 나름의 사연을 가지고 마르튀니로 오게된 이들이 만나


악튜러스 1장 이야기가 시작됩니다.

이 4명의 만남은 이때 단순한 헤프닝으로 끝나지 않고 엘류어드가


공화국에는 보기 어려운 법인류인 시즈의 재능과


제국의 황제를 암살하는게 목적인 텐지를 파악한 다음


자신의 목적인 달란트 수집을 위해 텐지에겐 다인 암살에 대한 공화국의 원조를, 마리아와 시즈에겐 막대한 금전을 (4인 가정의 1년 수입의 약 25배) 약속하며


제국력 738년 9월 16일 달란트 수집 원정대를 결성합니다!

이들은 제국에서 수배중인 텐지를 고려하여 우선 공화국부터 달란트 수색을 시작하는데


정보를 수집하며 메르헴 근방에서 숙박도 하고


정부 예산도 야금야금 타가는 동안


육노인은 자신들에게 불손한 생각을 품은 현 공화국 수상을 갈아치우기로 결정하고, 차기 수상감으론 하인베르그 가문 사람들 중 가장 조종하기 수월한 방화범 레이그란츠를 지목합니다.

이때쯤 방화범은


어렸을적 부터 뭐든 엄청 잘하고 잘생긴 자신의 형, 엘류어드에게 깊은 열등감을 느꼈고, 자신을 배려해 주지 않는 자신의 가문인 하인베르그를 멸문 시킬 날을 기다리고 있던 차에 때마침 육노인의 사악한 지원을 시작되자


기쁜 마음에 가장 먼저 자신의 아버지를 감금하고 집안의 반대 새력들을 제거하던 중


때마침 예산을 타먹기 위해 잠시 돔에 들린 엘류어드와 마주치게 됩니다.


이때 엘류어드는 뭔가 달라진 동생에게 수상함을 느끼기만


달란트 수집에 마음이 급해 다음으로 미루고, 다시 집을 나서게 되죠.


그리고 도착한 곳은 공화국 서부의 첫 관문이자 그 옛날 공화국 초대 대통령인 아케나톤의 영지였던 베르가모입니다.

700년전만 하더라도 이곳은 당시 공화국 실세였던 아케나톤의 영향력으로 돔과 비교해도 부럽지 않는 번영을 누렸던 도시였으나


1편에서 언급했던 아케나톤과 팔 황제의 밀약 사건으로 벌어진 내전으로 인해


패배한 아케나톤은 한때 동료였던 육노인에 의해 발켄스발드 성에서 비참히 굶어 죽었고,


그의 영지인 베르가모를 포함한 공화국 서부 지방은 이후 700년간 지독한 차별 정책을 받아 이때쯤엔


공화국 재야의 거물 쟈크 드 모레이가 이끄는 급진 개혁파들이 등장해 저항 운동이 벌어지는 상황이 됩니다.

이 서부 저항 세력의 대표격인 쟈크 드 모레이는


오래전 제국과의 40년 전쟁에서 가디언을 개발했던 상페 드 모레이의 먼 후손이며, 선조때 하사받은 백작 칭호와 고향인 디아디라의 영향력을 발판으로 베르가모와 연합하여 육노인들도 뿌리 뽑지 못한 강력한 저항 세력을 이루게 되었습니다.

그러던 중 베르가모 출신의 한 정치인이


육노인 세력에게 암살 당하는 사건이 발생했고


암살당한 정치인의 동생이자 공화국에선 희귀한 법인류였던 마티아스 비얀슨은 형의 복수를 위해 운좋게 발견한 달란트를 가지고


마을에서 납치한 처녀들의 피와 발켄스발드 성에서 발굴한 아케나톤의 유골로 아케나톤을 직접 소환하는 계획을 실행합니다.

이런 어수선한 때에 베르가모에 도착한 엘류어드들은


시즈의 마법으로 인해 납치범으로 오해받는 헤프닝이 발생하고


공화국에 애정이 강한 엘류어드는 비록 자신을 싫어하는 지방이지만 공화국의 치안을 위해 사건에 개입하고


발켄스발드 성에 들어가게 됩니다.


사건 해결을 위해 성에 처음 들어왔을땐 그저 살아 남은 처녀들을 구하는데 집중하다가


우연히 만난 비얀슨이 달란트를 가지고 있는걸 발견하곤 그를 추격하다


비얀슨이 벌린 엄청난 일들을 파악하곤


예배당에서 아케나톤을 따라잡았으나


압도적인 역량 차이로 고전할때쯤


엠펜저가 도우미로 시즈에게 몰래 딸려 보낸 셀린이 등장하여


언데드의 약점을 이용한 공격을 통해 아케나톤을 물리칩니다.


이로써 첫번째 달란트를 획득함과 동시에


시즈와 셀린의 썸도 시작되죠 ^ㅡㅡ^


셀린은 이후로도 다음 달란트가 있는 왕국으로 일행을 인도한 다음


데이트도 하고


히로인 기분도 낸 다음


고대 마병기 속에 있는


두번째 달란트도 획득합니다!


그리고 이때 왕국을 돌아다니며 우연히 들린 사데에서


여기도 베르가모와 같은 처녀 납치 사건이 계속 발생하는걸 알게되곤


마침 뒤를 따라오던 아르세스 자매가 엘류어드의 달란트를 훔친 다음 납치를 당하는 사건이 발생하여


직접 도둑들 본거지에 처들어가 응징하던 과정에서


마구스가 되기 위해 피를 모으고 있던 엘리자베스와 잠시 조우하는 일이 있었습니다.


물론 얼굴만 보고 바로 도망가버린 짧은 만남이었지만요.


그리고 이녀석은 이제 단순히 마기 시술을 위한 희생자를 만드는 수준을 넘어 일부러 처녀만 죽이는 등 2천년 전보다 훨씬 악질이 되어 있었습니다.

그렇게 왕국에서의 모험을 마치고


달란트 2개와 함께 기분좋게 돔으로 돌아오니


도시에 왠 도적단이 날뛰고 있어서


가볍게 제압하고


도적 두목을 추격하여


세번째 달란트 행방을 확보하게 됩니다.


이 세번째 달란트 소유주는 엘류어드에게 넘길 의사가 없자


왕국의 부녀자 납치 사건때 면을 익힌 아르세스 자매에게 의뢰하여


담을 넘고 ^^


폭주하는 달란트를 제압!


간단히 달란트 3개를 확보하게 됩니다.

엘류어드들이 마르튀니에서 파티를 결성한지 12일 만에 공화국과 왕국에 있던 달란트 3개를 모으는 성과를 냈을 무렵


시즈와 마리아를 두고 어디론가로 떠났던 엠펜저 역시 같은 기간동안 아마도 제국쪽에 있었을 달란트 3개를 모은 다음 시즈들을 유인하기 위해 팔 황제의 무덤인 느부갓네살에 달란트가 있다는 소문을 내고


마지막 7번째 달란트인 셀린도 그곳으로 호출 합니다.


곧 엠펜저의 소문을 들은 엘류어드들은


달란트를 회수할려는 제국군을 돌파하여


느부갓네살로 진입한 다음


팔 황제의 고대 장치들을 모두 무찌르고


무덤 중심부에서 기다리던 엠펜저와 다시 만나게 됩니다.

비록 엘류어드들이 그동안 승승장구 했던 고수들이긴 하지만


엠펜저과 비교할 역량은 되지 않기에 순식간에 그동안 모았던 달란트를 빼았기고


시즈는 조종을 당해


셀린의 달란트 적출 수술을 집도하게 됩니다.

셀린도 살리면서 달란트도 모두 모은 엠펜저는 증거 인멸을 위해 느부갓네살을 붕괴시킨 다음 엘리자베스에게 달란트를 넘겼고


뒤늦게 깨어난 엘류어드들은 붕괴되는 느부갓네살을 탈출해보려 했지만


가장 먼저 셀린과 시즈가 돌에 깔려버리고


그 다음으론 엘류어드와 마리아


마지막 입구에서 텐지와 피치 캐럿이 기절함으로 달란트 원정대는 여기서 전멸하게 됩니다.

한편 엘리자베스에게 7개 달란트 모두를 수집했다는 소식을 들은 육노인은 레이그란츠를 시켜


쿠데타를 일으킨 뒤 돔 방위군을 수상관저와 전쟁 기념관 교전에서 승리하여 궤멸시키고, 정권을 확보한 뒤 사로잡은 수상과 육노인에게 방해가 될 정치인들, 그리고 미리 감금 시켜 두었던 아버지와 저택에 관련한 모든 사람들을


잔인하게 처형시키고


엘리자베스는 달란트의 힘을 이용해 돔을 폭격하며 육노인의 쿠데타를 도와줍니다.

이후 레이그란츠는 엘리자베스의 폭격으로 도시의 기능을 완전히 상실한 돔을 버리고 임시 수도를 북쪽의 엘하이브 성으로 정하여 그곳에 수뇌부를 꾸릴때쯤


쿠데타에서 간신히 살아남은 사람들은 남은 재야 세력중 가장 영향력 있는 디아디라의 쟈크 드 모레이 밑으로 모이게 되었고 이때부터 쟈크는 프리셀로나란 이름의 새로운 괴뢰 정부를 수립하고 레이그란츠의 정부군과 내전에 돌입합니다.


한편, 느부갓네살에 매몰되었던 달란트 원정팀중


엘류어드를 꺼낼려다 함께 돌에 깔려버렸던 마리아는


자신의 소꿉 친구인 시즈가 비참한 죽음을 맞이하게 된 걸 자신의 탓으로 여기며 그동안의 자신의 성격과 가치관에 많은 반성을 하며


심각한 부상중임에도 엘류어드를 부축해 가며 느부갓네살을 빠져나와 내전중인 디아디라까지 끌고오는 기적을 발휘하여 생존합니다.


그리고 출구까지 나왔다가 골램에게 휩쓸려 기절해버린 이들 중 피치는


모든 파티원 중에서 느부갓네살에서 입은 부상이 가장 가벼웠으나 캐럿을 찾는 도중 공화국 내전에 휩쓸려


정부군 비밀 기지로 끌려가 인체 실험을 당하는 처지가 되어버립니다.

그리고 피치가 그토록 찾던 캐럿은


텐지를 도와줄려다 큰 부상을 당해 불구가 되었고, 텐지가 캐럿을 게르나 고원으로 데려와 간호하고 있었죠.


마지막으로 느부갓네살의 가장 중심부에서 가장 큰 부상을 입고 매몰되었던 시즈와 셀린도 기적적으로 생존은 했지만


셀린은 도굴꾼이 발굴해


에페소의 아이돌이 되어버렸고


시즈는 너무 큰 정신적 충격으로 인해 신을 강림 시킬 수 있는 육체와 신의 대리인인 미트라의 인격이 분리가 되어


육체는 추기경을 통해 엘리자베스 손에 들어가버렸고


미트라의 인격은 거대 인어의 캐어로


환상 속을 해매다


간신히 다시 세상으로 복귀하여


느부갓네살 귀신으로 방황하다


센크라드와 그리트교의 교주인 아이에 의하여 사람도 아니고 귀신도 아닌 형태로 계약을 맺고 간신히 인간계에 정착을 합니다.

한땐 인류의 구원자이자 리더였던 그리트교도 초대 교주가 죽고난 뒤 역사 뒷편으로 물러나 은밀하게 2천년이 지난 이 시대까지 전승을 계승해 오는데 성공하였지만


엘리자베스가 본격적으로 등장한 뒤론 그의 심복인 추기경에 의해 교주가 공개 처형 당해 버리고, 왕국에서 본격적인 그리트교 박해 정책들이 시행되어 가장 어려운 시기를 보내고 있었습니다.


갑작스레 주교가 처형된 뒤 그의 딸이자 후계자였던 아이는 모든 아픔을 혼자서 이겨낸 다음 수련을 통해 만능캐가 되었지만 그러는 동안 엘리자베스는 그리트교의 장로들을 포섭하는데 성공하여


가장 영향력있던 베어먼을 임시 총선을 통해 새 교주로 만들어 버림으로


자신의 계획에 가장 위협적이던 그리트교도 장악에 성공합니다.


하지만 아이는 이런 어려운 상황 속에서도 자신의 본분을 잊지 않고 센크라드와 남은 신도들로 미트라인 시즈의 정신을 확보한 다음


간절히 간호하여


시즈를 안정화 시키는데 성공합니다.


거기다 수명이 다한 센크라드의 힘까지 모두 시즈에게 전수한 다음 엘리자베스를 향한 대 반격을 시작하게 됩니다 ^^


시즈가 느부갓네살에서 한창 귀신 놀이를 할때쯤

디아디라에선 마리아의 헌신으로 목숨을 부지한 엘류어드가


자신이 가장 사랑하던 모든것을 한 번에 잃은 상실감에 극도로 분노하여


쟈크의 프리셀로나군 용병으로 내전에 참전, 마리아와 크로이를 데리고


육노인까지 참천하여 압도적으로 불리한 전쟁을 뛰어난 전략과 전투력으로 전황을 뒤집기 시작합니다.


거기다 열세였던 전쟁 병기에서도 큰 진전을 보이자

과감한 진격전을 감행해


첫날에는 (제국력 740년 6월11일) 돔에서 아론 에밀을


둘째날엔 (6월12일) 세테판 연구소를


(이때 실험실에 있던 피치도 구출합니다)


마지막 운명의 셋째날엔 (6월13일) 에스테뉴 툐달 공업단지에서 쿠스코 에밀을 격파하며 삼일동안 3개의 거점을 점령하는 놀라운 성과를 거두지만


곧바로 엘류어드의 자만심을 이용한 정부군의 유인 작전에 걸려들어


엘류어드의 부대는 가디언에게 전멸 당하고


마리아는 포로로 잡히는 결정적인 실수를 하고 맙니다.


그리고 이 뼈아픈 실책을 범하던날 아침!

엘류어드는 자신의 부대를 이끌고 에스테뉴로 출진할때쯤


트랑퀼리에서는 그동안 시즈를 캐어하던 센크라드의 수명이 다하여 시즈가 그의 유지를 이어 받아 아이와 함께 배교자 베이먼을 처단하기 위한 여정을 시작하여

엘류어드는 3일이 걸렸던 2장 분량의 일들을 이 먼치킨 커플은


아침 06:00 트랑퀼리 옆집에 사는 늑대인간과 아침 체조를 하고


7시쯤 마르튀니의 공화국 정부군을 지나


그리트교의 마르튀니 지부에 방문하여


깽판을 놓고


8시쯤 바아라까지 날라가서


추기경을 만나


개인 면담을 한 다음


추기경이 작별 선물로 준 통행권을 받아


로저스 아저씨 심부름도 한 건 하고 ^ㅡ^


9시쯤 사데에 도착!

여기서


비밀 통로를 통해


그리트교 사데 지부에 도착!


가볍게 참교육을 하고


베어먼의 행방을 알아낸 다음


베어먼을 잡으러 10시쯤 메르헴에 도착!

원래는 바로 앙스베르스 방향으로 내려갈려고 했으나


우연히 마리아가 포로로 끌려가는걸 목격한 다음


시즈의 간절한 요청으로 아이와 함께 마리아를 따라 엘하이브로 갑니다.

그리고 이때쯤 엘류어드도


간신히 도주에 성공하여 마리아가 포로로 잡혀간걸 확인하곤


점심때쯤 엘하이브의 언덕에서 엘류어드팀과 시즈팀이 조우하게 되죠.


이들은 마리아를 구하기 위해선 엘하이브의 결계를 깨는 그리트교의 성물이 필요함을 알게되곤 공화국 남부로 도망간 베어먼을 추격하기 시작하여


오후 1시쯤 베어먼의 친위대를 격파하고


2시쯤엔 앙스베르스 입구에서 베어먼을 따라잡은 다음


살기 위해 발악하는 베어먼와 잠깐의 대화를 끝으로


반나절만에 그리트교의 반역자들을 모두 처리하는 위엄을 보여줍니다.

그리고 베어먼이 챙겼던 성물들을 모두 회수한 다음 엘하이브로 돌아가던 중


오후 3시경 엘류어드를 따라온 공화국의 가디언을 맞이하여


참교육!


다시 재정비를 하곤


두번째 가디언까지 격파한 다음


4시. 엘하이브로 다시 돌아와


그리트교 성물을 이용한 주술로


엘하이브 침입에 성공!


5시쯤 레이그란츠를 만나


끝장내어 공화국 내전도 종료시킨 다음


마리아를 치료하는데 1시간쯤 걸렸겠죠?


마지막으로 저녁 먹을 때 쯤엔 수십 년간 계획한 일이 몇 시간 만에 박살 나버려 열받은 육노인을 맞이하여


1차전은 패배하나


메인 홀에서 맞이한 2차전은


괴노인의 결정적인 배신으로


주술이 깨진 육노인과의 혈전 끝에


격퇴에 성공합니다!


덕분에 엘리자베스는 가장 껄끄러운 적들을 아주 손 쉽게 제거하는데 성공하였고,


쟈크는 하루만에 공화국 내전의 승자가 되어버립니다 ㅎㅎ


이렇게 다사다난 했던 하루를 디아디아에서 마무리한 시즈들은


2장을 마무리 하고


마리아의 상처를 치료할겸 디아디라에서 일주일간 휴식을 취합니다.

잠시 평화로운 시간이 지난 후


시작된 3장은


제국력 740년 6월 20일 시즈들의 회의에서 시작됩니다.

시즈들은 아이의 교육을 통해 태초부터 있었던 거대 인어와 달팽이와의 대립 관계를 파악하게 되었고, 달팽이의 강림을 막기 위해 우선 눈 앞에 적인 제국의 엠펜저를 저지 하기로 결정하고


제국군을 상대하기 위해 탐욕이 큰 쟈크를 자극해 프리셀로나 군을 전쟁에 참전 시킨 다음


시즈들은 프리셀로나의 선봉으로 제국을 향해 진격 합니다.


시즈들이 국경선인 마르튀니를 지나


게르나 고원쯤에 도달했을때쯤


공화국이 제국을 침공하여 나라 분위기가 어수선함을 이용해 황제를 암살해보려다 근처도 가기전에 오성왕에게 들켜 궁지에 몰린 텐지를 발견하곤


도발을 하고


가볍게 물리친 다음


텐지와 함께있던 캐럿을


게르나 고원에서 확인합니다.

이후 텐지도 파티에 합류하여


제국의 수도로 진격한 다음


황제와 오성왕을


몰아내는데 성공하고


텐지가 폐위되면서 함께 몰락했던 서림파가 다시 세력을 회복하여


프리셀로나와 연합까지 맺는등 제국에서 엘리자베스의 세력을 몰아내는덴 성공하였지만

정작 엠펜저는 모습은 보이질 않아


빌라델비아로 도주한 황제와 오성왕을 추격하기 위해


제국군의 저항을 뚫고 콘스텔라리움을 정복한 다음


후문으로 추격을 계속할려던 순간


에스테뉴 툐달 점령전 이후로 모습을 감추었던 크로이가 등장하여


느부갓네살에서 에페소로 이송된 셀린의 위치를 알려줍니다.


덕분에 시즈들은 셀린의 정신 봉인을 깨고


셀린도 파티에 참여시키게 되죠.


셀린을 구출하기 위해 일행들이 잠시 추격을 멈춘 동안


오성왕중 황제를 가장 가까이서 호위하던 뇌성귀가 황제의 신변을 보호하기 위해 위장으로 투항하였고


시즈들은 이 뇌성귀를 통해 오성왕의 비밀 기지를 기습할려고 했지만


뇌성귀의 위장 투항을 오성왕에서도 오해하는 바람에


뇌성귀는 내분으로 사망하고


남은 오성왕들도 시즈들에게 각개 격파를 당하며



제국에서 엘리자베스의 세력은 몰락하게 됩니다.

시즈들이 제국을 침공하여 오성왕과 다인을 상대하며 시간을 허비하는 동안 엘리자베스와 괴노인은 달팽이 소환 준비를 완료하였고

이제 필요가 없어진 엠펜저는


시즈들에게 보내



처리가 되어집니다.

시즈들에게 치명상을 입은 엠펜저는 비록 수명이 끝나가지만 덕분에 엘리자베스와의 계약이 풀려 마지막 힘을 내


셀린에게 모든 기억 봉인들을 풀어주고


엘리자베스의 정체와


이들의 목적들을 알려준 다음


괴노인에게 최후를 맞이합니다.

그리고 이어 괴노인은


신을 강림시킬 장소로 워프하여


달팽이 소환 의식을


보조하는 사명을 마친 뒤 사망하게 되죠.

엘리자베스의 부하 1,2호의 눈부신 활약으로


바렌시아 대륙은 2천년만에 다시 달팽이와 사도의 강림을 겪게 되었고


시즈들은 또다시 인류를 몰살시키는 사도들을 대항하기 위해


셀린의 기억에 있던 고대인의 방주를


콘스텔라리움의 지하 통로를 이용해


워프하여


도착한 다음


엔진실도 살펴보고


고대인이 남긴 기록들도 찾아보지만 아무런 소득이 없는 채


엘리자베스와 조우하여


그가 다루던 사도에 의해


끔살당할 처지에 놓이게 되지만


결정적인 순간 모든걸 지켜보던 거대 인어의 도움으로


시즈는 진정한 신의 대리인이 되어 사도는 물론, 달팽이를 응징할 권리와 힘을 가지게 됩니다.


일이 한순간에 꼬인걸 느낀 엘리자베스는 도주를 해보지만


시즈도 가볍게 에덴으로 추격하여


추격을 방해하는 사도들과


추기경를 때려잡고


마지막 발악을 해보는 엘리자베스도


떡실신...


마지막 수단인


아흐리만 소환마저도


결전끝에


떡실신 당하며 2천년간 인류를 괴롭힌 악령과 작별을 하게 됩니다.


그리고 그동안 달팽이와 사도들은 인류가 지은 죄를 벌하러 온 존재인줄만 알았었는데


사실 달팽이는 처음부터 신이 아닌 인류가 죄를 지으며 양심을 저버린 죄책감들이 모여 힘을 가진 존재였으며


인간을 사랑했던 신, 거대 인어는 그런 인류의 죄책감과 이때까지 대신 싸워줬다는 사실이 밝혀지면서


엘리자베스도 자신의 큰 오판을 깨달으며 퇴장합니다.

이렇게 선조들의 사명을 멋지게 수행해내며 인류를 구원한 시즈들은




새로운 희망을 만들어 가며 여생을 보내게 되고


바렌시아 대륙도 재건을 시작하게 되지만


일행중 유일한 마구스였던 셀린만은 불로불사로 인한 외로움과 두려움에 모든 희망을 버리고 스스로를 봉인하며


악튜러스 이야기는 여기서 끝을 맺습니다.


스토리 설명은 여기서 마칠께요.

긴 글 읽어주셔서 감사합니다 ㅎㅎ

악튜러스 플레이 88편 보러가기
악튜러스 리뷰 전체 리스트 보기
Share: