กลับมาแล้วจ้าตอนนี้ต้องรีบเร่งที่จะขนย้ายเอาเนื้อหาจากเว็บเดิมมาลงที่นี่ให้หมดดูไปดูมาตอนแรกก็ว่ามีอยู่นิดเดียวอ่ะนะแต่พอเอาเข้าจริงๆ เออ...   ก็ว่าเยอะเหมือนกันนะนี่แล้วไหนจะต้องมา Update เนื้อหาใหม่ในแต่ละบทอีกล่ะโอย....
เพื่อไม่ให้เสียเวลาเรามาเริ่มกันเลยดีกว่า


· กลุ่มคำสั่งที่เกี่ยวกับการจัดการกรอบคำพูด

style.window.background = Frame("frame.png", 12, 12) เป็นการกำหนดค่าของกรอบคำพูดโดยใช้ฟังก์ชัน Frame เป็นตัวกำหนด. ฟังก์ชัน Frame นั้นจะมีพารามิเตอร์อยู่ 3 ตัวคือ 

ตัวที่1. จะเป็นตัวที่กำหนดรูป Background ของกรอบคำพูดว่าเป็นรูปไหนในที่นี้จะกำหนดให้ใช้รูปที่ชื่อว่า frame.png หากคุณต้องการที่จะใช้รูปอื่นก็สามารถเปลี่ยนชื่อตามที่คุณต้องการได้นะจ๊ะ 

ส่วนตัวที่2และ3 จะเป็นตัวที่จะกำหนดขนาดของกรอบ โดยที่ตัวที่ 2 จะกำหนดความหนาทางด้านซ้ายและขวาของกรอบคำพูดและตัวที่ 3 จะกำหนดความหนาทางด้านบนและล่างของกรอบคำพูด(กำหนดไว้ตามทีมันให้มาดีที่สุตแต่จะปรับแต่งเองก็อีกเรื่องนึง)




style.window.left_margin = 6 กำหนดตำแหน่งความห่างทางซ้ายระหว่างขอบwindowกับกรอบคำพูด

style.window.right_margin = 6 กำหนดตำแหน่งความห่างทางขวาระหว่างขอบwindowกับกรอบคำพูด

style.window.top_margin = 6 กำหนดตำแหน่งความห่างทางด้านบนระหว่างขอบwindowกับกรอบคำพูด

style.window.bottom_margin = 6 กำหนดตำแหน่งความห่างทางด้านล่างระหว่างขอบwindowกับกรอบคำพูด

style.window.left_padding = 6 กำหนดตำแหน่งความห่างทางซ้ายระหว่างกรอบคำพูดกับข้อความในกรอบคำพูด

style.window.right_padding = 6 กำหนดตำแหน่งความห่างทางขวาระหว่างกรอบคำพูดกับข้อความในกรอบคำพูด

style.window.top_padding = 6 กำหนดตำแหน่งความห่างทางด้านบนระหว่างกรอบคำพูดกับข้อความในกรอบคำพูด 

style.window.bottom_padding = 6 กำหนดตำแหน่งความห่างทางด้านล่างระหว่างกรอบคำพูดกับข้อความในกรอบคำพูด

style.window.yminimum = 250 กำหนดความสูงของกรอบคำพูด จากตัวอย่างจะกำหนดให้ความสูงของกรอบคำพูดอยู่ที่ 250 พิกเซล (เราจะเรียกใช้คำสั่งนี้หรือไม่ก็ได้)



· กลุ่มของคำสั่งที่เกี่ยวกับการกำหนดตำแหน่งการวางของหน้าจอ Menu ตอนไตเติ้ลเกมส์ 

คุณสามารถเลือกใช้ได้ 2 แบบ คือ 

1. แบบที่จะต้องเขียนเองในส่วนนี้นั้นคุณจำเป็นที่จะต้องไปเขียนเพิ่มเติมกันเอาเองนะครับโดยที่ จะต้องเพิ่มไว้ตรงท้ายนอกวงเล็บ ” ) ”ของฟังก์ชัน theme.roundrect ซึ่งเราได้เคยกล่าวไว้แล้วจากครั้งก่อน (อันที่จริงแล้วเราจะวางไว้ตรงไหนก็ได้อ่ะนะแต่ผมว่าวางไว้ตรงนี้มันมองเห็นง่ายดีไม่มั่วด้วยล่ะ เหอ...เหอ...เหอ...) 

style.mm_menu_window.yanchor = 0 กำหนดแกนYโดยใช้ตำแหน่งกึ่งกลางเมนูเป็นหลัก
style.mm_menu_window.ypos = 0.05 กำหนดแกนYโดยใช้มุมบนซ้ายเป็นหลัก
style.mm_menu_window.xanchor = 0 กำหนดแกนXโดยใช้ตำแหน่งกึ่งกลางเมนูเป็นหลัก
style.mm_menu_window.xpos = 0.05 กำหนดแกนXโดยใช้มุมบนซ้ายเป็นหลัก 

2. แก้ไขจากตัวโค๊ดที่มีให้อยู่แล้ว ดังรูป

style.mm_menu_frame.xpos = 0.5 กำหนดแกนXโดยใช้มุมบนซ้ายเป็นหลัก 
style.mm_menu_frame.xanchor = 0.5 กำหนดแกนXโดยใช้ตำแหน่งกึ่งกลางเมนูเป็นหลัก
style.mm_menu_frame.ypos = 0.75 กำหนดแกนYโดยใช้มุมบนซ้ายเป็นหลัก
style.mm_menu_frame.yanchor = 0.5 กำหนดแกนYโดยใช้ตำแหน่งกึ่งกลางเมนูเป็นหลัก





ปล. ทั้ง 2 คำสั่งนี้ทำงานเหมือนกันแล้วแต่ว่าใครอยากจะเรียกใช้ตัวไหนละกัน หากเรากำหนดเอา 2 ค่านี้ไว้พร้อมกัน เช่น 
style.mm_menu_frame.xpos = 40 style.mm_menu_frame.xanchor = 100

ผลที่ได้ออกมาก็คือมุมซ้ายบนของ Menu จะไปหรากฎอยู่บนแนวแกน x ที่ -60เนื่องจากจะเกิดการหักล้างค่ากันนั่นเองโดยมีสูตรการคิดดังนี้ 

ตำแหน่งแกนXหรือyบนมุมซ้ายบนที่แสดงจริงๆ = ตำแหน่งแกนxหรือyที่มุมซ้ายบน - ตำแหน่งแกนxหรือyในตำแหน่งกึ่งกลางเมนูเป็นหลัก 

ค่าของตัวเลขที่เราจะต้องกำหนดในส่วนนี้สามารถกำหนดได้ 2 แบบคือ ถ้ากำหนดเป็นตัวเลขจำนวนเต็มมันจะกำหนดค่าตำแหน่งที่แสดงผลออกมาเป็นหน่วยพิกเซล แต่ถ้าใส่เป็นค่าทศนิยมมันจะแสดงผลตำแหน่งออกมาเป็นหน่วย นิ้ว (int) 

· กลุ่มคำสั่งที่กำหนด Font และขนาดของตัวอักษร(ถ้าคิดจะเปิดใช้งานคำสั่งนี้ต้องเปิดใช้งานพร้อมกันทั้งคู่นะจ๊ะ)

style.default.font = "DejaVuSans.ttf" กำหนดชนิดของ Font ที่จะใช้งาน
fontstyle.default.size = 30 กำหนดขนาดของตัวอักษร 



· ต่อมาก็จะเป็นส่วนของการกำหนดค่าเกี่ยวกับเสียง
config.has_sound = True/ False อนุญาตให้ใช้
sound effectsconfig.has_music = True/ False อนุญาตให้ใช้เพลงประกอบ
config.has_voice = True/ False อนุญาตให้ใช้เสียงต่างๆ เช่นเสียงพูด
style.button.activate_sound = "click.wav" เสียงปุ่มกดทั่วไป
style.imagemap.activate_sound = "click.wav" เสียงปุ่มกดของimage map(รูปภาพที่กดได้)
config.enter_sound = "click.wav" เสียงปุ่มกดตอนเข้าเกมส์ 
config.exit_sound = "click.wav" เสียงปุ่มกดตอนออกจากเกมส์
config.sample_sound = "click.wav" เสียงปุ่มกดเพื่อทดลองเสียงในส่วน option
optionconfig.main_menu_music = "main_menu_theme.ogg" เพลงไตเติ้ลตอนหน้า menu เกมส์ 




Tip เล็กน้อย สำหรับการกำหนดค่า 

ในบางครั้งเมื่อเราทำการลบ เครื่องหมาย # ออกไปเพื่อที่จะทำการกำหนดค่านั้น เมื่อลบไปแล้วจึงทำการรันเกมส์ใหม่แต่ไหง มันขึ้นว่า “ SyntaxError: invalid syntax (line XXX) ” ได้ล่ะนี่ คุณอาจจะนึกในใจว่า อีตาคนสอนมันมั่ว หรือว่าโปรแกรมมันยังไม่สมบูรณ์กันแน่วะ (5555ผมได้ยินนะ) ใจเย็นๆครับอับดุนแก้ได้(5555) เนื่องจากว่ารูปแบบของไวยากรณ์ภาษานี้อาจจะออกบ๊องๆหน่อย คือว่าเมื่อคุณทำการลบเครื่องหมาย # ออกแล้วให้คุณทำการล่นย่อหน้าเข้ามา ก็คือล่นย่อหน้าเข้ามาให้อยู่ในคอลัมน์ที่9เท่านั้นเองน่ะครับ เท่านี้เองการปรับแต่งค่าของพวกคุณก็ผ่านฉลุยไม่มีคำเตือน Error โผล่ขึ้นมาให้คุณหงุดหงิดใจอีกต่อไป............
 
 
 
 ต่อมาก็จะเป็นส่วนของการกำหนดลิ๊งค์ไปยัง Help File 
config.help = "README.html" ก็ไม่มีอะไรมากแต่เราก็สามารถกำหนดเป็นไฟล์อะไรก็ได้นอกเหนือจาก .html จากที่กำหนดให้ในตอนแรก เช่น .txt หรือ .pdf ก็ได้ (ส่วนปุ่มที่กดไปยัง Help file นั้นก็อยู่ที่หน้า Menu เกมส์เราเลยนะ)
 
 
 
ถัดจาก Help file ก็จะเป็นการกำหนดค่าในส่วนของ Transitions หรือ การตัดฉากนั่นเองซึ่งก็จะมีการกำหนดค่าต่างๆดังนี้
 
config.enter_transition = None รูปแบบ(ประมาณว่าเอฟเฟ็กน่ะแหล่ะ)ในการตัดฉากจากหน้าจอเกมส์เข้าสู่หน้าจอ Menu ภายในเกมส์ถ้าไม่มี(None) ก็แสดงว่าเข้าสู่ Menu ภายในเกมส์เลย ไม่มีอะไรที่วุบวับวืบวาบหวือหวา...... เป็นต้น 
config.exit_transition = None เหมือนกับข้างบนแต่เป็นเอฟเฟ็กตอนออกจากหน้าจอ Menu ภายในเกมส์เกมส์
 
config.intra_transition = None เป็นเอฟเฟ็กในการตัดฉากเข้าสู่ส่วนต่างๆของ Menu ภายในเกมส์
 
config.main_game_transition = None เป็นเอฟเฟ็กการตัดฉากเข้าสู่หน้า Option จากหน้า Menu หลัก
 
config.game_main_transition = None เป็นเอฟเฟ็กการตัดฉากเมื่อออกจากตัวเกมส์มาสู่หน้าเมนูหลัก
 
config.end_splash_transition = None เป็นเอฟเฟ็กการตักฉากเมื่อเริ่มต้นเข้าสู่ฉาก Menu เกมส์
 
config.end_game_transition = None เป็นเอฟเฟ็กการตัดฉากเข้าสู่ Main Menu หลังจากจบเกมส์แล้ว
 
config.after_load_transition = None เป็นเอฟเฟ็กการตัดฉากในในตอนที่โหลดเกมส์เข้าสู่ตัวเกมส์
 
config.window_show_transition = None เป็นเอฟเฟ็กในการปรากฏกรอบคำพูดขึ้นมา (คำสั้งในการสั่งให้กรอบรูปปรากฏขึ้นมาใช้ window show นะครับ)
config.window_hide_transition = None เป็นเอฟเฟ็กการตักฉากซ่อนกรอบคำพูดออกไปจากหน้าจอครับ (คำสั่งในการซ่อนกรอบรูปใช้ คำสั่ง window hide ครับ)
 
 
 
 
 
ต่อมาก็จะมาในส่วนของการตั้งค่าอื่นๆนอกเหนือจากนี้นะครับเรามาดูกันว่ามันมีอะไรกันบ้าง
config.save_directory = "xxxx" ตรงนี้ไม่ต้องไปแก้ไขอะไรโปรแกรมมันตั้งค่าให้ตั้งกะต้นแล้วซึ่งมันก็คือการกำหนด Save file ครับ  ในบทความนี้ผมจะยังไม่ขอลงลึกในส่วนนี้ก่อนละกันครับแล้วจะทำการอธิบายให้อีกทีในบทถัดๆไป
config.default.fullscreen = true/false เป็น true ถ้าต้องการให้เริ่มต้นมาแล้วแสดงหน้าจอเกมส์แบบเต็มจอในขณะที่ เป็น False จะเป็นการแสดงหน้าจอเกมส์เป็นกรอบ window ตามขนาดที่เราได้กำหนดไว่ในข้างต้น
 
config.default_text_cps = 0 เป็นการกำหนดความเร็วเริ่มต้นในการขึ้นของตัวหนังสือ ซึ่งความเร็วนั้นก็จะมีไปตั้งแต่ 1 - 150 (เรียงตามลำดับจากน้อยไปมาก) ในขณะที่ค่า 0 นั้นจะเป็นการไม่แสดงถึงความเร็วในการขึ้นของตัวหนังสือ (หลังจากตั้งค่าตัวนี้แล้วเราจำเป็นที่จะต้องไปเคลียค่าเก่าที่ตั้งไว่ก่อนโดยการไปกดปุ่ม Delete Persistent ที่หน้าต่างหลักของ Renpy เพื่อเคลียค่าก่อน แล้วค่อยลองเปิดขึ้นมารันใหม่อีกทีนึง) 
 
เอาล่ะก็จบลงไปแล้วสำหรับบทแรกของเรา.....หลังจากที่ท่านทั้งหลายได้ลองอ่านบทความนี้แล้วหลายท่านก็คงนึกอยู่ในใจว่ายังไม่เห็นจะมีการใส่ภาพหรืออะไรลงไปเลย ใจเย็นๆครับพี่น้องบทแรกที่ผมจะกล่าวนำก็คือการกำหนดค่าต่างๆก่อนที่จะสร้างเกมส์ครับ ประมาณว่า การ Config ค่าอะไรประมาณนั้นแหล่ะ ครั้งต่อไปในบทหลังๆก็จะเป็นการแนะนำในการใช้งานคำสั่งต่างๆที่จำเป็นในการสร้างเกมส์ครับ แล้วพบกันใหม่ในครั้งต่อไปครับบ๊ายบาย.........อ๊า.......

          COUNTER