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

รหัสมีโครงสร้างอย่างไร สำหรับคำถามเกี่ยวกับการออกแบบภายในของเอ็นจิ้นเกม

4
คอนเทนเนอร์ที่มีประสิทธิภาพที่สุดในการจัดเก็บวัตถุเกมแบบไดนามิกคืออะไร [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเป็นนักกีฬาคนแรกและฉันรู้เกี่ยวกับคอนเทนเนอร์ประเภทต่างๆมากมาย แต่ฉันต้องการค้นหาคอนเทนเนอร์ที่มีประสิทธิภาพที่สุดสำหรับการจัดเก็บวัตถุไดนามิกที่จะเพิ่มและลบออกจากเกมค่อนข้างบ่อย EX-กระสุน ฉันคิดว่าในกรณีนี้มันจะเป็นรายการเพื่อให้หน่วยความจำไม่ต่อเนื่องและไม่มีการปรับขนาดใด ๆ ที่เกิดขึ้น แต่ฉันก็ใคร่ครวญโดยใช้แผนที่หรือชุด หากใครมีข้อมูลที่เป็นประโยชน์ฉันจะขอบคุณมัน ฉันกำลังเขียนสิ่งนี้ใน c ++ โดยวิธี ฉันยังคิดวิธีแก้ปัญหาที่ฉันคิดว่าจะใช้ได้ ในการเริ่มต้นฉันจะจัดสรรเวกเตอร์ที่มีขนาดใหญ่ .. พูดได้ 1,000 วัตถุ ฉันจะติดตามดัชนีที่เพิ่มล่าสุดในเวกเตอร์นี้เพื่อให้ฉันรู้ว่าจุดสิ้นสุดของวัตถุอยู่ที่ไหน จากนั้นฉันจะสร้างคิวที่จะเก็บดัชนีของวัตถุทั้งหมดที่ "ลบ" จากเวกเตอร์ (จะไม่มีการลบจริงฉันจะรู้ว่าสล็อตนั้นฟรี) ดังนั้นหากคิวว่างเปล่าฉันจะเพิ่มดัชนีล่าสุดที่เพิ่มเข้าไปในเวกเตอร์ + 1 มิฉะนั้นฉันจะเพิ่มดัชนีของเวกเตอร์ที่อยู่ด้านหน้าของคิว

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

4
การคำนวณผลลัพธ์ของการต่อสู้ของกองทัพทั้งสอง
ฉันกำลังเขียนโปรแกรมเกมกลยุทธ์โดยใช้ Flash เกมนี้ทำงานคล้ายกับเกม "ทราเวียน" ที่มีชื่อเสียง ปัญหาของฉันมีดังนี้: ฉันพยายามคำนวณกองทหารที่แพ้เนื่องจากการต่อสู้ระหว่างกองทัพทั้งสอง กองทัพทั้งสองนั้นมีหน่วยต่างกัน บางส่วนของพวกเขาแข็งแกร่งขึ้นเมื่อเทียบกับหน่วยอื่นและปรับตัวลดลงกับประเภทอื่น ฉันจะวางผลของความแตกต่างนี้ในสมการการต่อสู้ได้อย่างไร? ดูเหมือนว่าจะง่ายถ้าพวกเขามีเพียง att และ def เท่านั้น แต่เมื่อมันมาถึงการพึ่งพาประเภทหน่วยฉันก็หายไป

5
การกระทำของเกมที่ใช้เวลาหลายเฟรมให้เสร็จสมบูรณ์
ฉันไม่เคยเขียนโปรแกรมเกมมาก่อนจริงๆคำถามตรงไปตรงมา ลองนึกภาพฉันกำลังสร้างเกม Tetris ด้วยลูปหลักกำลังมองหาสิ่งนี้ for every frame handle input if it's time to make the current block move down a row if we can move the block move the block else remove all complete rows move rows down so there are no gaps if we can spawn a new block …

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

6
ฉันจะสร้างเอนจินฟิสิกส์ 2D ได้อย่างไร [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน6 ปีที่ผ่านมา เกมที่ทันสมัยที่สุดที่ฉันทำคือเกมพูล 8 ลูกที่สร้างด้วยเครื่องมือฟิสิกส์ Box2dFlashAS3 และเกมแพลตฟอร์มที่มีเลเวล เมื่อฉันทำเกมแพลตฟอร์มฉันมักจะอยากรู้วิธีสร้างเครื่องยนต์เพื่อที่ฉันจะได้ใช้มันได้อีกครั้ง เมื่อฉันเห็นเกมที่มีทางลาดเอียงโค้งแรงโน้มถ่วงที่สมบูรณ์แบบและฟิสิกส์ในชีวิตจริงฉันหวังเสมอว่าฉันรู้วิธีการเขียนโปรแกรม โปรดแนะนำเทคนิคและบทความสำหรับฐานความรู้ที่เกี่ยวข้องที่จำเป็น

4
ผู้จัดการทรัพยากร - พวกเขาดีไหม?
ผมเคยเห็นหลายครั้งในซอร์สโค้ดสิ่งเช่นนี้ [ดีนี้เป็นมากกว่าหลอก c ++ ความคิดของฉัน] typedef shared_ptr<Resource> ResourcePtr;// for ease ResourcePtr sound1 = resourceManager.Get<SoundResource>("boom.ogg"); sound1->Play(); ResourcePtr sprite = resourceManager.Get<Image>("sprite.png"); ฉันแค่สงสัยว่าคลาสที่มีประโยชน์เช่นนี้เป็นอย่างไรบางสิ่งที่: โหลดไฟล์สื่อแล้ว เก็บไว้ในหน่วยความจำ ทำสิ่งนี้ในตอนเริ่มต้นของหน้าจอการโหลดระดับ ทำความสะอาด แทนที่จะมีระบบ: ทรัพยากรถูกครอบครองโดยนิติบุคคลเท่านั้นหรือปล่อยทิ้ง รับผิดชอบภาระของตัวเองในหน่วยความจำ คนแรกคือ 'ผู้จัดการ' เช่นนี้ สิ่งที่ฉันรู้สึกบ่งบอกว่ามันผิดที่จะใช้ อย่างไรก็ตามมันอนุญาตให้บางอย่างเช่นเวกเตอร์ของชื่อทรัพยากรถูกส่งผ่านแทนที่จะต้องแย่งกันหาทุกสิ่งที่ต้องโหลด

5
noSQL - มันเป็นตัวเลือกที่ถูกต้องสำหรับเกมบนเว็บ? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา จากโอกาสและความเบื่อหน่ายเพื่อนและฉันตัดสินใจทำเกมบนเว็บ นี่เป็นเกมแรกที่ฉันจะทำเพราะปกติฉันจะตั้งโปรแกรมเว็บแอพใน django ฉันเลือกที่จะใช้กรอบงานเดียวกันสำหรับเกม แต่ฉันไม่แน่ใจเกี่ยวกับการจัดเก็บข้อมูลทั้งหมดเนื่องจากฉันไม่สามารถคาดการณ์ข้อกำหนดในอนาคตและปัญหาที่เกี่ยวข้องกับฐานข้อมูลได้ เมื่อเร็ว ๆ นี้การเคลื่อนไหว noSQL กำลังเพิ่มขึ้นและฉันอยากจะสำรวจพื้นที่นั้น ดังนั้นฉันมีคำถามต่อไปนี้: noast datastorage (ตามเอกสารเช่น MongoDB) จะเหมาะสำหรับเกมบนเว็บหรือไม่? ปัญหาที่อาจเกิดขึ้นจากการใช้ RDBMS ทั่วไปเช่น MySQL มีอะไรบ้าง วิธีการประกันความสอดคล้องของข้อมูลระหว่างผู้ใช้กับ MongoDB ในระหว่างการเล่นเกมหรือในเหตุการณ์ที่กำหนดเวลาเช่นงาน cron ภาพรวมของเกม: เกมผจญภัยทั่วไปที่ผู้เล่นต่อสู้กับมอนสเตอร์และได้รับไอเทมและสิ่งต่าง ๆ ข้อมูลบางอย่างคงที่ในผู้เล่นทุกคน: รายการอาวุธยาพิษแผนที่ ฯลฯ ข้อมูลบางอย่างที่เชื่อมโยงกับโปรแกรมเล่น: สินค้าคงคลังตัวชี้วัด (สถิติ) ความคืบหน้า ฯลฯ ผู้เล่นอาจจำเป็นต้องรู้สถิติและสถานะของผู้เล่นอื่น งานที่กำหนดเวลาไว้จะถูกเรียกใช้ในบางช่วงเวลา

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

1
ฉันจะจัดโครงสร้างระบบโหลดสินทรัพย์ที่ขยายได้อย่างไร
สำหรับเอนจิ้นเกมอดิเรกใน Java ฉันต้องการโค้ดเครื่องมือจัดการทรัพยากร / ทรัพยากรที่เรียบง่าย แต่มีความยืดหยุ่น เนื้อหาคือเสียงรูปภาพแอนิเมชั่นโมเดลพื้นผิวและอื่น ๆ หลังจากผ่านไปสองสามชั่วโมงของการค้นหาและการทดสอบโค้ดฉันยังไม่แน่ใจว่าจะออกแบบสิ่งนี้อย่างไร โดยเฉพาะฉันกำลังมองหาวิธีที่ฉันสามารถออกแบบผู้จัดการในลักษณะเพื่อให้เป็นนามธรรมว่ามีการโหลดประเภทสินทรัพย์ที่เฉพาะเจาะจงและการโหลดเนื้อหาที่ไหน ฉันต้องการให้สามารถรองรับทั้งระบบไฟล์และที่เก็บ RDBMS โดยไม่ต้องใช้โปรแกรมอื่น ๆ ที่จำเป็นต้องรู้ ในทำนองเดียวกันฉันต้องการเพิ่มเนื้อหาคำอธิบายภาพเคลื่อนไหว (FPS เฟรมที่จะแสดงภาพอ้างอิงภาพสไปรต์และอื่น ๆ ) นั่นคือ XML ฉันควรจะสามารถเขียนคลาสสำหรับสิ่งนี้ด้วยฟังก์ชันการทำงานเพื่อค้นหาและอ่านไฟล์ XML และสร้างและส่งคืนAnimationAssetคลาสด้วยข้อมูลนั้น ฉันกำลังมองหาการออกแบบที่ขับเคลื่อนด้วยข้อมูล ฉันสามารถค้นหาข้อมูลจำนวนมากเกี่ยวกับสิ่งที่ผู้จัดการสินทรัพย์ควรทำ แต่ไม่เกี่ยวกับวิธีการทำ ข้อมูลทั่วไปที่เกี่ยวข้องดูเหมือนจะส่งผลให้บางรูปแบบของการเรียนลดหลั่นกันหรือบางรูปแบบของผู้ช่วย อย่างไรก็ตามฉันไม่ได้เห็นตัวอย่างที่ชัดเจนที่ไม่เหมือนกับแฮ็กส่วนตัวหรือเป็นฉันทามติ

2
หากคลาส“ ResourceManager” ถือว่าไม่ดีตัวเลือกอื่นคืออะไร
ฉันได้ยินความคิดเห็นที่ขัดแย้งเช่น: "คลาส Dedicated Manager แทบไม่เคยเป็นเครื่องมือทางวิศวกรรมที่เหมาะสม" "คลาส Dedicated Manager เป็นวิธีที่ดีที่สุดในการอยู่รอดโครงการขนาดใหญ่ที่มีทรัพยากรนับพัน" ลองคลาส ResourceManager คลาสสิกที่มีฟังก์ชั่นต่อไปนี้: โหลดเนื้อหา (พื้นผิว, เสียง, โมเดล 3 มิติ ฯลฯ ) ตรวจสอบให้แน่ใจว่ามีการโหลดเนื้อหาเพียงครั้งเดียวโดยเก็บแคชไว้ การอ้างอิงนับสินทรัพย์เพื่อพิจารณาว่าสามารถยกเลิกการจัดสรรได้หรือไม่ ซ่อนที่สินทรัพย์จริงมาจาก (เช่นอาจเป็นหนึ่งไฟล์ต่อสินทรัพย์หรือสินทรัพย์ทั้งหมดในไฟล์แพ็คเกจหนึ่งหรือสินทรัพย์สามารถโหลดผ่านเครือข่ายได้) สามารถโหลดเนื้อหาโดยไม่ต้องเริ่มโปรแกรมใหม่ซึ่งมีประโยชน์อย่างยิ่งสำหรับศิลปินที่ทำงานในเกม Let 's ยังใช้อาร์กิวเมนต์ "singletons ที่ไม่ดี" ออกจากตารางโดยแกล้งทำเป็นวัตถุ ResourceManager เหล่านี้จะไม่ singletons และแทนจะถูกส่งผ่านไปรอบ ๆ ผ่านฉีดพึ่งพา จากนั้นมีอาร์กิวเมนต์ "ใช้เป็นโรงงาน" หรือ "เรียกว่าเป็นโรงงาน" ปัญหาของฉันเกี่ยวกับเรื่องนี้คือใช่มันเป็นโรงงาน แต่ก็เป็นแคชและตัวโหลดซ้ำ (เนื่องจากไม่มีคำที่ดีกว่า) การเรียกมันว่าโรงงานไม่ได้อธิบายอย่างถูกต้องและถ้าฉันทำให้มันเป็นโรงงานที่เหมาะสมแล้วการแคชและการโหลดใหม่จะถูกนำไปใช้ที่ไหน ฉันยอมรับว่าคลาส "ผู้จัดการ" มักเป็นอาการของสถาปัตยกรรมที่ไม่ดี แต่ในกรณีนี้จะปรับโครงสร้างและยังคงใช้งานได้ทั้งหมดหรือไม่ นี่เป็นสถานการณ์ที่ระดับ …

2
ควรวางตรรกะการตรวจจับการชนกันที่ไหน
ฉันกำลังพัฒนาเอ็นจิ้นเกม 2D ขนาดเล็ก ตัวละครมีวิธีทาสีซึ่งปัจจุบันทำดังต่อไปนี้: คำนวณตำแหน่งใหม่ของตัวละครตามความเร็ว ฯลฯ อัปเดตเซลล์กริดการชน ** วาดตัวละครที่ตำแหน่งใหม่ ** ฉันได้สร้างตารางการชนกันเพื่อลดจำนวนการตรวจสอบทางแยก ตอนนี้อัลกอริทึมพื้นฐานที่ฉันคิดว่าตรวจจับการชนกันคือ: For Each Character Check intersection with characters in surrounding 8 cells ฉันสามารถวางรหัสนี้ในวิธีการทาสี แต่นี่คือปัญหาที่ฉันคาดหวัง สมมติว่าอักขระสองตัว A และ B อยู่ในเซลล์ที่อยู่ติดกันในตารางการชนกัน ตอนนี้ตามอัลกอริทึมข้างต้นในการวนซ้ำของอักขระ A มันจะตรวจพบว่ามันชนกับ B ในการวนซ้ำสำหรับอักขระ B มันจะตรวจจับว่ามันชนกับ A แต่ฉันมีความคิดว่าเมื่อ A ตรวจพบว่ามันชนกับ B มันควรแจ้ง B ว่ามันชนกับ A นี่จะช่วยประหยัดการเปรียบเทียบได้มากเมื่อมีนักแสดงมากกว่า 2 คนชนกัน แต่ฉันไม่แน่ใจว่าจะจัดการเรื่องนี้อย่างไร …

3
จะสร้างฟีเจอร์ Ghost Replay ในเกมได้อย่างไร?
เมื่อคุณตั้งเวลารอบที่ดีที่สุดในเกมแข่งรถคอนโซลคุณมีตัวเลือกในการแข่งขันกับผีของคุณ คุณลักษณะนี้จะสร้างได้อย่างไรสำหรับเกมประเภทผู้เล่นเดี่ยวที่ไม่เป็นทางการ

2
โดยทั่วไปส่วนประกอบของฟิสิกส์หรือกราฟิกนั้นสร้างขึ้นในระบบที่มุ่งเน้นส่วนประกอบได้อย่างไร
ฉันใช้เวลา 48 ชั่วโมงในการอ่านข้อมูลเกี่ยวกับระบบ Object Component และรู้สึกว่าฉันพร้อมที่จะเริ่มนำไปใช้งานแล้ว ฉันได้รับคลาส Object และ Component พื้นฐานแล้ว แต่ตอนนี้ฉันต้องเริ่มสร้างส่วนประกอบจริงฉันสับสนเล็กน้อย เมื่อฉันนึกถึงพวกเขาในแง่ของ HealthComponent หรืออะไรบางอย่างที่โดยพื้นฐานแล้วจะเป็นเพียงแค่คุณสมบัติมันก็สมเหตุสมผลดี เมื่อมันเป็นเรื่องทั่วไปมากขึ้นในส่วนของฟิสิกส์ / กราฟิกฉันสับสนเล็กน้อย คลาส Object ของฉันมีลักษณะเช่นนี้จนถึงตอนนี้ (หากคุณสังเกตเห็นการเปลี่ยนแปลงใด ๆ ที่ฉันควรทำโปรดแจ้งให้เราทราบยังใหม่ต่อเรื่องนี้) ... typedef unsigned int ID; class GameObject { public: GameObject(ID id, Ogre::String name = ""); ~GameObject(); ID &getID(); Ogre::String &getName(); virtual void update() = 0; // …

2
โครงสร้างหน่วยเกม RTS
ฉันต้องการวิธีที่จะสร้างหน่วยที่แตกต่างกันมากมายโดยไม่ต้องเขียนโปรแกรมอะไรเช่น moveTo และ Attack มากกว่าหนึ่งครั้ง วิธีที่ฉันเห็นมันมี 2 วิธีที่ฉันทำได้ คลาสหน่วยทั่วไปเดียวที่มีแฟล็กที่ระบุสิ่งที่สามารถ / ไม่สามารถทำได้ (จากนั้นสร้างอินสแตนซ์ในอาร์เรย์แบบสแตติกและคว้าเมื่อจำเป็น) คลาสหน่วยนามธรรมพร้อมวิธีการแบบนามธรรมสำหรับการกระทำเฉพาะหน่วยเช่น (Attack, Harvest, Patrol) ซึ่งจำเป็นต้องนำไปใช้ในคลาสย่อยแม้ว่าหน่วยนั้นจะไม่สามารถเก็บเกี่ยวสิ่งใดได้ วิธีแรกในการทำสิ่งนี้ดูง่ายที่สุด แต่ฉันจะต้องมีรหัสจำนวนมากที่ไม่ได้ใช้สำหรับหน่วยงานส่วนใหญ่ วิธีที่สองสามารถใช้งานได้เช่นกัน แต่ถ้าฉันตัดสินใจที่จะมีสองหน่วยที่แตกต่างกันที่สามารถเก็บเกี่ยวทรัพยากรฉันจะมีรหัสเดียวกันแน่นอนในสองชั้นเรียนที่แตกต่างกันซึ่งดูเหมือนจะไม่ถูกวิธีที่จะทำ นี่เป็นแนวทางที่ถูกต้องสำหรับปัญหานี้หรือไม่? ในเกมอย่าง AoE ทุกหน่วยมีสิ่งที่ฉันเข้าใจคือ List of Actions / Orders บางอย่างฉันอยากรู้วิธีทำให้บางอย่างคล้ายกับสิ่งนั้นโดยที่ฉันสามารถเขียนโค้ด Action / Order แต่ละครั้งได้ครั้งเดียวและ จากนั้นมอบให้กับทุกหน่วยงานที่ต้องมีการกระทำ หากฉันไม่ชัดเจน (น่าเชื่อถือสูง) หรือคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ฉันกำลังมองหาเพียงแค่ถามฉันในความคิดเห็น
18 unity  c#  architecture  rts 

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