ติดตามเราได้ที่ Facebook ชื่อเพจ Planila Game Developer
กล่องข้อความคือส่วนสำคัญในเกมแนว Visual Novel เนื่องจากเป็นส่วนที่แสดงคำพูดของตัวละคร โปรแกรมเกมเอนจิน Ren'Py มีลูกเล่นเกี่ยวกับกล่องข้อความมากมาย นักสร้างเกมสามารถสร้างกล่องข้อความสวย ๆ ได้อย่างง่ายดาย สำหรับผู้อ่านที่ต้องการใช้ภาษาไทยในโปรแกรม Ren'Py ให้ท่านเปลี่ยนฟอนต์ก่อนทดสอบเกม อ่านเพิ่มเติมได้ในหัวข้อ "เปลี่ยนฟอนต์ ขนาด และสีตัวอักษร (ทั้งเกม)"
กล่องข้อความในเกมที่สร้างด้วยโปรแกรม Ren'Py แบ่งเป็น 3 ส่วนดังรูปที่ 3.1 ได้แก่- ส่วนที่ 1 ชื่อตัวละคร
- ส่วนที่ 2 ข้อความหรือคำพูดตัวละคร
- ส่วนที่ 3 พื้นหลังกล่องข้อความ
คำสั่งที่แสดงข้อความในกล่องข้อความมี 2 รูปแบบ รูปแบบแรกมีสองส่วนคือส่วนชื่อตัวละครและส่วนคำพูดตัวละคร แต่ละส่วนอยู่ภายในเครื่องหมาย " " รูปแบบนี้เหมาะสำหรับคำพูดทั่วไป
Code:
"ชื่อตัวละคร" "คำพูดตัวละคร"
รูปแบบที่สองมีเพียงส่วนเดียวคือส่วนคำพูดตัวละครที่อยู่ในเครื่องหมาย " " คำสั่งรูปแบบนี้จะแสดงเฉพาะคำพูดตัวละคร ไม่แสดงชื่อตัวละคร รูปแบบนี้เหมาะสำหรับประโยคที่ตัวละครคิดในใจ หรือข้อความแจ้งเตือนจากเกม
ตัวอย่างคำสั่งที่ใช้แสดงข้อความในรูปที่ 3.1 คือ
Code:
"Aiya" "What are you doing? Why you don't knock the door!"
ประกาศตัวแปรเก็บชื่อตัวละคร
ก่อนเรียนเรื่องการใช้กล่องข้อความต่อ ผู้เขียนมีเทคนิคการใส่คำสั่งให้สั้นลง เกมแนว Visual Novel ต้องแสดงข้อความหรือคำพูดจำนวนมาก จึงต้องแสดงชื่อตัวละครเดิมซ้ำกันหลายครั้ง โปรแกรม Ren'Py มีเทคนิคที่จัดการกับชื่อตัวละคร แทนที่จะใส่ชื่อตัวละครเดิมซ้ำกันทุกครั้ง เราสามารถประกาศตัวแปรและใส่ชื่อตัวละครลงในตัวแปรแทนได้ในรูปแบบดังนี้
Code:
define ชื่อตัวแปร = Character('ชื่อตัวละคร')
ตัวอย่างเช่น ประกาศตัวแปร a แล้วใส่ชื่อตัวละคร Aiya ลงในตัวแปร a คำสั่งแสดงข้อความไม่ต้องใส่เครื่องหมาย " " ในส่วนชื่อตัวละครที่เป็นตัวแปร (ถ้าส่วนชื่อตัวละครไม่ใช่ตัวแปรจะต้องใส่เครื่องหมาย " " ทุกครั้ง) เราสามารถแสดงข้อความดังรูปที่ 3.1 ด้วยเทคนิคตัวแปรดังนี้
Code:
define a = Character('Aiya')
a "What are you doing? Why you don't knock the door!"
จากตัวอย่างข้างบนจะเห็นว่าใช้ตัวอักษรเพียงตัวเดียวคือ a เพื่อแสดงชื่อตัวละคร Aiya ซึ่งมีสี่ตัวอักษร ความสะดวกนี้จะเห็นได้ชัดเจนขึ้นเมื่อตัวละครมีชื่อยาว เช่น เก็บชื่อตัวละคร Princess Sofia de Lupier ลงตัวแปรชื่อ s แล้วเรียกใช้ชื่อตัวละครผ่านตัวแปร s ทำให้ไม่ต้องพิมพ์ชื่อยาว ๆ ทุกครั้งที่ใส่คำสั่งแสดงข้อความ การประกาศตัวแปรให้ประกาศเพียงครั้งเดียวก่อนใช้ จากนั้นสามารถใช้ตัวแปรนั้นได้ตลอดทั้งเกมโดยไม่ต้องประกาศตัวแปรใหม่ ถ้ามีตัวแปรที่เก็บชื่อตัวละครหลายตัวแปร ตัวแปรแต่ละตัวต้องมีชื่อที่ไม่ซ้ำกัน
ตัวอักษรพิเศษ
ตัวอักษรพิเศษ (Escape Character) เป็นตัวอักษรที่ไม่สามารถแสดงในกล่องข้อความด้วยวิธีปกติได้ เช่น เครื่องหมาย " " หรือการขึ้นบรรทัดใหม่ เนื่องจากติดข้อจำกัดคำสั่งของโปรแกรม Ren'Py แต่โปรแกรม Ren'Py มีทางออกด้วยการใช้ตัวอักษรพิเศษแทนการใส่ตัวอักษรนั้นเข้าไปตรง ๆ ตัวอักษรพิเศษได้แก่
ตัวอักษรที่ต้องการ | ตัวอักษรพิเศษ | ตัวอย่าง |
---|
\ | \\ |
"Game was saved in C:\\Highstories Star\\game\\saves\\auto-1-LT1.save"
|
" | \" |
a "My name is \"Aiya\"."
|
' | \' |
"Rika" "You love me or \'Aiya\'?"
|
เว้นวรรคติดกัน | \ (backslash + space) |
"Aiya" "JUMP \ JUMP \ JUMP"
|
ขึ้นบรรทัดใหม่ | \n |
a "What are you doing?\nWhy you don't knock the door!"
|
[ | [[ |
"[[Aiya's underwear is very sexy.]"
|
{ | {{ |
"{{This room is too hot. Is not there an air-conditioner?}"
|
การใช้ตัวอักษรพิเศษให้ใส่ในข้อความที่ต้องการ เช่น ใส่ตัวอักษรพิเศษ \" เพื่อแสดงเครื่องหมาย " ในกล่องข้อความ ส่วนเครื่องหมาย \ เป็นเพียงการบอกว่านี่เป็นตัวอักษรพิเศษ เครื่องหมาย \ จะไม่ถูกแสดงในกล่องข้อความ ถ้าผู้อ่านต้องการใช้ตัวอักษรในตารางข้างบน ท่านต้องใช้ตัวอักษรพิเศษเท่านั้น ไม่สามารถใส่ตัวอักษรที่ต้องการโดยตรงได้
รูปที่ 3.2 การใช้ตัวอักษรพิเศษ \n เพื่อขึ้นบรรทัดใหม่
โดยทั่วไปโปรแกรม Ren'Py จะมองเว้นวรรคที่อยู่ติดกันเป็นเว้นวรรคเดียว ถ้าต้องการเว้นวรรคหลายครั้ง ต้องนำหน้าเว้นวรรคด้วยเครื่องหมาย \ ต่อเว้นวรรคหนึ่งครั้ง เพื่อให้โปรแกรม Ren'Py มองแยกเป็นหลายเว้นวรรค การแสดงเครื่องหมาย [ และ { ให้ใส่เครื่องหมายนั้นสองตัวติดกันเป็น [[ และ {{ แต่เครื่องหมาย ] และ } สามารถใส่ได้โดยตรง ไม่ต้องใส่ซ้ำสองตัว
เปลี่ยนฟอนต์ ขนาด และสีตัวอักษร (ทั้งเกม)
......
นี่เพิ่งแค่ 35% ของบทความนี้เท่านั้น บทความฉบับเต็มมีเยอะกว่านี้อีก!
เนื่องจากติดปัญหาเรื่องนโยบายการเผยแพร่บทความ ทำให้เราไม่สามารถเผยแพร่บทความฉบับเต็มลงในเว็บนี้ได้ อ่านฉบับเต็มได้ที่บทความต้นฉบับ (ไม่มีค่าใช้จ่าย)
บทความต้นฉบับ https://planila.blogspot.com/2019/07/ren...ter03.html