วิธีการจัดการความเร็วที่แตกต่างกันของการกระทำในเกม RogueLike?


14

วิธีการจัดการความเร็วที่แตกต่างกันของการกระทำในเกม RogueLike?

สิ่งที่ฉันหมายถึงคือเกมแบบอิงรอบอาจมีนักแสดงที่มีความเร็วแตกต่างกันขึ้นอยู่กับการกระทำและคุณลักษณะอื่น ๆ นักแสดงจะทำการกระทำ / เปลี่ยนได้อย่างมีประสิทธิภาพมากกว่าคนอื่นหากพวกเขามีความเร็วมากกว่าหรือไม่

วิธีการตรวจสอบเมื่อนักแสดงควรจะสามารถดำเนินการ (เปิดตาราง?)

ดูเหมือนว่ามีวิธีการที่แตกต่างกันในการทำมัน? คุณอธิบายบางอย่างด้วยอัลกอริทึมได้ไหม?


7
ฉันรู้สึกว่าถ้าคุณอธิบายรายละเอียดเกี่ยวกับคุณสมบัติที่คุณต้องการอัลกอริทึมจะชัดเจน
Tetrad

ดังที่ Tetrad พูดแล้วคุณหมายถึงอะไรด้วย "ความเร็วของการกระทำ"? โดยปกติแล้ว Roguelikes จะเป็นแบบเลี้ยวดังนั้นฉันจึงไม่สามารถเห็นได้ว่าสิ่งนี้สามารถนำไปใช้กับพวกเขาได้อย่างไร
Laurent Couvidou

2
แม้แต่ในเกมที่เล่นแบบเลี้ยวบางหน่วยงานจะเคลื่อนไหวเร็วขึ้นหรือช้าลงและเกมอื่น ๆ จะมีการเลี้ยวมากหรือน้อยเมื่อเทียบกับเกมอื่น ฉันแก้ไขคำถาม
Klaim

3
@Patrick Hughes Nethack หนึ่งในโร๊คไลค์ที่เก่าแก่ที่สุดและเป็นที่นิยมมากที่สุดมีคุณสมบัติความเร็วที่สำคัญมาก nethackwiki.com/wiki/Speed
Harry Stern

1
@HarryStern ฉันเล่นได้ไม่ดีตลอดเวลานี้เหรอ? นั่นอาจอธิบายบางสิ่ง ... =)
Patrick Hughes

คำตอบ:


12

ในเกมโร๊คไลค์ทรราชของฉันฉันใช้ระบบคะแนนแอคชั่นและการจัดอันดับความเร็ว

โดยทั่วไป:

  • การกระทำส่วนใหญ่มีค่า AP เท่ากับ 100
  • สิ่งมีชีวิตส่วนใหญ่มีความเร็ว 100

จากนั้นวนเกมจะเป็นดังนี้

  • ฮีโร่ดำเนินการ
  • เวลาที่ผ่านไปถูกคำนวณเป็น hero action AP cost * 100 / hero speed
  • สิ่งมีชีวิตทั้งหมดได้รับ AP เท่ากับ creature speed * elapsed time / 100
  • สิ่งมีชีวิตทำการกระทำและลบ AP ออกจนกว่า AP จะเป็น <= 0
  • ทำซ้ำ

ระบบนี้ทำงานโดยรวมได้ดีมากตัวอย่างคุณสมบัติที่ดี:

  • หากคุณมีฮีโร่ที่เร็วมาก (อาจเป็นเพราะโบนัสความเร็วเวทย์มนตร์) คุณสามารถรับการเคลื่อนไหวได้หลายครั้งก่อนที่สิ่งมีชีวิตแต่ละตัวสามารถเคลื่อนไหวได้ (มันเป็น APs จะเป็นค่าลบสำหรับสองรอบเพราะเวลาที่ผ่านไปจะน้อย)
  • คุณสามารถดำเนินการบางอย่างมากขึ้นหรือน้อยลงด้วยการเปลี่ยนแปลงต้นทุน AP
  • คุณสามารถหน่วงเวลาสิ่งมีชีวิตได้โดยการลบ AP หรือเพิ่มพลังครั้งเดียวโดยการเพิ่ม AP

พยายามห่อหัวของฉันรอบนี้ หากคุณมีผู้เล่น 1 คนและผู้เล่น 4 คน นี่ไม่ใช่สิ่งที่ทำให้ผู้เล่นคนสุดท้ายมีเวลาผ่านไปมากขึ้นเรื่อย ๆ ทำให้เขาสามารถกระทำได้ 4 ครั้งและครั้งที่สองประมาณ 8 ครั้ง?
Dr.Denis McCracleJizz

4

คะแนนการกระทำ ให้ "ความเร็ว" แต่ละเอนทิตี้เพื่อให้นักแสดงได้รับคะแนนมากขึ้นในแต่ละเทิร์น ทำให้แต่ละการกระทำใช้จำนวนคะแนนเฉพาะเพื่อทำให้เสร็จและลบจำนวนนั้นออกจากคะแนนของผู้เล่นในเทิร์นนั้นเมื่อเขาทำการกระทำ หากการกระทำมีคะแนนมากกว่าผู้เล่นออกให้ทำเครื่องหมายว่า "เสร็จสมบูรณ์บางส่วน" แล้วปล่อยให้เขาทำจนครบรอบถัดไป


2

คุณหมายถึงการมีการกระทำหลายรอบหรือไม่ (เช่นนอนเป็น 50 รอบ)?

สิ่งที่ฉันจะทำคือเก็บวัตถุ player.currentAction currentAction อาจมีจำนวนการดำเนินการที่จะต้องใช้ความละเอียดของการดำเนินการคืออะไรและรายการของรัฐที่ยกเลิกการดำเนินการ (ตกอยู่ในอันตรายถูกโจมตีร้อนแรงเกินไป ฯลฯ ) ทุกตาก่อนที่เราจะตรวจสอบอินพุตของผู้เล่นเราจะตรวจสอบเพื่อดูว่าผู้เล่นอยู่ในระหว่างการดำเนินการหรือไม่จากนั้นทำบางสิ่งบางอย่างเช่น ...

if(!player.currentAction.interrupted())
{
 if(player.currentAction.complete() == true)
   {
    player.currentAction.doAction(); //Some actions, like casting a spell, would have something happen here. Others, like sleeping, may or may not, depending on how you coded it.
    player.currentAction = null;
   }
else player.currentAction.decreaseTimer(); //Decrease our timer by one.
}
else 
{
 player.currentAction.interrupt(); //Let the player know he's been interrupted. Bungle the spell, cancel sleep, etc.
 player.currentAction = null;
}

2

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

เมื่อมีนักแสดงหลายคน เกมเลื่อนไปข้างหน้าด้วยการติ๊กจนกว่าจะมีใครจ่ายราคา AP ณ จุดนี้การกระทำนี้จะถูกดำเนินการ

วิธีการนี้คล้ายกับ @ mikera's เท่านั้นที่ไม่มี APs เชิงลบ


นี่เป็นเรื่องที่ยุ่งเหยิงมากเพราะคุณต้องเก็บการกระทำ "เจตนา" ของสิ่งมีชีวิต การกระทำบางอย่างขึ้นอยู่กับสถานะที่อาจเปลี่ยนแปลงก่อนที่ม็อบจะได้คะแนนสะสมเพียงพอ
Warwick Allison

อาจจะไม่สมบูรณ์แบบ แต่สะท้อนถึงชีวิตจริงเมื่อคุณตัดสินใจที่จะตีคุณต้องแกว่งก่อนแล้วจึงตี - ดังนั้นจึงเป็นการเตรียมการตัดสินใจซึ่งเป็นสิ่งที่ระบบนี้อนุญาต นอกจากนี้ยังอนุญาตให้เลือกการดำเนินการบล็อกตามสถานการณ์จริง
zzandy

ฉันชอบที่จะไปในทิศทางอื่น: ม็อบเลือกการกระทำที่มีค่าใช้จ่ายของ n-ticks และจากนั้นไม่สามารถเลือกการกระทำใหม่ได้จนกว่า n-ticks จะผ่านไป มันสามารถนำมาใช้เป็นค่าเดียวที่ลดลงในแต่ละเห็บ
kitsu.eb

-1

เวลาความละเอียดสูง

หากการชกจะใช้เวลา 400 รอบและการเตะเตะ 1,000 ครั้งฉันสามารถต่อยคุณอย่างน้อยสองครั้งก่อนที่คุณจะเตะฉันและฉันสามารถต่อย 5 ครั้งตามเวลาที่คุณเตะฉันสองครั้ง

คุณสามารถควบคุมได้ว่าจะต้องใช้เวลานานแค่ไหน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.