คำถามติดแท็ก javascript

"JavaScript (บางครั้งตัวย่อ JS) เป็นภาษาสคริปต์ที่ใช้ต้นแบบซึ่งเป็นแบบไดนามิกพิมพ์อย่างอ่อนและมีฟังก์ชั่นชั้นหนึ่งมันเป็นภาษาแบบหลายกระบวนทัศน์สนับสนุนรูปแบบการเขียนโปรแกรมเชิงวัตถุ จากวิกิพีเดีย http://en.wikipedia.org/wiki/JavaScript

3
เอ็นจิ้นเกมกระดานออนไลน์ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันต้องการสร้างเกมกระดานออนไลน์ ฉันสามารถใช้เครื่องมืออะไรในการเขียนเกมและทำให้คนจำนวนมากเข้าถึงได้ง่ายที่สุดเท่าที่จะทำได้? ฉันต้องการให้สามารถเข้าถึงได้อย่างกว้างขวางที่สุดเท่าที่จะทำได้ดังนั้นจึงเป็นการดีที่สุดหากส่วนต่อประสานผู้ใช้จะทำงานในเบราว์เซอร์ไม่ใช่ในแอปที่ดาวน์โหลดแยกต่างหาก ในทำนองเดียวกันควรข้ามแพลตฟอร์มไม่ จำกัด เพียงแพลตฟอร์มเดียว JavaScript / HTML ล้วนๆจะดีที่สุดเพราะจะช่วยให้สามารถใช้งานบน iPad ได้เช่นกันแม้ว่า Flash หรือ Java อาจยอมรับได้ Silverlight ไม่มีส่วนแบ่งการตลาด (ตัวอย่างเช่นฉันไม่ได้ติดตั้ง) และ XNA นั้นมี จำกัด มากเกินไป คุณสมบัติอื่น ๆ ที่น่าจะเป็นคุณสมบัติการแชทและสังคมที่ดี (หรือการรวมเข้ากับระบบแชทหรือโซเชียลเน็ตเวิร์คอื่น ๆ ), ลีดเดอร์บอร์ดหรือระบบทัวร์นาเมนต์และการรวมบอทเพื่อให้คู่ต่อสู้ AI ในกรณีที่มีผู้เล่นไม่พอ ตัวจับเวลาของเกมเพื่อให้ผู้คนเคลื่อนไหวในอัตราที่สมเหตุสมผลก็จะดีเช่นกัน การบันทึกเรคคอร์ดของเกมและการอนุญาตให้ผู้เล่นเล่นซ้ำและตรวจสอบบันทึกเพื่อการศึกษาก็ดีเช่นกัน แต่ฉันก็ไม่ได้คาดหวังมากนักเนื่องจากฟีเจอร์ประเภทเหล่านั้นมักจะปรากฏในเอนจิ้นที่สร้างขึ้นเฉพาะสำหรับเกมเช่นหมากรุกหรือโก การเป็นซอฟต์แวร์เสรี / โอเพนซอร์ซนั้นเป็นข้อดีอย่างมากดังนั้นฉันจึงสามารถขยายได้ด้วยตัวเองถึงแม้ว่าโซลูชั่นแบบปิดหรือโฮสต์อาจยอมรับได้หากพวกเขามีคุณสมบัติดังกล่าวเพียงพอหรือจัดหาวิธีการบางอย่างในการขยาย มีระบบใดที่ตรงกับความต้องการของฉันหรือไม่? หรือสิ่งใดก็ตามที่ใกล้เคียงกันแม้ว่าจะไม่ตรงกันทั้งหมด ระบบที่คล้ายกันซึ่งไม่ตรงกับความต้องการของฉันจะรวมถึง: …

1
รูปร่าง (สี่เหลี่ยม) ทำงานในต้นไม้สี่ทิศได้อย่างไร
ฉันถูกบอกว่าต้นไม้รูปสี่เหลี่ยมเป็นโครงสร้างข้อมูลที่เหมาะสำหรับเกมของฉัน แต่ฉันมีปัญหาในการทำความเข้าใจว่ารูปร่างทำงานอย่างไรภายในต้นไม้รูปสี่เหลี่ยม ฉันทำสิ่งนี้ใน JavaScript แต่ฉันคิดว่าคำถามเหล่านี้สามารถใช้ได้กับต้นไม้สี่ต้นในภาษาใด ๆ ผมคิดว่าผมเข้าใจส่วนใหญ่วิธีการขั้นพื้นฐาน (x, y) จุดและแทรกจุดงานในต้นไม้รูปสี่เหลี่ยมและที่ฉันสามารถทำมันบนกระดาษ นี่คือJSfiddleของการทดสอบของฉันกับจุด นอกเหนือจากกรณีหนึ่งการทดสอบของฉันกับคะแนนทำงานตามที่คาดไว้ แต่ความสับสนของฉันเริ่มต้นเมื่อรูปร่างเช่นสี่เหลี่ยมมีส่วนร่วม เมื่อคุณดึงข้อมูลจากต้นไม้รูปสี่เหลี่ยมด้วยรูปร่างมันจะตรวจสอบแต่ละจุดของรูปร่างและโหนดใดที่มันตกลงไป และการแทรกรูปร่างยังทำงานได้อย่างไรเมื่อมันยอมรับพารามิเตอร์ (x, y, width, height) สำหรับแต่ละรูปร่าง มันใช้ความกว้าง / ความสูงจากจุดเริ่มต้นในการคำนวณจุดมุมอื่น ๆ ซึ่งจะถูกแจกจ่ายไปยังโหนดที่เหมาะสม? หากรูปร่างที่แทรกเข้าไปมีสี่โหนดข้อมูลของรูปร่างนั้นจะถูกบันทึกลงในทั้งสี่โหนดหรือไม่ และเมื่อวิธีการดึงข้อมูลยอมรับรูปร่างเป็นพารามิเตอร์ (x, y, ความกว้างความสูง) สิ่งที่เกิดขึ้นจริง? มันเป็นครั้งแรกหรือไม่ที่จะเห็นว่ารูปร่างของโหนดนั้นจะขยายไปถึงถ้ามันถูกแทรกเข้าไปแล้วดึงวัตถุทั้งหมดของโหนดเหล่านั้นหรือไม่? ฉันมีJSfiddle ทำงานกับรูปร่างแต่ฉันสับสนอย่างมากกับผลลัพธ์ของการทดสอบของฉัน ฉันได้รับวัตถุที่ซ้ำกันที่ถูกส่งคืน! ตัวอย่างเช่นสี่เหลี่ยมจัตุรัสสีแดงนั้นเทียบเท่ากับพารามิเตอร์ที่ฉันกำลังเข้าสู่วิธีการดึงของฉัน ฉันคิดว่าเนื่องจากสี่เหลี่ยมสีแดงนี้ครอบคลุมทั้งสี่โหนดมันควรส่งคืนวัตถุทุกชิ้นในต้นไม้รูปสี่เหลี่ยม! แต่มันไม่ได้และฉันมีปัญหาในการหาเหตุผลเข้าข้างตนเองว่ามันจะกลับมา ฉันมีการทดสอบอื่น ๆ อีกจำนวนมากที่แสดงความคิดเห็นอยู่ในขณะนี้ แต่คุณสามารถยกเลิกการแสดงความคิดเห็นและเรียกใช้พวกเขาเพื่อดูผลลัพธ์ที่สับสนมากขึ้น! ถ้าฉันต้องการส่งคืนคะแนนทั้งหมดในต้นไม้รูปสี่เหลี่ยมฉันจะทำอย่างไร วิธีการดึงข้อมูลโดยใช้รูปร่างขนาดทั้งหมดของขอบเขต? ตัวอย่างเช่นดึง (0, 0, canvas.width, canvas.height)? ห้องสมุด …

3
ฉันจะปรับจำนวนและความท้าทายของศัตรูในคลื่นการโจมตีขณะที่เกมดำเนินไปได้อย่างไร
ขณะนี้ฉันกำลังสร้างเกมป้องกันที่ศัตรูจะวางไข่และโจมตีกองทัพของผู้เล่น มันคล้ายกับเกม Tower Defense ยกเว้นมีเพียงระดับเดียวเท่านั้น ศัตรูจะทำการวางไข่ต่อไปจนกว่าผู้ใช้จะตายหรือรวบรวมกองทัพขนาดใหญ่พอที่จะกำจัดศัตรูที่วางไข่ทันที (หวังว่ามันจะท้าทายพอที่จะไม่เกิดขึ้น) สิ่งที่ฉันกำลังดิ้นรนด้วยในขณะนี้คือวิธีที่จะทำให้เกมนี้ยากขึ้นเรื่อย ๆ และความน่าจะเป็นของการวางไข่ศัตรูในที่สุดถึง 100% จนถึงตอนนี้ฉันมีบางอย่างที่คล้ายกันดังต่อไปนี้ if(Math.random() < 1 - (1/elapsed_time) && spawnTimer <= 0 ){ spawnEnemy() spawnTimer = rand(); // random number between 1 and 3 } แต่ดูเหมือนว่าเริ่มต้นด้วยเกินไป ในขณะที่ฉันเพิ่งวางไข่ของศัตรูประเภทหนึ่งความคิดที่ว่าศัตรูที่รุนแรงจะเกิดขึ้นเมื่อเวลาผ่านไปเช่นกัน ฉันยังคิดว่าฉันต้องสุ่มspawnTimerเพิ่มอีกนิดและทำให้มันเร็วขึ้นเมื่อเวลาผ่านไป แต่ฉันไม่สามารถเห็นได้ว่าจะคิดอะไรตรรกะของฉันควรจะเป็นอย่างไรสำหรับส่วนทั้งหมดนี้ มีใครสามารถช่วยด้วยความคิดคร่าวๆของสูตรชนิดนี้หรือไม่? ขณะนี้ฉันใช้จาวาสคริปต์เพื่อเขียนเกม แต่เห็นได้ชัดว่ามันเกี่ยวกับแนวคิดมากกว่า

5
การตรวจจับการชนกันแบบ 2 มิติสำหรับเกมพินบอล
จนถึงตอนนี้ในเกมก่อนหน้านี้ฉันใช้การชนสองมิติแบบง่ายกับกล่องจากนั้นตรวจสอบที่ระดับพิกเซลเพื่อการชนกัน หากทำเกมพินบอลในเฟรมจำนวนมากลูกจะสัมผัสกับกำแพงหรือพื้นผิวอื่นดังนั้นจะมีวิธีอื่นหรือไม่?

1
gluLookAt ทำงานอย่างไร
จากความเข้าใจของฉัน gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); เทียบเท่ากับ: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); แต่เมื่อฉันพิมพ์ModelViewเมทริกซ์การเรียกเพื่อglTranslatef()ดูเหมือนจะทำงานไม่ถูกต้อง นี่คือข้อมูลโค้ด: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int …

3
เอ็นจิ้นที่ใช้ระบบเอ็นติตี้คอมโพเนนต์
หมายเหตุ: ฉันกำลังเขียนโปรแกรมนี้ใน Javascript แต่ควรเป็นภาษาที่ไม่เชื่อเรื่องพระเจ้าส่วนใหญ่ ฉันกำลังคิดที่จะเปลี่ยนเอนจินของฉันให้เป็น ECS ฉันได้รับแนวคิดพื้นฐาน ( หมายเหตุ: นี่ผิดโปรดดูคำตอบของฉัน ): หน่วยงานเป็นวัตถุเกม คอมโพเนนต์คือบิตของฟังก์ชัน ( reactToInput()) หรือสถานะ ( position) ซึ่งสามารถรับ "ติดกาว" กับเอนทิตี ระบบมีรายการเอนทิตีที่จัดการและอัปเดต แต่ฉันไม่แน่ใจว่าจะได้รับการใช้งานและรายละเอียดบางอย่าง ... คำถาม: ระบบสามารถทำงานกับเอนทิตีประเภทต่าง ๆ ได้หรือไม่? ฉันมักจะให้ตัวอย่างของคลาสที่เรียกSceneในเครื่องยนต์ของฉันและมันจะให้บริการตามวัตถุประสงค์นี้ทันทีเช่นกัน ฉากหนึ่งเป็นคอนเทนเนอร์ของวัตถุทั้งหมดที่สามารถแสดงผลอัปเดตส่งผลกระทบต่อการเรนเดอร์ (ไฟ) และบางทีในอนาคตแม้กระทั่ง2DSoundEmitterวัตถุ มีอินเทอร์เฟซระดับสูงเพื่อให้ผู้ใช้ไม่จำเป็นต้องกังวลเกี่ยวกับประเภทของวัตถุที่เขามีอยู่scene.add()และสิ่งต่าง ๆ ทั้งหมดนั้น ฉันตระหนักว่าSceneอาจเป็นระบบ ใช้เวลาในเอนทิตีจัดเก็บและจากนั้นสามารถเรียกวิธีการอัพเดตของพวกเขาและอาจทำการเปลี่ยนแปลงสถานะบางอย่าง แต่มีปัญหา: ตามที่ฉันได้อธิบายไว้ข้างต้นแล้วมันSceneสามารถเลี้ยงวัตถุประเภทต่าง ๆ ได้ ! ฉันควรทำอย่างไรในสถานการณ์ที่มีทั้งวัตถุที่สามารถถ่ายภาพได้ ("drawable") และไฟในนั้น ฉันควรจะตรวจสอบเอนทิตีก่อนทำการโต้ตอบหรือไม่ หรือฉันควรจะแก้ปัญหาในระดับที่ต่ำกว่า: สร้างLightSourceส่วนประกอบที่สามารถเพิ่มเข้าไปในวัตถุใด ๆและแสงก็จะเป็นนิติบุคคลที่มีLightSourceและPositionส่วนประกอบ เป็นที่ยอมรับหรือไม่? …

4
มีวิธีเพิ่มประสิทธิภาพการตรวจสอบการชนของระบบของวัตถุ n หรือไม่?
ฉันกำลังสร้างเกมที่ประกอบด้วยวัตถุบนหน้าจอจำนวนมากซึ่งหนึ่งในนั้นคือผู้เล่น ฉันจำเป็นต้องรู้ว่าวัตถุใดที่กระทบทุกการทำซ้ำ ฉันทำอะไรแบบนี้ for (o in objects) { o.stuff(); for (other in objects) if (collision(o, other)) doStuff(); bla.draw(); } นี่มี O (n ^ 2) ซึ่งฉันบอกว่าไม่ดี ฉันจะทำสิ่งนี้ได้อย่างมีประสิทธิภาพมากขึ้นเป็นไปได้ไหม ฉันกำลังทำสิ่งนี้ใน Javascript และโดยปกติแล้ว n จะต่ำกว่า 30 จะเป็นปัญหาหรือไม่หากสิ่งนี้ยังคงเหมือนเดิม

3
รับคะแนนในบรรทัดระหว่างสองคะแนน
ฉันกำลังสร้างเกมอวกาศง่ายๆใน JavaScript แต่ตอนนี้ฉันตีกำแพงเกี่ยวกับเวกเตอร์ มุมมองเกมอยู่บนลงบนกริด 2d เมื่อผู้ใช้คลิกบนกริดยานอวกาศจะบินไปยังจุดนั้น ดังนั้นถ้าฉันมีคะแนนสองชุด: { x : 100.2, y : 100.6 }; // the ship { x : 20.5, y : 55.95 }; // the clicked coordinates หากเกมวนซ้ำที่ 60 รอบต่อวินาทีและความเร็วของเรือรบที่ต้องการคือ 0.05 คะแนนต่อเห็บ (3 คะแนนต่อวินาที) ฉันจะคำนวณพิกัดชุดใหม่สำหรับเรือแต่ละเห็บของวงวนของเกมได้อย่างไร ป.ล. ฉันไม่ต้องการบัญชีความเฉื่อยหรือเวกเตอร์หลายตัวที่มีผลต่อเรือฉันแค่ต้องการให้เรือหยุดสิ่งที่กำลังทำ (เช่นบินทางเดียว) และย้ายไปยังพิกัดที่คลิกด้วยความเร็วคงที่

1
เหตุใด V8 จึงไม่ทำงานกับเธรด SDL
ฉันสามารถคอมไพล์และเชื่อมโยง V8 กับเกมของฉันและการตีความโค้ดทำงานได้ดี อย่างไรก็ตามฉันต้องการแบ่งรหัสของฉันและลูปเกมควรมีอยู่ในเธรดเดียวและเอ็นจิ้นการเขียนสคริปต์ควรรันในเธรดที่สองข้างลูปเกมของฉัน ฉันใช้ SDL และลองใช้รหัสนี้เพื่อวางไข่เธรดใหม่ SDL_CreateThread(ScriptingEngine::SpawnMain, NULL); ที่รหัสต่อไปนี้เป็นเครื่องมือทดสอบสคริปต์ของฉัน: namespace ScriptingEngine { v8::HandleScope handleScope; v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(); v8::Persistent<v8::Context> context; void Setup() { // TODO: bind functions to global // ... context = v8::Context::New(NULL, global); } int SpawnMain(void *arguments) { v8::Context::Scope scope(context); v8::Handle<v8::Script> script = v8::Script::Compile( v8::String::New("'Hello World'") ); …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.