game blog w16-1

 

Summary 

 Centent ใน week ที่ 16-1 มีดังนี้ 
 - Human player turn to ghost when died  
 - Ghost bot (path finding with project A*)  

Human player turn to ghost when died  

เราจะมาทำให้คนที่ถูกผีไลล่าเมื่อถูกล่าจะกลายเป็นผีกัน

เมื่อผีทำการ Despawn Player (ไลล่าผู้เล่นได้สำเร็จ) จะทำการ spawn ผีที่จะคอยไล่ล่าผู้เล่นคนอื่นๆต่อไปโดยใช้ pathfinding





Ghost bot (path finding with project A*)  

เป็น Package สำหรับการทำ AI path finding หรือการทำ bot ให้สามารถเคลื่อนหลบหลีกสิ่งกีดขวางเพื่อให้ไปถึงจุดที่กำหนดไว้ได้ โดยเรานำมาใช้กับ Ghost bot เพื่อให้เป็น bot ไปไล่ตามคนที่ยังมีชีวิตรอดอยู่
พวกเราทำตาม Tutorial นี้ https://youtu.be/63zWZ2rJZ68
สามารถไปอ่านเพิ่มเติมได้ที่ Project A*







game blog w15-2

 

Summary 

 Centent ใน week ที่ 15-2 มีดังนี้ 
 - New GhostPrefab Skill + Spawn + hunt player  
 - Game Lobby to GameMap Scene through LobbyManager  

New GhostPrefab

เราจะมาเพิ่มตัวละครผีไว้ล่าผู้เล่น และสกิลให้กับตัวละครของเรากัน



และให้ผีน้อย Getcomponent skill_cast และ IsHit_Girl เมื่อกดสกิลจะทำให้น้องผีวิ่งเร็วขึ้นเพื่อไล่ล่า และ IsHit_Girl จะทำหน้าที่ RayCast Object ว่าเมื่อมีการชนกันจะเป็นการให้ผีกินผู้เล่นเข้าไป




Game Lobby to GameMap

เมื่อกดปุ่ม Play จะทำการย้ายจากหน้า Play ไป Game Map

เมื่อกด Start จะเรียกใช้ Method ChangePositionServerRpc โดยจะทำให้ Client ที่เป็น hostย้ายไป game-
map และเปลี่ยนขนาด view ให้กว้างขึ้น

จากนั้นจะไปเรียกใช้ method ChangePositionClientRpc เพื่อทำให้ Client คนอื่นๆย้ายไปด้วย



จากนั้นจะไปเรียกใช้ StartGameClientRpc(); เพื่อที่จะปิด UI ปุ่ม PLAY และเปิด UI ปุ่ม Skill


ผลลัพน์ที่ได้ : 








game blog w15-1

 

Summary 

 Centent ใน week ที่ 15-1 มีดังนี้ 
 - Unity Multiplayer invisibility skill update 
 - Unity Test Framework  

Unity Multiplayer invisibility skill update 

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



เมื่อ player กดปุ่มสกิลขวาล่างจะมาเรียกใช้ method  ที่อยู่ใน ServerRPC และไปเรียกใช้ 
Local_invisibilityClientRpc จะทำให้ Sprite ของตัว Girl renderer นั้นหายไปจาก map และเมื่อครบ 2 วิจะไป Invoke ClientRpc

เมื่อครบ 2วิจะทำไปเรียกใช้ invisibilityEnded ที่ทำให้ animated ตอนใส่เสื้อคุมหายไปและตัว player กลับมา



และ Local_invisibilityClientRpc จะทำหน้าที่ให้ Client คนอื่นๆเห็นคนที่กดหายตัว ยกเว้นคนที่กด 
ที่จะเปลี่ยน เป็นใส่ผ้าคุมแทน




ผลลัพน์ที่ได้ : 
ผู้เล่นที่กด Skill 


ผู้เล่นที่เห็นคนอื่นกดสกิล



Unity Test Framework

สามารถไปอ่านบทความนี้ได้โดยคลิก Unity Test Framework  ที่เขียนโดยนาย JedsadaSJP











game blog w14-1

 

Summary 

 Centent ใน week ที่ 14-1 มีดังนี้ 
 - Unity multiplayer continued (Create HUD)
 - New Scene And Tilemap  

Unity multiplayer continued (Create HUD)

เรา week14-1 เราจะมาเพิ่ม Network Manager HUD ที่ใช้ในการสร้าง Lobby เกมของเรา (Host) และให้ผู้เล่น (Client) เข้ามาใน Lobby ของเรากัน



โดยเมื่อเริ่มเกมจะทำการสร้าง GUI ที่มี Label บอกว่าช่องที่ให้ textfield นั้นจะให้ Input เป็น Address และ Port และให้ textfield ใส่ค่าเริ่มต้นเป็น 127.0.0.1 และ 7777


และเมื่อกดปุ่ม Host Server และ Client จะไปเรียกใช้ method ต่างๆเช่น StartHost StartServer และ 
StartClient ที่อยู่ใน class network manager และ สร้าง gui label ที่โชว์ ip ของเน็ตที่ปัจจุบันที่ใช้อยู่

New Scene And Tilemap  (Game Design)

ในส่วนนี้จะทำแยกไปใน blog Game design หากสนใจที่จะดูเกี่ยวกับการ design ui low-fi และ hi-fi สามารถเข้าไปดูได้ที่ blog Unity Game Design











Unity Game Design

Unity Game Design

ในส่วนของ Game Design นั้นเราได้ออกแบบไว้คือเป็นเกมแนววิ่งไล่จับที่จะมีผู้เล่นสองฝั่งคือ ฝั่งหนี(คน) และ ฝั่งผี(หมาป่า) โดยจะมีผู้เล่นในเกม 5 คน แบ่งเป็น คน4 และหมาป่า 1 เมื่อเริ่มเกมแล้วถ้าหากเวลาหมดแล้วฝ่ายคนยังเหลือรอดจะถือว่าฝ่ายคนชนะ แต่ถ้าฝ่ายผี(หมาป่า) จับคนได้หมดฝ่ายหมาป่าจะเป็นฝ่ายชนะทันที

 Low-Fidelity UI

นี่เป็น Low-Fidelity UI ของการออกแบบ

โดยแต่ละหน้าจะมีดังนี้

Mainmenu



Settings


Credits






Find Game

Lobby

Gameplay




Player1 win


Player2 win




 High-Fidelity UI

นี่เป็น UI และ Scene ต่างๆที่เราสร้างเสร็จหลังจากได้ออกแบบไปแล้ว

Mainmenu

Settings


Credits



Findgame


Hostgame

Lobby

Gameplay




Human win



Ghost(Werewolf) win










JoyStick Movement

game blog w13-2

 

Summary 

 Centent ใน week ที่ 13-2 มีดังนี้ 
 - Unity multiplayer tutorial  
 - Mobile input joystick movement

Unity multiplayer tutorial 

Netcode คืออะไร เป็น Package ที่มีไว้สำหรับการสร้างเกมแบบ multiplayer ผ่าน network ที่สร้างมาสำหรับ Unity อ่านเพิ่มเติม About Netcode for GameObjects

เพิ่ม Netcode ใน project manager


เพิ่ม NetworkManager เข้าไปใน Hierarchy และเพิ่ม component Network Manager เข้าไป



เปลี่ยน Protocol Type เป็น unity Transport


เพิ่ม Network Object ให้กับตัว Pacman และ เพิ่ม prefab paceman เข้าไปใน Networkmanager

สำหรับการทดสอบระบบ multiplayer นั้นเราจำเป็นที่จะต้องเปิด Server หนึ่งหน้าจอ และอีกจอเป็น Client ที่จะ join เข้ามา เราจึงทดลองสร้าง NetworkCommandLine เพื่อให้ทดลองการเปิด Server Host Client ผ่านการพิมพ์คำสั่งบน command line ไว้สำหรับทดลอง spawn prefab ใน map



ทดลองเขียน command line เพื่อเปิด server และ client

ผลลัพธ์ที่ได้

Mobile joystick movement 

สามารถอ่าน blog joystick ได้ในอีกส่วนที่ทางเรากลุ่ม 1 ได้จัดทำไว้ที่ Joystick Movement


ปัญหาที่ผมเจอ : ตอนนี้ สามารถให้ผูเล่นเปิด host และ client ได้แล้วแต่ว่า ผู้เล่นทั้งคู่ใน map เวลาขยับนั้นยังไม่ตรงกัน เช่น player1 ขยับไปซ้ายแล้ว แต่ในหน้าจอ player2 ยังเห็น player1 อยู่เฉยๆ








game blog w13-1

Summary 

 Centent ใน week ที่ 13-1 มีดังนี้ 
 - วิธีการติดตั้งและใช้งาน Plastic SCM
 - พื้นฐานของการทำ Animated Sprite

Plastic SCM

Plastic SCM คือ Version Control System อันนึง มีไว้สำหรับบันทึกเวอร์ชั่นต่าง ๆ ของการพัฒนาแอพลิเคชันของเรา เสมือนเป็น back up เพื่อให้เราสามารถย้อนเวอร์ชันไปเวอร์ชันเก่า ๆ ได้ นอกจากนี้ยังสามารถนำมาใช้สำหรับการพัฒนาเกมแบบเป็นทีมได้ เพราะสามารถที่จะ commit code หรือสิ่งเราทำไปให้คนในทีมได้ง่ายขึ้น
โดย Plastic SCM นั้นเป็น Version Control System ที่มีมาให้แล้วใน Unity Editor เราจึงเลือกใช้ Plastic SCM สามารถอ่านเพิ่มเติมได้ที่นี่


จากนั้นก็ทำการ Login or sign up และเมื่อ login เสร็จก็ให้ทการ create workspace



Commit โปรเจ็คของเราเข้าไปที่ PlasticSCM

เราสามารถเพิ่มคนที่จะทำงานร่วมกันกับโปรเจ็คของเราได้


พื้นฐานการทำ Animated Sprite และ Movement เบื้องต้น

ใน Object Pacman เพิ่ม Component Animated Sprite ที่จำเปลี่ยน animated ด้วยการเปลี่ยน sprite renderer ให้ขยับปาก

สร้าง attribute Sprite เก็บ ที่ใช้เก็บ sprite ที่เราต้องการให้ loop ทำ animated โดยเราจะกดหนดให้ index เป็น 4 เพื่อเก็บ element 4ตัวของ sprite pacman เอามา loop




สร้าง method ที่เมื่อมีการเรียกใช้  จะทำการ เปลี่ยน spriteRenderer เป็น sprite element index ที่
(AnimationFrame) โดยเพิ่มจาก 0 ++ ไปจนถึง 4 และ reset เป็น 0




ผลลัพน์ที่ได้ก็คือ :

















game blog w16-1

  Summary   Centent ใน week ที่ 16-1 มีดังนี้   - Human player turn to ghost when died    - Ghost bot (path finding with project A*)   Human...