ภาพเคลื่อนไหว Minecraft มีการฮาร์ดโค้ดในเกมหรือไม่? [ปิด]


12

ฉันอยากรู้ว่าระบบอนิเมชั่นทำงานอย่างไรใน minecraft ฉันรู้สึกว่า mobs ทั้งหมดนั้นถูก hardcoded ลงในเกม ทำรอยบากนั่งที่นั่นและสร้างเมทริกซ์สำหรับกระดูกอนิเมชั่นด้วยมือทั้งหมดหรือไม่?

ฉันชอบสร้างเกมขึ้นมาใหม่เพื่อความสนุกฉันอยากรู้ว่าเขาทำเช่นนี้ได้อย่างไร ถ้าเขาทำ hardcode ให้พวกเขาจริงๆ ... มีวิธีที่ดีกว่าไหม?


2
ทำไมคุณถึงคิดว่าเขาอาจมีภาพเคลื่อนไหวแบบฮาร์ดโค้ด
Ali1S232

ดูเหมือนว่าคำถามนี้สามารถตอบได้โดย Notch เท่านั้น
MichaelHouse

9
ทำไมคุณถึงสนใจว่า Minecraft ทำได้อย่างไร? คุณมีความคิดเกี่ยวกับวิธีการทำสิ่งเดียวกันด้วยวิธีอื่นหรือไม่?
Tetrad

1
minecraftforum.net/topic/361430-181smp-smart-movingผู้สร้าง mod นี้อาจมีคำตอบให้คุณ แต่แอนิเมชันไม่ใช่ส่วนของรหัส minecraft ที่ฉันเคยดูมาก่อน
James

1
ฉันเคยดูรหัส MCP มาก่อนและฉันแน่ใจว่าฉันจำได้ 99% ว่าภาพเคลื่อนไหวที่เขียนโค้ดยาก ฉันไม่มี minecraft (หรือแม้แต่ Eclipse) ในการตรวจสอบอีกต่อไป
BlueRaja - Danny Pflughoeft

คำตอบ:


18

อย่างที่คนอื่นพูดใช่ทั้งนางแบบและอนิเมชั่นนั้นเป็นโค้ดที่ยาก หากคุณต้องการที่จะดูว่าสิ่งนี้ทำไปที่Minecraft Coder Pack wiki

แพคเกจถูกสร้างขึ้นเพื่อช่วยผู้สร้าง mod ในการถอดรหัส, เปลี่ยนและคอมไพล์คลาส Minecraft ใหม่ คำแนะนำจะรวมอยู่ในไฟล์ readme ซึ่งมาพร้อมกับแพ็คเกจ แพคเกจประกอบด้วยสคริปต์ในการถอดรหัส, คอมไพล์ใหม่และ reobfuscate เกมและเซิร์ฟเวอร์

คลาสที่คุณต้องการดูคือ: ModelBase, ModelBiped และ ModelRenderer

ModelBiped มีฟังก์ชั่นต่อไปนี้ซึ่งทำแอนิเมชั่นแอนดรอยด์:

public void render(Entity entity, float time, float f1, ...)
{
    setRotationAngles(time, f1, ...);
    ...
}

public void setRotationAngles(float time, float f1, ...)
{
    ...
    bipedRightArm.rotateAngleX = MathHelper.cos(time * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
    bipedLeftArm.rotateAngleX = MathHelper.cos(time * 0.6662F) * 2.0F * f1 * 0.5F;
    ...
}

การแกว่งแขนเป็นฟังก์ชั่นโคไซน์ แขนขวาถูกชดเชยด้วย PI เพื่อให้แกว่งไปในทิศทางตรงกันข้าม

กราฟแขนแกว่ง

ฉันหวังว่าคำตอบของคุณ =)


หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีการดัดแปลง Minecraft จริง ๆ ลองอ่านคำถามนี้:

ฉันจะเพิ่มม็อบที่กำหนดเองใน Minecraft ได้อย่างไร


Sis! การหมุนแบบยุคลิด :(
โจนาธานดิกคินสัน

8

นางแบบใน Minecraft นั้นยากที่จะกำหนดรหัส ไม่มีความคิดของลำดับชั้นบล็อก (เฉพาะรายการบล็อก) ซึ่งหมายความว่าแอนิเมชันจะถูกดำเนินการตามขั้นตอน (ในลักษณะพื้นฐานมาก) หรือค่าตายตัวพร้อมการแก้ไข

มีบรรณาธิการไม่กี่รุ่นสำหรับ Minecraft เช่น Techne หรือ FMCModeler ที่อนุญาตให้นำเข้า / ส่งออกรหัสโมเดล Minecraft สำหรับ mods ได้ แต่พวกเขาไม่สนับสนุนภาพเคลื่อนไหวเนื่องจากอาจมีการจัดการที่แตกต่างกันสำหรับแต่ละรุ่น

นี่คือตัวอย่างรวดเร็วที่สร้างขึ้นด้วย FMCModeler:

//variables init:
public ModelRenderer box;

//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);

//render:
box.render(f5);

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

ขณะนี้ฉันกำลังสร้างเครื่องมือสร้างเกมแบบผู้เล่นหลายคนซึ่งทำเช่นนั้น (เหนือสิ่งอื่นใดhttp://craftstud.io/ ) มันอนุญาตให้สร้างแบบจำลองพื้นผิวแบบคงที่ที่ซับซ้อนแล้วและอีกมากมายกำลังมาถึง

นี่คือรูปแบบที่ซับซ้อนที่สร้างขึ้นด้วย CraftStudio อย่างที่คุณเห็นบล็อกถูกจัดเรียงไว้ในต้นไม้ทางด้านขวา: http://i.stack.imgur.com/FRQeV.png

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

  • ID ไม่ซ้ำกัน
  • ID โหนดพาเรนต์
  • ตำแหน่ง (ส่งผลกระทบต่อลูกหลาน)
  • มาตราส่วน (ส่งผลกระทบต่อลูกหลาน)
  • มุม (ส่งผลกระทบต่อลูกหลาน)
  • ออฟเซ็ตจากจุดหมุน
  • ขนาดบล็อก
  • Block texture offset (ชดเชยพิกัด UV สำหรับพื้นผิว)

ฉันวางแผนที่จะเพิ่มการรองรับภาพเคลื่อนไหวโดยการจัดเก็บแผนที่พร้อมชื่อภาพเคลื่อนไหวเป็นกุญแจและรายการของเฟรมหลักเป็นค่า แต่ละเฟรมจะเชื่อมโยงกับบล็อกและค่าในการเคลื่อนไหว ระหว่าง keyframes ค่าควรถูกแก้ไข (ตรงเชิงเส้นสำหรับตำแหน่งหรือเป็นทรงกลมสำหรับมุมค้นหา lerp และ slerp)


0

แบบจำลองบล็อก Minecraft นั้นไม่ได้ฮาร์ดโค้ดในเกมตั้งแต่ 1.8 และสามารถแก้ไขได้โดยใช้ชุดทรัพยากร ระบบการสร้างแบบจำลอง JSON นั้นค่อนข้างเข้าใจง่ายและมีโมเดลอยู่ที่ / models / block จากนั้นคุณสามารถดูรหัสเพื่อดูว่ามันตีความรุ่น JSON อย่างไร

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