<100 subscribers
Share Dialog
Share Dialog


ใน OP Craft อิฐทุกก้อน หญ้าทุกต้น ผืนน้ำทุกบล็อก และทุกแอคชั่น (เช่นเจาะหิน กระโดด) ถูกบันทึกไว้ใน Ethereum transaction ตัวเกมส์สร้างโดยใช้ MUD open-source on-chain game engine ที่สร้างโดยทีม @latticexyz ที่สามารถต่อยอดเป็นอะไรง่ายๆ หรือเกมส์ซับซ้อนก็ทำได้ไม่ติด
MUD เป็น Tool ที่สามารถช่วย Dev ในการสร้างโลกใหม่ ที่เป็น ownerless data namespaces ชื่อ Worlds และแยก Data กับ Logic ออกมาเป็น Components และ Systems ตัว Components คือ Contract ที่จะ Assign typed data packages ให้เป็น Entities ซึ่งแต่ละอันก็จะมี numeric ID ของตัวเอง
ตัว System คือตัวจัดเก็บ Logic และการ Modify data ของตัว Components ทั้ง Entities, Components, และ Systems จะถูก Register ลงไปใน World contract ซึ่งเป็นทางเข้าของแอปฯ
เมื่อ data ใน World ถูกบันทึกในฟอแมทมาตรฐาน ตัวMUD จะทำการ contract และ client state โดยไม่ต้องพึ่ง application-specific indexers หรือ network code เมื่อเข้าใจพื้นฐานแล้ว เรามาเจาะลึกถึงวิธีการสร้าง ส่วนต่างๆ ภายในเกมส์กันต่อ

เริ่มต้นสร้าง Components ขั้นแรกของการใช้ MUD สร้างแอปฯ คือการสร้างโมเดลเพื่อที่สะท้อน application state ในโลก VOXEL ทุกอย่างคือ บล็อก (หมายถึงกล่องๆ เหมือนเกมส์มายคร๊าฟ) ทุกๆ บล็อกจะมีตำแหน่ง (Position) และ ประเภท (Item) เช่น หิน หญ้า กำกับ สิ่งแวดล้อมกลางพวกนี้ไม่มีเจ้าของ
แล้วถ้าไอเท็มนั้นๆ มี user เป็นเจ้าของ เราก็สามารถใช้ OwnedBy Components ดูแลส่วนนี้ การแยกว่า Components ไหน เป็นของกลาง หรือมีเจ้าของ เราจะใส่ Logic ที่เป็น System เข้าไป (ขออธิบายแค่คร่าวๆ เพราะมันละเอียดมากไป)
สร้าง System ตัว system ก็เหมือนกฎฟิสิกส์ในโลกที่ของทุกสิ่งอยู่ใต้กฎเดียวกัน กฎฟิสิกส์ใน OP Craft แบ่งบล็อกเป็น 2 บล็อกวางกับบล็อกขุด โดยสร้าง Mine system ขึ้นมา เมื่อเรา Interact กับบล็อกในตำแหน่งใดๆ เพื่อขุดตัวบล็อกก็จะเปลี่ยนสถานะเป็นหินที่ถูกขุด และเปลี่ยนเราเป็นเจ้าของ
บล็อกวาง เหมือนวางหินเรียงเป็นบ้าน เราสร้าง Build System ขึ้นมา เมื่อเราวางบล็อกตำแหน่งใด ตัวบล็อกก็จะถูกเปลี่ยนตำแหน่งตามนั้น
สร้างระบบเชื่อมกับ Client ตัว Frontend ของ on-chain game ก็มีหน้าตาเหมือน VDO game ทั่วไป MUD จะทำหน้าที่เป็น Backend Engine ที่ทำงานร่วมกับ Rendering Engine ตัวไหนก็ได้ ของ OP Craft ใช้ fenomas' NOA engine

MUD จะทำการซิ้ง State ของทุก component contracts ไปยัง client รวมทั้ง Typescript-based reactive ECS library ที่มี Data บน Client แบบเดียวกับบล็อกเชน ซึ่งจะทำให้ Client สามารถอัปเดต State ของ Component ต่างๆ ได้ เท่านี้เราก็ได้เกมส์ที่สร้างได้ไม่จำกัดตามจินตนาการของเราแล้ว

มันคงจะบ้าเกินไป ถ้าบอกว่าทีมสร้างบล็อกทุกบล็อก ภูเขาทุกลูกด้วยมือ แต่พวกเขาใช้ algorithm ในการสร้างที่เรียกว่า Perlin Noise โดยใช้ WebAssembly สำหรับ client renderer และต้องแมทชิ่ง Solidity สำหรับ contracts ซึ่ง MUD มีฟีเจอร์ทั้งสองอย่างนี้ในตัว วะวะวะว้าววว

มีเขาแล้วก็ต้องมีเธอ หืมมมมม !!! มีเขาแล้วก็ต้องมีมหาสมุทรต่างหากล่ะ

เมื่อมีทูลแล้วก็มาเคลื่อนภูเขาทั้งลูกด้วยโค้ดกัน

แต่ภูเขาก่อนหน้ามันไม่เร้าใจ มันต้องมีสูงต่ำ มากกว่านี้สิถึงจะสนุก สิ่งนี้ก็สามารถใช้ Perlin Noise ในการสร้างแพทเทิร์นที่แตกต่างกันได้

ถ้าภูเขาจาก Perlin Noise มันดูเรียบง่ายไป ก็มาทำให้ Texture ดูแพงขึ้นโดยการใช้ Octave (เหมือนดนตรี ที่ยิ่ง Octave เยอะ เพลงก็ยิ่งมีมิติขึ้น)

เพราะฤดูกาล เปลี่ยนแปลงได้เหมือนใจคน ทำไมโลก Voxel ของเราจะมีสภาพพื้นที่และฤดูที่แตกต่างบ้างไม่ได้ จะฤดูร้อนแบบพาราด็อก ฤดูที่ฉันเหงาแบบ Flure ก็ใส่มาเลย (กินกาแฟเยอะจะเลอะเทอะหน่อยนะ)

หน้าตา Terrain ที่แตกต่างกัน

เนื้อเยอะไป เติมน้ำให้หน่อยจะได้ไม่น่าเบื่อ มาลองเติมแม่น้ำเข้าไปจะได้สดชื่นๆ


เติมบล็อกพิเศษ เช่นต้นไม้ ดอกไม้เข้าไป อยากดูวิธีสร้างแบบละเอียด เข้าไปดูต่อในนี้นะครับ http://opcraft.mud.dev
เท่านี้ก็เป็นอันเสร็จสิ้นกระบวนการสร้างโลก VOXEL ของคุณ ที่เหลือก็แค่เปิดให้ผู้เล่นเข้าไปร่วมทดลองสร้างอะไรใหม่ๆ สนุกๆ ในแบบเฉพาะตัว

ตัวเกมส์หลังจากเปิดให้ทดลองได้ 2 สัปดาห์ นี่คือผลงานของ Diggers, artists และ architects ที่พร้อมสร้างงานอาร์ตเป็นแลนด์มาร์กใหม่

สาย Engineers, scientists และ wizards ก็ใช่ย่อย ต่างออกตามหาวัตถุดิบใหม่ๆ ที่ต้องขุด ต้องเก็บ เพื่อมาคร๊าฟเป็นสิ่งของต่างๆ อย่างมันมือ
นี่คือความสนุกที่เรียกว่าเป็นแค่ Teaser เพื่อให้ Dev ได้เห็นทุกความเป็นไปได้ที่ OP Stack สามารถทำให้เกิดขึ้น เหลือแค่รอไอเดียสนุกๆ ของคุณที่จะเอามาทำให้เกิดขึ้นจริง ส่วนตัว รอเล่น Ragnarok Online แบบ On-Chain แล้ววววว ได้โปรดเอาไปทำให้ผมเล่นที
ใครอยากอ่านวิธีการสร้างอย่างละเอียด ไปอ่านต่อกันได้ที่นี่
ใน OP Craft อิฐทุกก้อน หญ้าทุกต้น ผืนน้ำทุกบล็อก และทุกแอคชั่น (เช่นเจาะหิน กระโดด) ถูกบันทึกไว้ใน Ethereum transaction ตัวเกมส์สร้างโดยใช้ MUD open-source on-chain game engine ที่สร้างโดยทีม @latticexyz ที่สามารถต่อยอดเป็นอะไรง่ายๆ หรือเกมส์ซับซ้อนก็ทำได้ไม่ติด
MUD เป็น Tool ที่สามารถช่วย Dev ในการสร้างโลกใหม่ ที่เป็น ownerless data namespaces ชื่อ Worlds และแยก Data กับ Logic ออกมาเป็น Components และ Systems ตัว Components คือ Contract ที่จะ Assign typed data packages ให้เป็น Entities ซึ่งแต่ละอันก็จะมี numeric ID ของตัวเอง
ตัว System คือตัวจัดเก็บ Logic และการ Modify data ของตัว Components ทั้ง Entities, Components, และ Systems จะถูก Register ลงไปใน World contract ซึ่งเป็นทางเข้าของแอปฯ
เมื่อ data ใน World ถูกบันทึกในฟอแมทมาตรฐาน ตัวMUD จะทำการ contract และ client state โดยไม่ต้องพึ่ง application-specific indexers หรือ network code เมื่อเข้าใจพื้นฐานแล้ว เรามาเจาะลึกถึงวิธีการสร้าง ส่วนต่างๆ ภายในเกมส์กันต่อ

เริ่มต้นสร้าง Components ขั้นแรกของการใช้ MUD สร้างแอปฯ คือการสร้างโมเดลเพื่อที่สะท้อน application state ในโลก VOXEL ทุกอย่างคือ บล็อก (หมายถึงกล่องๆ เหมือนเกมส์มายคร๊าฟ) ทุกๆ บล็อกจะมีตำแหน่ง (Position) และ ประเภท (Item) เช่น หิน หญ้า กำกับ สิ่งแวดล้อมกลางพวกนี้ไม่มีเจ้าของ
แล้วถ้าไอเท็มนั้นๆ มี user เป็นเจ้าของ เราก็สามารถใช้ OwnedBy Components ดูแลส่วนนี้ การแยกว่า Components ไหน เป็นของกลาง หรือมีเจ้าของ เราจะใส่ Logic ที่เป็น System เข้าไป (ขออธิบายแค่คร่าวๆ เพราะมันละเอียดมากไป)
สร้าง System ตัว system ก็เหมือนกฎฟิสิกส์ในโลกที่ของทุกสิ่งอยู่ใต้กฎเดียวกัน กฎฟิสิกส์ใน OP Craft แบ่งบล็อกเป็น 2 บล็อกวางกับบล็อกขุด โดยสร้าง Mine system ขึ้นมา เมื่อเรา Interact กับบล็อกในตำแหน่งใดๆ เพื่อขุดตัวบล็อกก็จะเปลี่ยนสถานะเป็นหินที่ถูกขุด และเปลี่ยนเราเป็นเจ้าของ
บล็อกวาง เหมือนวางหินเรียงเป็นบ้าน เราสร้าง Build System ขึ้นมา เมื่อเราวางบล็อกตำแหน่งใด ตัวบล็อกก็จะถูกเปลี่ยนตำแหน่งตามนั้น
สร้างระบบเชื่อมกับ Client ตัว Frontend ของ on-chain game ก็มีหน้าตาเหมือน VDO game ทั่วไป MUD จะทำหน้าที่เป็น Backend Engine ที่ทำงานร่วมกับ Rendering Engine ตัวไหนก็ได้ ของ OP Craft ใช้ fenomas' NOA engine

MUD จะทำการซิ้ง State ของทุก component contracts ไปยัง client รวมทั้ง Typescript-based reactive ECS library ที่มี Data บน Client แบบเดียวกับบล็อกเชน ซึ่งจะทำให้ Client สามารถอัปเดต State ของ Component ต่างๆ ได้ เท่านี้เราก็ได้เกมส์ที่สร้างได้ไม่จำกัดตามจินตนาการของเราแล้ว

มันคงจะบ้าเกินไป ถ้าบอกว่าทีมสร้างบล็อกทุกบล็อก ภูเขาทุกลูกด้วยมือ แต่พวกเขาใช้ algorithm ในการสร้างที่เรียกว่า Perlin Noise โดยใช้ WebAssembly สำหรับ client renderer และต้องแมทชิ่ง Solidity สำหรับ contracts ซึ่ง MUD มีฟีเจอร์ทั้งสองอย่างนี้ในตัว วะวะวะว้าววว

มีเขาแล้วก็ต้องมีเธอ หืมมมมม !!! มีเขาแล้วก็ต้องมีมหาสมุทรต่างหากล่ะ

เมื่อมีทูลแล้วก็มาเคลื่อนภูเขาทั้งลูกด้วยโค้ดกัน

แต่ภูเขาก่อนหน้ามันไม่เร้าใจ มันต้องมีสูงต่ำ มากกว่านี้สิถึงจะสนุก สิ่งนี้ก็สามารถใช้ Perlin Noise ในการสร้างแพทเทิร์นที่แตกต่างกันได้

ถ้าภูเขาจาก Perlin Noise มันดูเรียบง่ายไป ก็มาทำให้ Texture ดูแพงขึ้นโดยการใช้ Octave (เหมือนดนตรี ที่ยิ่ง Octave เยอะ เพลงก็ยิ่งมีมิติขึ้น)

เพราะฤดูกาล เปลี่ยนแปลงได้เหมือนใจคน ทำไมโลก Voxel ของเราจะมีสภาพพื้นที่และฤดูที่แตกต่างบ้างไม่ได้ จะฤดูร้อนแบบพาราด็อก ฤดูที่ฉันเหงาแบบ Flure ก็ใส่มาเลย (กินกาแฟเยอะจะเลอะเทอะหน่อยนะ)

หน้าตา Terrain ที่แตกต่างกัน

เนื้อเยอะไป เติมน้ำให้หน่อยจะได้ไม่น่าเบื่อ มาลองเติมแม่น้ำเข้าไปจะได้สดชื่นๆ


เติมบล็อกพิเศษ เช่นต้นไม้ ดอกไม้เข้าไป อยากดูวิธีสร้างแบบละเอียด เข้าไปดูต่อในนี้นะครับ http://opcraft.mud.dev
เท่านี้ก็เป็นอันเสร็จสิ้นกระบวนการสร้างโลก VOXEL ของคุณ ที่เหลือก็แค่เปิดให้ผู้เล่นเข้าไปร่วมทดลองสร้างอะไรใหม่ๆ สนุกๆ ในแบบเฉพาะตัว

ตัวเกมส์หลังจากเปิดให้ทดลองได้ 2 สัปดาห์ นี่คือผลงานของ Diggers, artists และ architects ที่พร้อมสร้างงานอาร์ตเป็นแลนด์มาร์กใหม่

สาย Engineers, scientists และ wizards ก็ใช่ย่อย ต่างออกตามหาวัตถุดิบใหม่ๆ ที่ต้องขุด ต้องเก็บ เพื่อมาคร๊าฟเป็นสิ่งของต่างๆ อย่างมันมือ
นี่คือความสนุกที่เรียกว่าเป็นแค่ Teaser เพื่อให้ Dev ได้เห็นทุกความเป็นไปได้ที่ OP Stack สามารถทำให้เกิดขึ้น เหลือแค่รอไอเดียสนุกๆ ของคุณที่จะเอามาทำให้เกิดขึ้นจริง ส่วนตัว รอเล่น Ragnarok Online แบบ On-Chain แล้ววววว ได้โปรดเอาไปทำให้ผมเล่นที
ใครอยากอ่านวิธีการสร้างอย่างละเอียด ไปอ่านต่อกันได้ที่นี่
thesleeper (✨🔴_🔴✨)
thesleeper (✨🔴_🔴✨)
No comments yet