RPG Maker VX Ace กับภาษาไทย

RPG Maker นี่ เป็นซอฟต์แวร์สร้างเกมอย่างง่ายที่อยู่คู่กับปัญหาภาษาไทยมานานแล้ว ตั้งแต่ครั้งอดีตกาลที่ไปลงเครื่อง Super Famicom ก็ใช้ไม่ได้แหงอยู่แล้ว จนมาเป็น PC ก็ต้องมีคนหาทางพลิกแพลงดัดแปลงฟอนต์ แฮ็คโปรแกรมจนใช้ได้ แม้จะยังมีข้อจำกัดมากมาย แต่ตอนนั้นถึงกับมีนิตยสารในไทยจัดประกวดเขียนเกมด้วย RPG Maker เลยนะ...


จนมาถึง พ.ศ. นี้ RPG Maker พัฒนาเป็นเวอร์ชั่น VX Ace มันก็ยังมีปัญหาภาษาไทยอยู่ดี แต่ด้วยความยืดหยุ่นของระบบ script ทำให้งวดนี้แค่เพิ่ม script นิดหน่อยก็ใช้ภาษาไทยได้แล้ว ซึ่งถ้าหาในอินเทอร์เน็ตจะไม่เจอ "วิธี" แต่กลับเจอ "ไฟล์" ให้ก็อปไปทับซะมากกว่า ส่วนเว็บที่บอก "วิธี" ก็รวบรวมไว้ไม่ครบ ต้องไปหาจากบล็อกและเว็บบอร์ดต่าง ๆ หลายที่ถึงจะสมบูรณ์ ผมก็เลยรวบรวมมาไว้ที่บล็อกตัวเองซะเลย!! .... นี่แหละ



เกริ่นนำ (อ้าว ไอ้ข้างบนไม่ใช่รึ?)

ก่อนอื่นต้องขอบอกก่อนว่า บทความที่ท่านกำลังจะได้อ่านต่อไปนี้จะเป็นการ "สอนวิธีตกปลา" มากกว่าเอาปลายื่นให้ดื้อ ๆ นะครับ นั่นคือไม่มีอะไรสำเร็จรูปให้คุณ อยากได้ต้องใส่ script เอง ว่างั้นแหละ โดยเป็นวิธีที่ใช้ได้กับ RPG Maker VX Ace ที่ขายอยู่ใน Steam หรือใครที่สอยจาก Humble Weekly Bundle เมื่อกลางปีมาดองไว้ (แค่จ่าย $1 ก็ได้มาแล้ว) ก็อันเดียวกันแหละ ใครยังไม่มี ซื้อจาก Steam ตอนนี้ก็พันกว่า ๆ แต่ถ้ารอลดราคา (อีกไม่นานนี้ หรือพลาดไปก็เห็นกลับมาลดอยู่ทุกเทศกาลแหละ) ก็จะเหลือ 300 กว่าบาท (รอลดสัก 75%) ช่วงรอลดก็เอา RPG Maker VX Ace Lite ที่แจกฟรีมาลองเล่นก่อนก็ได้ แต่ทำให้รองรับภาษาไทยไม่ได้นะ เพราะมันไม่ให้แก้ script ...

อ้อ บล็อกนี้ไม่สนับสนุนของเถื่อน ดังนั้นไม่มีตัวเต็มแจกให้ใด ๆ ทั้งสิ้นครับ..



STEP 1 - เปลี่ยนฟอนต์

ปัญหาของภาษาไทยใน RPG Maker VX Ace ก็มีอยู่ 2 อย่างครับ หนึ่งคือ default font ไม่รองรับภาษาไทย ทำให้มันออกมาเป็นงี้...


ครับ.. สี่เหลี่ยมหมดเลยครับ แย่ยิ่งกว่าภาษาต่างดาวอีก แล้วจะแก้ยังไง? ถามได้ ก็เปลี่ยนฟอนต์สิครับ!!


เริ่มจากเข้าไปที่เมนู Tools > Script Editor... (หรือกด F11) แล้วไปที่ Main ที่อยู่ล่างสุดดังภาพ...


จากนั้นแทรกโค้ดไปก่อน rgss_main ดังนี้

Font.default_name = ["ชื่อฟอนต์"]
Font.default_size = ขนาดฟอนต์

แค่นี้แหละครับ โดยชื่อฟอนต์ต้องเป็นชื่อฟอนต์แบบที่เห็นตอนเลือกฟอนต์นั่นละ ส่วนขนาดก็ต้องจูนหากันเอาเองว่าขนาดเท่าไหร่จะเหมาะสม เพราะถ้าเล็กไปอาจจะแยกสระอิกับไม้หันอากาศไม่ออก ใหญ่ไปก็อาจทำให้พวกวรรณยุกต์หลุดขอบได้ และเมื่อลองแก้ฟอนต์แล้วรันเกมดู...


และนี่คืออีกหนึ่งปัญหา.. สระกับวรรณยุกต์ปลิวซะงั้น!! ทำให้เราต้องเพิ่ม script อีกตัวเพื่อจัดให้มันเข้าที่เข้าทางครับ




STEP 2 - เพิ่ม script แก้สระลอย

สำหรับ script แก้สระลอย (หรือปลิว) นี้ เป็นฝีมือของคุณ Admannon จากบอร์ด irpg.in.th ครับ


ยังอยู่ที่ Script Editor คราวนี้เลื่อนขึ้นมาที่หัวข้อ Materials แล้วคลิกขวาตรง ( Inset here ) แล้วเลือกคำสั่ง Insert


จะเกิดช่องว่างขึ้นมาพร้อมหน้า script ว่าง ๆ ให้พิมพ์ชื่อ script ตรงช่อง Name แล้วเอา script ต่อไปนี้ไป paste ลงที่ว่างทางขวา

#==============================================================================​
# ** Message Thai Vovel and Outline Fix
#------------------------------------------------------------------------------
# By : Admannon
#======================================================================​========

#=====================================================================​=========
# ** Window Base
#==========================================================================​====
class Window_Base < Window
@@thai_vovel = "ัิีึื่้๊๋็์ุูํฺ"
#--------------------------------------------------------------------------
# * Preconvert Control Characters
#--------------------------------------------------------------------------
alias thai_fix_convert_escape_characters convert_escape_characters unless $@
def convert_escape_characters(text)
result = thai_fix_convert_escape_characters(text).clone
result.gsub!(/ำ/) { "ํา" }
result
end
#--------------------------------------------------------------------------
# * Normal Character Processing
#--------------------------------------------------------------------------
def process_normal_character(c, pos)
text_width = text_size(c).width
draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
pos[:x] += text_width unless @@thai_vovel.include?(c)
end
end

#======================================================================​========
# ** Bitmap
#========================================================================​======
class Bitmap
alias outline_fix_draw_text draw_text unless $@
def draw_text(*args)
s = text_size(" ").width
a = args.size - (args[args.size - 1].is_a?(String) ? 1 : 2)
args[a] = " " + args[a].to_s
if args[0].is_a?(Rect)
args[0].x -= s
args[0].width += s
else
args[0] -= s
args[2] += s
end
outline_fix_draw_text(*args)
end
end


ย้ำกันอีกที script นี้เป็นฝีมือของคุณ Admannon จากบอร์ด irpg.in.th ครับ อย่าลืมให้เครดิตเขาล่ะ (ไม่รู้เขาขอเครดิตรึเปล่า แต่ให้ ๆ ไปเถอะ) แล้วก็ลองรันดู...


ผลจากการใส่ script จะเห็นว่าสระไม่ลอยไปไหนแล้ว แต่จะมีปัญหาวรรณยุกต์ซ้อนกับสระอยู่ (สังเกตคำว่า ที่นี่นั้น) นี่เป็นผลจากการใช้ฟอนต์ Cordia New ซึ่งฟอนต์ที่ติดมากับ Windows 7 และ 8 จะเป็นงี้กันทุกฟอนต์  เขาว่ากันว่าให้ไปเอาฟอนต์จาก XP มาลงทับจะแก้ได้ แต่ผมไม่แนะนำให้ทำ และอย่าไปแนะนำให้คนอื่นทำ เพราะการเอาไฟล์จากระบบปฏิบัติการเก่าไปทับระบบใหม่อาจมีปัญหาตามมา จึงไม่ใช่เรื่องที่ทุกคนจะเต็มใจทำ และอาจพาลไม่อยากเล่นเกมคุณได้

แล้วจะแก้ยังไง? ไปหาฟอนต์ใหม่ครับ



STEP 3 - คัดเลือกและปรับแต่งฟอนต์

โชคดีที่ภาษาไทยเรามีฟอนต์แจกฟรีให้หามาใช้ได้เยอะแยะที่ f0nt.com และต่อไปนี้เป็นตัวอย่างฟอนต์...


Circular ขนาด 24 เป็นฟอนต์ที่อ่านยากหน่อย แต่ลงตัวที่สุดในสายตาผม

Arundina Sans ขนาด 24 หนึ่งในฟอนต์แห่งชาติ

อ้อ ลืมบอกไปอย่าง ว่าคุณสามารถเปลี่ยนฟอนต์เป็นตัวหนาได้ด้วย โดยกลับไปที่ Main ที่ใส่โค้ดเปลี่ยนฟอนต์ตะกี้ แล้วเพิ่ม Font.default_bold = true ลงไป ดังภาพ...


แล้วฟอนต์จะอ่านง่ายขึ้นหน่อย ดังนี้..


Circular ตัวหนา ขนาด 24 ... พอหนาแล้วลงตัวทีเดียว


TH Sarabun New ตัวหนา ขนาด 28 (ใช้ 26 ก็ได้) ฟอนต์ยอดฮิต ชัดเจนดี


เนื่องจาก RPG Maker VX Ace จะเร็นเดอร์ฟอนต์ด้วยความละเอียดค่อนข้างต่ำ ทำให้บางทีพิกเซลขาด ๆ หาย ๆ แล้วฟอนต์บางตัวจะเปลี่ยนหน้าตาไปเลย (เช่น Arundina ข้างบนนู่น) ส่วนหนึ่งเป็นเพราะมีการเพิ่ม "เส้นขอบ" ให้ตัวอักษรด้วยครับ หากไม่อยากให้มีเส้นขอบ ก็เพิ่มคำสั่งนี้ลงไป (ที่ไหน? คงไม่ต้องบอกนะ ที่เดิม ๆ น่ะ)

Font.default_outline = false

แต่ถ้าไม่มีเส้นขอบอาจจะกลืนกับพื้นหลัง อ่านยาก ก็ให้ใส่เงาโดยเพิ่มคำสั่งนี้


Font.default_shadow = true


บางฟอนต์ที่ขาด ๆ เกิน ๆ อาจจะกลับมาใช้การได้แล้วล่ะทีนี้


ปัญหาต่อมาคือ คุณจะเอาฟอนต์ไปลงเครื่องคนเล่นได้ยังไง? วิธีที่เซฟที่สุดคือ ตอนโพสต์แจกเกมก็โพสต์ลิ้งค์ของฟอนต์นั้น (ในกรณีของ f0nt.com ควรโพสต์หน้าของฟอนต์นั้น อย่าโพสต์ลิ้งค์โหลดโดยตรงนะ) ให้คนเล่นไปโหลดมาติดตั้งก่อนด้วยเลย

หรืออีกวิธีคือ ให้สร้างโฟลเดอร์ Fonts (มี s ต่อท้ายนะ) ในโปรเจ็คของคุณ แล้วก็อปปี้ไฟล์ฟอนต์ลงไปในนั้น (แบบที่แตกไฟล์แล้วนะ ไม่ใช้ใส่ไปทั้ง zip ทั้ง rar) แล้ว RPG Maker VX Ace จะมองเห็นฟอนต์นั้นได้โดยไม่ต้องติดตั้ง

แต่... บางฟอนต์จะมีสัญญาอนุญาตที่ห้ามไม่ให้แจกจ่ายฟอนต์ไปกับโปรแกรมครับ (ถึงมันจะแจกฟรีก็ตาม) ถ้าเจ้าของฟอนต์กล้าพอ อาจจะฟ้องเราดื้อ ๆ ได้ อันนี้เป็นเรื่องโคตรปวดหัวของการใช้ฟอนต์ในเกมที่หลายคนไม่เคยคิดถึงมาก่อนทีเดียว...



สรุป - การทำให้ RPG Maker VX Ace รองรับภาษาไทย

เผื่อบางคนเห็นว่าข้างบนยาวไปไม่อ่าน หรือเวลาน้อย ก็ขอสรุปวิธีโดยย่อดังนี้..
  1. เปิด Script Editor 
  2. ไปที่ Main แล้วเพิ่มโค้ด Font.default_name = ["ชื่อฟอนต์"] และ Font.default_size = ขนาดฟอนต์ ก่อน rgss_main
  3. คลิกขวาที่ ( Insert here ) เลือก Insert แล้วก็อปโค้ดแก้สระลอย (ไอ้กลุ่มตัวอักษรเขียว ๆ ข้างบน) ลงไป
  4. เฟ้นหาฟอนต์ที่ลงตัว ไม่แนะนำฟอนต์ที่มากับวินโดวส์ (พวก New UPC Tahoma Microsoft Sans Serif) ไปหาที่ f0nt.com 
  5. เราสามารถแนบฟอนต์ไปกับเกมโดยผู้เล่นไม่ต้องติดตั้ง โดยการสร้างโฟลเดอร์ Fonts (มี s) ในโฟลเดอร์ของตัวเกมแล้วก็อปไฟล์ฟอนต์ลงไป
  6. ฟอนต์บางตัวแม้จะแจกฟรี แต่ไม่อนุญาตให้แนบไปกับโปรแกรม โปรดระวัง!
  7. เคล็ดลับอื่น ๆ อยู่ในบทความยาว ๆ ข้างบน อยากได้ก็ไปอ่านซะ!!

สำหรับวันนี้จบแค่นี้ แต่เรื่องภาษาไทยกับ RPG Maker VX Ace ยังไม่จบ ไม่เชื่อลองรันเกมดูสิ (ฉากต่อสู้น่ะ ชัดเลย) ถ้ดไป เราจะไปต่อเรื่องการแปล







โพสต์ยอดนิยมจากบล็อกนี้

RPG Maker MV มีดีอะไร แล้วภาษาไทยล่ะ?

เล่นแล้วมาเล่า... Torchlight 2 ตัวจริงเต็ม ๆ !!

[รีวิวลวกจิ้ม] ดิจิตอลทีวี Skyworth 19E510

[บันทึก] เมื่อผมไปอบรมประสบการณ์วิชาชีพ มสธ.

เก็บตก Torchlight 2

อัพแล้วเป็นไง Windows 10 Anniversary Update (Ver.1607)

เก็บตก RPG Maker MV ฉบับลองใช้จริง.....

[คิดไม่ออก ต่อกันพลา] Gundam Exia RG

Firefox 52 ... ย้ำกันอีกระดับกับเว็บไม่ปลอดภัย