5 มีนาคม 2569 · Mikhail Vasiliev
Nexus Devlog: ต้นแบบของเอนจิน
เดือนครึ่งก่อน ผมเอาแผนของสตูดิโอขึ้นเว็บไซต์ไป - เรื่องเอนจิน Nexus ว่ามันคืออะไร และเราจะสร้างโปรเจกต์อะไรบนมันบ้าง ไปไกลถึงเกมวางแผนและภาคต่อของซีรีส์อียิปต์ของเรา ในนั้นก็มีแผนงานด้วย เอนจินตัวนี้ซับซ้อน และเพื่อลดความเสี่ยง ผมเลยอยากค่อย ๆ ประกอบมันขึ้นมาทีละส่วน แต่ผู้เล่นพูดตรง ๆ ในคอมเมนต์ว่า สร้างแบบนี้มันเป็นไปไม่ได้ ผมเลยตัดสินใจเริ่มจากต้นแบบก่อน - เพื่อแสดงให้เห็นว่าเอนจินแบบนี้สร้างได้จริง และนี่คือสิ่งที่ผมจะเอามาให้ดู

นี่คือหน้าตาของเอนจินในตอนนี้ มองผิวเผินมันก็เป็นแอปคอนโซลธรรมดา ๆ ค่อนข้างพื้นฐาน แต่มันแสดงสิ่งสำคัญที่สุดได้ดี - ว่ากลไกที่ต่างกันรันอยู่บนเอนจินสากลตัวเดียวกัน
ตอนนี้มีสี่ซิมูเลชันรันอยู่บนมัน ตัวแรกคือ Stone Age เกมแรกสุดของสตูดิโอ จากปี 2013 อีกสามตัวที่เหลือทำขึ้นจากโปรเจกต์ของคนอื่น ผมไม่ได้คิดจะลอกหรือปล่อยมันออกมา มันอยู่ตรงนี้เพื่อแสดงให้เห็นว่ากลไกเกมที่ต่างกันโดยสิ้นเชิงสามารถรันบนเอนจินตัวเดียวได้
Stone Age
Stone Age ถูกทำขึ้นใหม่บนเอนจินอย่างครบถ้วน ทั้งค่าสถานะ ปีและเทิร์น ประชากร ผืนดิน เหมือนเดิมทุกอย่าง คุณส่งคนงานเข้าป่า พวกเขาหาอาหาร ประชากรเพิ่มขึ้น เทคโนโลยีปรากฏ - คุณวิจัยมัน ปลดล็อกสิ่งก่อสร้างและต้นไม้แห่งวิวัฒนาการ จากออสตราโลพิเทคัสไปสู่โฮโม ฮาบิลิส และต่อไปอีก ทั้งเหตุการณ์และตอนจบ - ทุกอย่างจากต้นฉบับอยู่ครบ

Slay the Spire
ต่อไปคือ Slay the Spire เกมการ์ดโรกไลก์ที่ยอดเยี่ยม หลายคนคงเคยเล่นมาแล้ว บนเอนจินจะมีแค่ฉากต่อสู้เท่านั้น: ผู้เล่นมีการ์ด พลังงาน และพลังชีวิต ส่วนศัตรูก็มีเจตนาของมัน Strike (โจมตี) ใช้ตี Defend (ป้องกัน) สร้างบล็อก คุณใช้พลังงาน จบเทิร์น แล้วก็สลับกันไปเรื่อย ๆ จนกว่าจะมีคนชนะ

GURPS
ซิมูเลชันตัวที่สามคือ GURPS ระบบบอร์ดเกมที่ค่อนข้างซับซ้อน ผมหยิบมาแค่โมดูลเดียว คือเครื่องสร้างระบบดาว ที่น่าสนใจคือตัวโมดูลนี้ไม่ใช่เกมเลย แต่เป็นเครื่องสร้างที่ซับซ้อน มันประกอบระบบที่มีดาวฤกษ์หนึ่งดวงกับคุณสมบัติเป็นกองพะเนิน: สิบวงโคจร แต่ละวงมีโลกที่ต่างกัน ใบแรกเป็นโลกหินขนาดเล็ก คล้ายดาวพุธ - มีทั้งมวล ความดันบรรยากาศ และอื่น ๆ ของมันเอง รวมแล้วซิมูเลชันนี้มีข้อเท็จจริงมากกว่าหกพันอย่าง มันเป็นการทดสอบความหนักหน่วงที่ดี: ทำให้เห็นว่าเอนจินรับข้อมูลได้มากแค่ไหน

Oregon Trail
ตัวที่สี่คือ Oregon Trail เกมคลาสสิกปี 1971 และเป็นหนึ่งในเกมคอมพิวเตอร์ยุคแรกสุด มันคือการเดินทางของผู้อพยพข้ามอเมริกาด้วยเกวียน: ก่อนออกเดินทางคุณซื้อเสบียง - วัว อาหาร กระสุน เสื้อผ้า - แล้วจากนั้นก็ออกล่าสัตว์ จัดสรรปันส่วนอาหาร และรับมือกับเหตุการณ์ต่าง ๆ อย่างเมื่อกี้เราเพิ่งโดนโจมตี และก็เป็นแบบนี้ไปจนสุดเส้นทาง

ทั้งสี่เกมรันบนเอนจินตัวเดียว และไม่มีเกมไหนเลยที่ต้องเขียนโค้ดเพิ่ม
แก้ไขแบบสด ๆ
แต่เอนจินไม่ได้แค่รันเกมพวกนี้เท่านั้น - คุณเปลี่ยนแปลงมันแบบสด ๆ ได้เลยโดยไม่ต้องแตะโค้ด ลองดูที่ Slay the Spire กัน

ผมจะเปลี่ยนดาเมจของการ์ด Strike (โจมตี) ตั้งเป็น 100:
/set Strike.CalcDamage Value 100คุณสมบัติของการ์ดทั้งสองใบเปลี่ยนพร้อมกันทันที เพราะใช้คลาสเดียวกัน

และผมจะเพิ่มการ์ดใหม่ทั้งใบเข้ามาก็ได้ คือ Fireball (ลูกไฟ):
/add Fireball Is DirectDamage
/set Fireball.CostEnergy Value 2
/add Fireball Has CalcDamage
/set Fireball.CalcDamage Value 20
/add Fireball Has ApplyDamage
/add Fireball.ExecutionEffects Has CostEnergy
/add Fireball.ExecutionEffects Has CalcDamage
/add Fireball.ExecutionEffects Has ApplyDamageเมื่อกี้ยังไม่มีมัน ตอนนี้มันอยู่ในเกมแล้ว - วางอยู่ในมือ เล่นได้ สร้างดาเมจ 20 แล้วลงกองทิ้งเหมือนการ์ดทั่วไป:

คุณเปลี่ยนตัวกฎเองก็ได้ด้วยคำสั่งเดียว ผมจะลบกฎที่ทำให้การ์ดที่เล่นไปแล้วลงกองทิ้งออก
/remove PlayCard Has MovePlayedCardตอนนี้พวกมันอยู่ในมือต่อไป ผมเล่น Defend (ป้องกัน): บล็อกขึ้น พลังงานถูกใช้ไป แต่การ์ดยังอยู่
![หลังเปลี่ยนกฎ: เล่น Defend (ป้องกัน) ไปแล้ว - พลังงาน 0/3 บล็อก 5 - แต่การ์ดที่เล่นไปทุกใบยังอยู่ในมือ ถูกทำเครื่องหมาย [X]](/_next/image?url=%2Fvblog1_slayrule.jpg&w=3840&q=75)
ในเกมทั่วไปที่เขียนด้วยภาษาโปรแกรม คุณต้องเข้าไปขุดในโค้ดและคอมไพล์โปรเจกต์ใหม่เพื่อทำแบบนี้ แต่ตรงนี้ไม่ต้องเลย
ในทำนองเดียวกัน คุณเพิ่มสิ่งที่ไม่เคยมีในเกมมาก่อนเลยก็ได้ อย่างเช่นทอง - ผมจะตั้งมันขึ้นมาและอธิบายว่ามันถูกใช้ยังไง:
/set Player.Gold Value 100
/add CostGold Output Owner.Gold
/add CostGold Math.Subtract.Apply trueคุณสมบัติที่เมื่อครู่ยังไม่มีก็ปรากฏขึ้น - คือทอง และมีตั้งหนึ่งร้อยในทันที

เมื่อมีทองแล้ว คุณสร้างแอ็กชันใหม่ได้ด้วย - Bribe (ติดสินบน) มันใช้ทองแทนพลังงาน:
/add Bribe Is DirectDamage
/set Bribe.CostEnergy Value 0
/set Bribe.CostGold Value 30
/add Bribe Has CalcDamage
/set Bribe.CalcDamage Value 15
/add Bribe Has ApplyDamage
/add Bribe Has CostGold
/add Bribe.ExecutionEffects Has CostGold
/add Bribe.ExecutionEffects Has CalcDamage
/add Bribe.ExecutionEffects Has ApplyDamage
/create Bribe Player.HandBribe (ติดสินบน) ราคาสามสิบทองและสร้างดาเมจสิบห้า - และใช้ได้ทันที

มันอาจดูเหมือนเป็นการโกง และเหมือนว่าการพิมพ์คำสั่งพวกนี้มันยุ่งยาก แต่มันไม่ใช่ของโกง นี่คือการแก้ไขข้อเท็จจริงเชิงตรรกะและข้อมูลที่ทั้งเกมตั้งอยู่บนนั้น - ทั้งวัตถุ คุณสมบัติ และกลไกของมัน โดยเนื้อแท้แล้วมันคือภาษาที่เกมถูกเขียนขึ้นมา
คุณไม่จำเป็นต้องเรียนภาษานี้ก็ได้ คุณขอให้ AI แปลงประโยคธรรมดาเป็นคำสั่งที่ Nexus เข้าใจก็ได้ เช่น:
give 999 goldแปลเป็นภาษาคนก็แค่ "เพิ่มทองให้ 999" เท่านั้นเอง

AI คิด หาคำสั่งที่ถูกต้อง แล้วรันมัน และเราก็มีทอง 999
คุณจะพูดให้ต่างออกไปก็ได้ อย่าง "ทอง 100" ก็ใช้ได้เหมือนกัน "ทำให้ผมเป็นพระเจ้า" - AI ก็จัดความอมตะมาให้ ทั้งจบเทิร์น โจมตี รักษาตัว - ทำได้หมดด้วยคำพูด เอนจินเข้าใจ และไม่มีอะไรในนี้ที่ถูกสคริปต์ไว้เลย ทุกอย่างทำงานจริง ๆ
แผนต่อไป
ผมอยากทำให้คำสั่งง่ายขึ้น ตอนนี้การสร้าง Fireball (ลูกไฟ) ใบเดิมต้องใช้คำสั่งราวแปดคำสั่ง ผมคิดว่าจะลดให้เหลือสามหรือสี่ และในคลิปหน้าผมจะพยายามเอาอะไรที่เห็นภาพชัดกว่านี้มาให้ดู - คือ 2D render
อ่านรายละเอียดเพิ่มเติมเกี่ยวกับเอนจินและแผนงานได้ที่หมวด Nexus
ข้อกำหนด: Stone Age เป็นเกมของสตูดิโอ ส่วน Slay the Spire, GURPS และ Oregon Trail เป็นของเจ้าของลิขสิทธิ์ตามลำดับ และถูกนำมาแสดงเพียงเพื่อสาธิตเอนจินเท่านั้น - บิลด์เหล่านี้ไม่ได้ถูกเผยแพร่ที่ใดทั้งสิ้น
