이 강의는 MPPC (미소녀 & PocketPC)Pure Ani에게 저작권이 있습니다.

이번에는 화면에 그림을 출력해보겠습니다.

여기서는 준비물이 하나 필요합니다.

그것은 800x600이나 640x480의 이미지 한장과 캐릭터 이미지가 필요합니다.

최근에는 게임 어카이브 분해기가 여러종류 있으니 게임 하나를 분해하셔서 준비해주세요.

(게임 분해에는 대표적인게 일본의 ExtractData와 중국의 crass가 있습니다.)

저는 Navel사의 SHUFFLE!을 사용하겠습니다.

※ SHUFFLE!의 경우 위에서 말한 2개의 프로그램으로 압축이 풀리지 않습니다.
한번 온스크립터에서 돌려보고 싶은 게임들중에서 위의 2개의 프로그램으로 풀리는 게임을 준비해주세요.

1. bg

일단은 배경이미지를 출력해보겠습니다.

0.txt의 내용을 아래와 같이 해주세요.

*define

game
*start

bg "이미지 파일 경로",1
wait 1000

이렇게 하면 아래와 같이 이미지가 화면에 출력된 후에 잠시후 강제 종료됩니다.

여기서는 화면이 약간 작습니다.

이유는 온스크립터가 기본 640 x 480의 해상도이기 때문인데요.

800 x 600 의 해상도를 준비하신분은 0.txt를 아래와 같이 수정하신후 다시 실행해보세요.

;mode800
*define

game
*start

bg "이미지 파일 경로",1(이펙트 넘버 : 1이 안될경우 숫자를 증가시켜보세요.)
wait 1000

그러면 화면이 800 x 600으로 커진것을 볼수 있습니다.


";mode 가로해상도"는 온스크립터의 해상도를 설정하는 명령어 입니다.

사용법은 ;mode가로사이즈 입니다.

현재 온스크립터에서 지원되는 해상도는 800 x 600, 640 x 480, 480 x 360, 384 x 288, 360 x 270, 320 x 240 입니다.

※ 온스크립터의 버전에따라, 혹은 온스크립터의 제작자의 설정에 따라 지원하는 해상도도 있고, 지원하지 않는 해상도가 있을수 있습니다.
이것은 준비한 온스크립터를 구한곳에서 확인해주세요.

2. print

이것은 화면에 출력 가능한 이미지를 출력하고, 필요없는 이미지는 화면에서 삭제하는 명령어입니다.

사용법은 print 0, print 1이 있습니다.

0의 경우는 화면에 출력하지 않고 메모리에만 쓸때 사용하며, 1의 경우는 화면에도 출력을 합니다.

이것의 테스트는 아래의 명령어들에서 print 를 사용했을대와 사용하지 않을때를 비교해보시면 됩니다.

사용 하지 않을경우는 캐릭터가 표시되지 않지만, print 1을 사용할경우 캐릭터가 표시됩니다.

3. ld

이번에는 캐릭터를 한번 출력해보겠습니다.

ld 라는 명령어의 사용법은 이렇습니다.

ld 이미지의 위치(왼쪽(l), 오른쪽(r), 중앙(c)), "이미지 경로", 1(이펙트 넘버)

SHUFFLE!의 첫번째 장면을 한번 출력해보겠습니다.

;mode800
*define

game
*start

bg "배경 이미지 경로",0
ld l,"왼쪽에 출력될 이미지 경로",1
ld r,"오른쪽에 출력될 이미지 경로",1
print 1
wait 1000

위와 같이 한후 실행을 하면 위의 이미지처럼 왼쪽과 오른쪽에 캐릭터가 출력이 된후 종료가 됩니다.

만일 ld c,"이미지경로",1 을 사용했다면 중앙에 캐릭터가 출력이 되어 있을겁니다.

※ 혹시 이미지가 아래와 같이 출력이 될경우나 이미지가 깨끗하게 출력되지 않을 경우 이미지 경로 앞에 :a; 를 추가로 작성해주세요.

아마 특별한 작업을 하시지 않으신 이상 위의 이미지 처럼 뜨시지는 않을겁니다.
(위의 이미지는 온스크립터식 알파채널이 적용된 경우입니다.)
이것 외에 이미지가 깨끗하게 적용되지 않으실 경우도 있습니다.
이 경우는 알파채널이 재대로 적용이 되지 않는 경우로 이럴때는 "png2Mjpg_slow.exe"로 작업을 해주시면 원본 이미지가 알파채널이 깨지지 않았다는 전제조건하에서 이미지가 깔끔하게 출력됩니다.

4. transmode

위의 ※에서 수정이 된 경우는 매번 :a;를 사용하기 번거롭다 하시는 분들은 transmode를 정의명령어를 사용하는 부분에 써주시면 됩니다.

그러면 평범하게 "파일경로"로만 작성하셔도 알파채널이 적용됩니다.

사용법은 *define 다음줄에 써주시면 됩니다.

transmode (leftup, copy, alpha) 기본의 경우 leftup입니다.

alpha의 경우는 알파채널을 기본으로 합니다.

copy는 사용을 본적이 없어서 정확히 무슨 효과인지는 모르겠습니다.

모든 이미지가 알파채널이 적용되어 있을경우 transmode alpha를 정의하시면 좋습니다.

혹은 몇가지의 이미지만 알파채널이 적용되어 있을 경우는 파일경로 앞에 :a;를 써주세요.

파일경로 앞에 :a;를 써주시면 알파채널이 적용됩니다.

5. tal

tal의 경우는 ld로 출력된 이미지의 투과율을 수정하는 명령어입니다.

tal 수정할 이미지의 위치, 투과율(0 ~ 255)

;mode800
*define

game
*start

bg "배경 이미지 경로",1
ld l,"왼쪽에 출력될 이미지 경로",1
ld r,"오른쪽에 출력될 이미지 경로",1
print 1
wait 1000
tal l,0
print 1
wait 1000

위와 같이 몇개 명령어를 추가하셔서 테스트를 해보시면 왼쪽의 이미지가 사라지는걸 보실수 있습니다.

6. lsp

lsp의 경우 ld와 비슷한 역활을 하는 명령어 입니다.

※ 정확히는 ld보다는 lsp가 더 광범히하게 사용되고 있습니다.
그 이유는 ld의 경우는 화면의 좌, 우, 중앙 설정만 가능하지만, lsp의 경우 제작자가 임의로 좌표설정이 가능하기 때문입니다.

사용법은 lsp 스프라이트번호, "이미지경로", 좌측 상단으로부터의 x축 좌표(가로), 좌측 상단으로 부터의 y축 좌표(세로), 투과율(생략가능 : 0(투명) ~ 255(디폴트))

ld가 아닌 lsp를 가지고 위의 이미지를 그대로 출력해보겠습니다.

저의 경우는 0.txt가 아래와 같습니다.

;mode800
*define

game
*start

bg "배경 이미지 경로",0
lsp 1,"왼쪽에 출력될 이미지 경로",x축 좌표,y축 좌표,0
lsp 100,"오른쪽에 출력될 이미지 경로",x축 좌표,y축 좌표,255
print 1
wait 1000

이렇게 수정을 한후 실행을 해 보겠습니다.

왼쪽 캐럭터(마왕)가 사라졌습니다만 그건 투과율을 0으로 설정했기 때문입니다.

투과율을 255로 써두거나 혹은 아예 작성을 하지 않으면 아래와 같이 출력이 됩니다.


이것과 셋트를 이루는 lsph 라는것도 있습니다만 이것은 화면에 출력을 하는게 아닌 화면에 출력하지 않는 상태로 메모리에 불러오는 개념인듯 합니다.

7. msp

이 명령어는 이미 화면에 출력된 이미지의 위치를 수정하는 개념입니다.

사용법은 msp 이동시킬 스프라이트번호, 좌측 상단에서의 x축 좌표, 좌측 상단에서의 y축 좌표, 투과율(생략가능)

한번 마왕을 가운데로 이동시켜보겠습니다.

lsp 다음줄에 msp명령어를 사용해주세요.

;mode800
*define

game
*start

bg "배경 이미지 경로",1
lsp 1,"왼쪽에 출력될 이미지 경로",x축 좌표,y축 좌표
lsp 100,"오른쪽에 출력될 이미지 경로",x축 좌표,y축 좌표
msp 1,120,0
print 1
wait 1000

왼쪽의 캐릭터(마왕)가 가운데로 이동합니다.

이것은 스프라이트의 번호를 유지하면서 출력할 이미지의 위치를 수정할때 사용하는 명령어입니다.

8. vsp

vsp의 명령어는 lsp를 사용한 이미지를 표시 혹은 비표시로 수정하는 명령어 입니다.

사용법은 vsp 스프라이트번호, 0~1(0 : 비표시, 1 : 표시)

lsp로 화면에 출력된 이미지는 vsp 스프라이트번호, 0으로 화면에서 지울 수 있으며, lsph로 메모리에 불러온 이미지는 vsp 스프라이트번호, 1로 표시가 가능합니다.

※ lsp로 이미지를 불러올때 투과율을 0으로 해서 이미지가 안보일때 vsp 스프라이트번호, 1로 화면에 출력하는건 불가능합니다.

;mode800
*define

game
*start

bg "배경 이미지 경로",1
lsp 1,"왼쪽에 출력될 이미지 경로",-5,0
lsph 100,"오른쪽에 출력될 이미지 경로",320,0
print 1
wait 1000
vsp 1, 0
vsp 100, 1
print 1
wait 1000

위와 같이 수정을 하신경우 맨처음에는 왼쪽 이미지가 먼저 출력된후 사라지면서 오른쪽 이미지가 출력됩니다.

9. repaint

이 명령어는 화면의 새로고침.

이전에 사용했던 reset과는 다릅니다.

reset의 경우는 새로시작이지만, 이것은 새로고침입니다.

위에서 했던 과정을 이 명령어로 응용해보겠습니다.

;mode800
*define

game
*start

bg "배경 이미지 경로",1
lsp 1,"왼쪽에 출력될 이미지 경로",x축 좌표,y축 좌표
lsp 100,"오른쪽에 출력될 이미지 경로",x축 좌표,y축 좌표
print 1
wait 1000
msp 1,120,0
repaint
wait 1000

위와 같이 작성을 해서 실행을 해보면, 왼쪽과 오른쪽에 캐릭터가 출력된후, 잠시후에 왼쪽의 캐릭터가 가운데로 이동합니다.

이렇게 해서 이번 강의는 종료가 되겠습니다.

이번 강의는 설명이 좀 길군요.

어쩌면 이번 강의부터 난이도가 상승할지도 모르겠네요.

다음번 강의는 화면에 출력된 이미지를 없애는 명령어로 예정되어 있습니다.

작성자 Pure Ani
출 처 MPPC (미소녀 & PocketPC)

Posted by Pure Ani

RE:D Cherish! -Eternity Blood- CRYSTALiA

放課後シンデレラ2 HOOKSOFT

花鐘カナデ*グラム NanaWind

フタマタ恋愛 ASa Project

スタディ§ステディ2 ま~まれぇど

リンパにATATA! ~メス牡蠣ミルクどぴゅらっしゅ~ Hending

創作彼女の恋愛公式 Aino+Links

流星ワールドアクター Heliodor

Secret Agent~騎士学園の忍びなるもの~ ensemble

天冥のコンキスタ エウシュリー

HaremKingdom -ハーレムキングダム- SMEE

ラズベリーキューブ まどそふと

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

死に逝く君、館に芽吹く憎悪 バグシステム

Sanguinea-サングイネア- すにぃる

麗華の館 しすたーそふと

カスタムメイドオンライン KISS