การพัฒนาเกม

คำถาม & คำตอบสำหรับนักพัฒนาเกมมืออาชีพและเป็นอิสระ

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

1
ผสมผสานโหมดใน Cocos2D ด้วย glBlendFunc
เราพยายามทำซ้ำโหมดการผสมที่พบบ่อยที่สุดที่มีอยู่ใน Photoshop และ Quartz 2D แต่เราได้มากับ 3 เท่านั้นและหลังจากการค้นหาออนไลน์นาน ๆ สำหรับผู้ที่สนใจนี่คือ: คูณ = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA หน้าจอ = GL_MINUS_DST_COLOR, GL_ONE Linear Dodge = GL_ONE, GL_ONE คุณสามารถลองโหมดเหล่านี้และโหมดอื่น ๆ แบบออนไลน์ได้ที่เว็บไซต์ที่มีประโยชน์มากนี้: http://www.andersriggelsen.dk/glblendfunc.php ตอนนี้เราจะขอบคุณถ้าใครสามารถให้โหมดการผสมเพิ่มเติมที่เราสามารถสร้างขึ้นใหม่ใน Cocos2D เนื่องจากประสบการณ์ Open GL ของเรานั้น จำกัด จริงๆ ขอบคุณล่วงหน้า! Argiris

2
อะไรคือคณิตศาสตร์ที่เฉพาะเจาะจง, ฟิสิกส์, AI และแนวคิดทั่วไปที่โปรแกรมเมอร์ควรรู้เพื่อพัฒนาเอ็นจิ้นเกม? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน3 ปีที่ผ่านมา ในฐานะโปรแกรมเมอร์ของเว็บและแอพพลิเคชั่นศูนย์กลาง DB ฉันมีความรู้ในโครงสร้างข้อมูลเช่นลิสต์ต้นไม้แผนภูมิและอื่น ๆ ฉันใช้อัลกอริธึมโครงสร้างข้อมูลในการเข้ารหัสของฉันเพียงเล็กน้อยยกเว้นการเรียงลำดับสิ่งต่าง ๆ ในอาร์เรย์ธรรมดา ทำงานเกือบทั้งหมดด้วยเฟรมเวิร์กที่เน้นไคลเอนต์ซึ่งมีฟังก์ชั่นหลักทั้งหมดในตัว ฉันรู้ว่า C, PHP, Java, HTML, PL / SQL และ MySQL ฉันกำลังเรียนรู้ Python ฉันต้องการเริ่มต้นด้วยการพัฒนาเกม ฉันได้เห็นคำถามอื่น ๆ เกี่ยวกับคำแนะนำเคล็ดลับและวิธีการพัฒนาเกมสำหรับผู้เริ่มต้น ฉันเข้าใจประเด็นเหล่านี้และชัดเจนด้วยคำตอบ ไม่กี่วันหลังจากโพสต์ฉันอ่านบทความเขียนเกมไม่ใช่เอ็นจิ้นและรู้ว่าฉันควรจะใช้เกมก่อนที่ฉันจะสร้างเอ็นจิ้นเกม ยังฉันมีคำถาม เป้าหมายของฉันคือ พัฒนาทักษะการเขียนโปรแกรมระดับแกนกลางของฉันรวมถึงการใช้อัลกอริทึมโครงสร้างข้อมูลคณิตศาสตร์และแนวคิดฟิสิกส์ ติดตั้งเอ็นจิ้นเกมที่ดีเพื่อตามใจตัวเองในการเข้ารหัสระดับคอร์ เพื่อปูทางของฉันลงในฟิลด์การวิจัย AI อะไรคือคณิตศาสตร์ที่เฉพาะเจาะจง, ฟิสิกส์, AI และแนวคิดทั่วไปที่โปรแกรมเมอร์ควรรู้เพื่อพัฒนาเอ็นจิ้นเกม?

1
API การโหลดโมเดล C ++
ฉันกำลังมองหาAPI สำหรับการโหลดโมเดล C ++ ที่มีประสิทธิภาพที่สุด จนถึงตอนนี้ฉันได้พบกับ ply, obj และรูปแบบไฟล์อื่น ๆ แต่ห้องสมุดที่ฉันพบมักจะโหลดรุ่นหนึ่งประเภทและสิ่งนี้ต้องการให้คุณเรียนรู้อินเตอร์เฟส api ค่อนข้างน้อย มีหนึ่ง API โหลดพวกเขาทั้งหมดหนึ่ง API เพื่อแยกพวกเขาหนึ่ง API เพื่อนำพวกเขาทั้งหมดและในบัฟเฟอร์ Vertex ผูกพวกเขา?
9 c++  models  loading 

3
กำลังเดินสแควร์: การค้นหาหลาย contours ภายในเขตข้อมูลเดียว?
โดยหลักแล้วนี่เป็นคำถามที่ติดตามปัญหาเมื่อไม่กี่สัปดาห์ที่ผ่านมาแม้ว่าจะเป็นเรื่องเกี่ยวกับอัลกอริทึมโดยทั่วไปโดยไม่ต้องใช้กับปัญหาจริงของฉัน อัลกอริทึมโดยทั่วไปค้นหาทุกบรรทัดในรูปภาพเริ่มจากด้านบนซ้ายของมันจนกว่าจะพบพิกเซลที่เป็นเส้นขอบ ใน pseudo-C ++: int start = 0; for(int i=0; i<amount_of_pixels; ++i) { if(pixels[i] == border) { start = i; break; } } เมื่อพบสิ่งใดสิ่งหนึ่งมันจะเริ่มต้นอัลกอริธึมกำลังเดินยกกำลังสองและค้นหารูปร่างของวัตถุที่เป็นของพิกเซล สมมติว่าฉันมีสิ่งนี้: ที่ทุกอย่างยกเว้นสีขาวเป็นเส้นขอบ และได้พบคะแนนรูปร่างของหยดแรก: สำหรับอัลกอริทึมทั่วไปมันจบแล้ว พบรูปร่างและทำงานของมันเสร็จแล้ว ฉันจะไปยังสอง blobs ต่อไปเพื่อหารูปทรงได้อย่างไร
9 2d 

3
ปูกระเบื้องฟิสิกส์โดยใช้ Farseer
ฉันมีปัญหากับ Farseer Physics Engine ซึ่งในสภาพแวดล้อมที่มีการปูกระเบื้องวัตถุของฉันจะโต้ตอบกับมุมของวัตถุอื่น ๆ ในบางครั้งแม้ว่าวัตถุเหล่านั้นจะจัดเรียงอย่างสมบูรณ์แบบ ฉันได้อ่านเกี่ยวกับผู้คนที่แนะนำให้คุณคำนวณและสร้างวัตถุที่ใหญ่กว่าหนึ่งโดยใช้ Marching Squares หรือสิ่งที่คล้ายกัน อย่างไรก็ตามนี่ไม่ใช่ตัวเลือกเนื่องจากฉันต้องการให้แต่ละกระเบื้องมีคุณสมบัติทางกายภาพที่แตกต่างกันเช่นความเสียดทานและการซ่อมแซมที่แตกต่างกัน คำถามของฉันคืออะไรเป็นสาเหตุของมันคือมันลอยประเด็นความแม่นยำหรืออย่างอื่น? และมีวิธีแก้ไขหรือไม่โดยไม่ทำลายทั้งฟิสิกส์ของเครื่องยนต์?

3
มีหนังสือรับรองการพัฒนาเกม / กราฟิกหรือไม่?
มีการรับรองอุตสาหกรรมที่น่าเชื่อถือสำหรับนักพัฒนาเกมหรือกราฟิกหรือไม่? แก้ไข: ฉันคิดว่าใบรับรองมืออาชีพคล้ายกับ Microsoft Certified Professional Developer (MCPD) หรือ Cisco Certified Network Associate (CCNA) แต่เฉพาะสำหรับการพัฒนาเกม
9 education  jobs 

2
วิธีการวาดโลก 3 มิติด้วยเส้นเหมือนวาดภาพร่างหรือการ์ตูน
ลองสร้างภาพวาดหมึกโดยไม่มีการแรเงาและทุกเส้นมีน้ำหนักเท่ากัน - อย่างที่คุณเห็นในการ์ตูนแนวเหมือนดิลเบิร์ต สิ่งนี้แสดงถึงโลกสามมิติที่มีการเคลื่อนไหว แต่วัตถุไม่มีพื้นผิว แต่คุณก็ไม่เห็นรูปสามเหลี่ยม tessellated เพื่อเป็นตัวอย่างลองวาดพื้นผิวของดวงจันทร์ เส้นที่คุณวาดอาจอยู่ตามแนวขอบด้านบนของเนินลงไปถึงจุดที่พวกเขาพบกับระดับทั่วไปของพื้นผิว เบื้องหลังสิ่งเหล่านั้นคุณจะทำเช่นเดียวกันสำหรับภูเขาขนาดใหญ่ในระยะไกลและด้านหลังสิ่งที่มองเห็นได้จากขอบฟ้า สำหรับหลุมอุกกาบาตคุณอาจวาดวงกลมใกล้กับขอบด้านนอกและสวมหน้ากากบางส่วนเป็นวงกลมสำหรับขอบด้านล่าง ก้อนหินจะมีเส้นรอบขอบและตามขอบที่มองเห็นได้สำคัญ นักบินอวกาศจะมีเส้นตามขอบด้านนอกและตามองค์ประกอบหลักของชุดอวกาศของพวกเขา ฉันเป็นโปรแกรมเมอร์ที่มีประสบการณ์ แต่ยังไม่คุ้นเคยกับการเขียนโปรแกรม 3D ฉันไม่สามารถคิดอย่างถ่องแท้ถึงเกมที่มีลักษณะเช่นนี้ - เกิดขึ้นแล้วใช่ไหม แล้วเราจะทำอย่างไร? ปัญหาสองข้อคำนึงถึง - การค้นหาขอบที่สำคัญและวาดมัน มันจะต้องมี "เอ็นจิ้น" ที่เข้ารหัสจากเมทริกซ์ขึ้นอยู่กับบรรทัดไม่ใช่เอนจิ้น 3D ปกติหรือไม่?
9 3d 

1
การแสดงระดับ / โครงสร้างข้อมูลที่เหมาะสมสำหรับเกมแพลต 2D จากเกม?
ฉันกำลังจะเขียนโปรแกรม Mario ใน Java ฉันกำลังคิดเกี่ยวกับการเป็นตัวแทน 2 ครั้ง / โครงสร้างข้อมูลสำหรับระดับ แต่ฉันไม่แน่ใจว่าควรเลือกแบบใด: อาร์เรย์จำนวนเต็ม 2D ควอดทรีเพื่อแบ่งระดับเป็นชิ้น ๆ อะไรคือข้อดีและข้อเสีย?

1
จะให้ความสำคัญกับการพัฒนาตัวอย่างเกมสำหรับการสัมภาษณ์อย่างไร
ในหัวข้ออื่น ๆ ในเว็บไซต์นี้มีการเน้นย้ำซ้ำ ๆ ว่าการมีการสาธิตเกมเพื่อแสดงในการสัมภาษณ์งานมีความสำคัญอย่างยิ่งดังนั้นฉันจึงตัดสินใจที่จะออกไปและเขียนการสาธิตเกมของฉันเอง ผมอยากจะรู้ว่าสิ่งที่เป็นเรื่องปกติสำหรับผู้สัมภาษณ์เพื่อเน้นความสนใจของพวกเขาในขณะที่การตรวจสอบการสาธิตเกมของคุณ ฉันจะชี้แจงว่าผมไม่ได้มีการเปิดเฉพาะที่มีให้ฉันในขณะนี้ แต่ที่ฉันอาจจะกำหนดเป้าหมายการเล่นเกมและ / หรือการเขียนโปรแกรม AI ตำแหน่ง ด้วยเหตุนี้ฉันสามารถตอบด้วยตัวเองในแง่ของหมวดหมู่กว้าง ๆ : "กราฟิกแฟนซี" ไม่ควรให้ความสำคัญกับฉันในขณะที่ "พฤติกรรมผู้เล่นของคอมพิวเตอร์" ควร ... แต่ถึงกระนั้น - ไม่มีประสบการณ์โดยตรงของอุตสาหกรรมนี้ - ฉันอยากรู้ หากมีสิ่งที่ชัดเจนน้อยฉันควรใส่ใจกับ: ความสำคัญของรหัสคืออะไร การแสดงการใช้อัลกอริทึมทั่วไปมีความสำคัญอย่างไร การรวมคุณสมบัติใหม่ ๆ มีความสำคัญอย่างไร? ความสามารถในการเล่นมีความสำคัญอย่างไร ฉันควรอ่านรหัสพิเศษหรือปรับปรุงรหัสหรือไม่ เอกสารรหัสมีความสำคัญแค่ไหน? ฯลฯ ... ใจว่าข้างต้นเป็นเพียงตัวอย่างเพื่อแสดงระดับของรายละเอียดที่ฉันขอขอบคุณในคำตอบพวกเขาไม่ใช่คำถามเฉพาะที่ฉันต้องการได้รับการแก้ไข ขอบคุณล่วงหน้าสำหรับเวลาและความเชี่ยวชาญของคุณ

1
การแยกโลจิคัล / อัพเดตจากโค้ดการแสดงผล / การวาดในเธรดเดี่ยวโดยใช้โหมดสลีป
ฉันได้อ่านแล้วว่าความเร็วของวัตถุในเกมไม่ควรถูกขัดขวางโดย FPS แต่ควรขึ้นอยู่กับเวลา ฉันจะแยกโค้ดอัปเดต / วาดเพื่อเพิ่มประสิทธิภาพได้สูงสุดโดยไม่ จำกัด อัตราการวาดและให้อัตราการอัปเดตตรรกะอย่างต่อเนื่องตามเวลาได้อย่างไร รหัสหลอกปัจจุบันของฉันเป็นดังนี้ loop { draw(); if (ticksElapsed() > 100) { update(); ticks+= ticksElapsed(); } } ปัญหาคือรหัสการวาดภาพเป็นอุปสรรคต่อประสิทธิภาพของอัตราการอัปเดต () และมันใช้ cpu 100% เพราะถ้าการนอนหลับถูกโยนทิ้งมันจะสลัดฟังก์ชันการวาดภาพ / ลอจิกออก ฉันใช้ SDL ด้วยและดูเหมือนจะไม่มีตัวเลือก vsync ฉันเคยได้ยินคำศัพท์ที่แก้ไขแล้วและเปลี่ยนแปลงเวลาได้อย่างรวดเร็ว แต่ฉันไม่แน่ใจว่าจะทำอย่างไรกับการนอนหลับ ()

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

3
ฉันจะวัด "คุณค่าสร้างสรรค์ / ความบันเทิง" ของข้อกำหนดวิดีโอเกมได้อย่างไร
ฉันรู้ว่าคำถามนี้ซับซ้อนและเป็นอัตนัย แต่อดทนกับฉันสักครู่ ฉันเชื่อมั่นอย่างยิ่งว่าซอฟต์แวร์วิดีโอเกมนั้นแตกต่างจากซอฟต์แวร์สเปรดชีตเป็นหลักจากมุมมองของผู้ใช้เกมบางเกมมีความคล้ายคลึงกับภาพยนตร์ศิลปะมากกว่าซอฟต์แวร์ปกติ อย่างไรก็ตามเมื่อพูดถึงข้อกำหนดวิธีการจัดลำดับความสำคัญที่ช่วยให้นักพัฒนาสามารถแยกแยะคุณลักษณะหรือความคิดที่สำคัญที่สุดไม่มีสิ่งใดที่อำนวยความสะดวกในด้านความคิดสร้างสรรค์ของวิดีโอเกม เทคนิคส่วนใหญ่ที่มีอยู่จะช่วยในการพัฒนาซอฟต์แวร์ตามปกติโดยมุ่งเน้นที่ความเสี่ยงและต้นทุนตามข้อกำหนดและไม่คำนึงถึงแง่มุมที่สร้างสรรค์ของข้อกำหนดของวิดีโอเกม ในการอธิบายปัญหาให้นึกถึงข้อกำหนด (เช่นแนวคิดเรื่องคุณสมบัติ) เช่นสิ่งที่เห็นใน Super Paper Mario ที่ซึ่งMario สามารถออกจากโลก 3 มิติและเข้าสู่โลก 2 มิติและในทางกลับกันเพื่อหลีกเลี่ยงอุปสรรค นี่เป็นข้อกำหนดที่ค่อนข้างท้าทายในการติดตั้งและอาจมีค่าใช้จ่ายสูง แต่จำเป็นอย่างยิ่งต่อความสำเร็จของเกม วิธีการจัดลำดับความสำคัญที่มีอยู่มองข้ามคุณค่าความคิดสร้างสรรค์ / ความบันเทิงของข้อกำหนดนี้และส่วนใหญ่จะประมาณว่าการใช้งานที่มีความเสี่ยงและราคาแพง (เทคโนโลยี) เป็นอย่างไร แน่นอนว่านี่เป็นตัวอย่างที่ง่ายมาก แต่คุณสามารถจินตนาการถึงกรณีที่มีแหล่งความคิดเกมที่ยอดเยี่ยม (ข้อกำหนดด้านการใช้งานและไม่ใช้งาน) และทรัพยากรไม่เพียงพอที่จะตระหนักถึงพวกเขาทั้งหมด เมื่อพูดถึงการคำนวณมูลค่าการวิจัยเชิงวิชาการไม่ได้ให้วิธีที่เพียงพอแก่นักพัฒนาเกมในการประเมินมูลค่าของข้อกำหนดของเกม ปรับปรุง / ชี้แจง:ในการวิจัยของฉันฉันศึกษาโซลูชันการจัดการผลิตภัณฑ์ซอฟต์แวร์ที่มีอยู่ (เพิ่มเติมโดยเฉพาะความต้องการขั้นตอนวิธีการจัดลำดับความสำคัญ) และพยายามค้นหาสาเหตุที่ไม่เหมาะสำหรับการพัฒนาเกม ดูเหมือนว่าจะเป็นลักษณะความคิดสร้างสรรค์หรือความบันเทิงของซอฟต์แวร์ที่แนะนำความไม่ลงรอยกันนี้ มันเป็นเทคนิคที่มีอยู่ (ไม่เพียงพอ) เพื่อรับรู้คุณค่าหลักของซอฟต์แวร์และจุดประสงค์ที่แตกต่างของแนวคิด ด้วยซอฟต์แวร์ปกติผู้ใช้หรือความต้องการของเขา / เธอที่มักช่วยประเมินมูลค่าของความต้องการ นอกจากนี้ยังเป็นผู้ใช้ที่สร้างความต้องการมากที่สุด ในซอฟต์แวร์วิดีโอเกมมันเป็นวิสัยทัศน์ที่สร้างสรรค์ที่ขับเคลื่อนความต้องการ สำหรับแหล่งกำเนิดความต้องการมันเป็นสิ่งที่อยู่ข้างนอกกับกระบวนทัศน์ภายใน เมื่อสร้างความแตกต่างพื้นฐานนี้แล้วเราสามารถอนุมานได้ว่าหากอัลกอริทึมจัดลำดับความต้องการ (RP) มุ่งเน้นไปที่ความคิด / ความต้องการของผู้ใช้เพื่อประเมินมูลค่าของข้อกำหนดสำหรับซอฟต์แวร์ปกติจากนั้นในกรณีของซอฟต์แวร์วิดีโอเกม วิสัยทัศน์ที่สร้างสรรค์ …

3
ฉันสามารถใช้ quaternions เพื่อควบคุมเฮลิคอปเตอร์ได้หรือไม่?
ฉันพยายามที่จะสร้างเฮลิคอปเตอร์แบบง่าย ๆ (สำหรับตอนนี้มันเป็นลูกบาศก์) จำลองในแบบ 3 มิติและฉันมีปัญหากับการหมุน เฮลิคอปเตอร์สามารถหมุนไปตามแกนสามแกน: หมุนตัวเองโดยใช้ใบพัดด้านหลัง: การหมุนแกน y เอียงไปทางซ้ายและขวาเพื่อไปทางซ้ายหรือขวา: การหมุนแกน z เอียงขึ้นและลงเพื่อย้อนกลับหรือไปข้างหน้า: การหมุนแกน x ฉันต้องการที่จะสามารถควบคุมแต่ละแกนเป็นรายบุคคล จนถึงตอนนี้ฉันได้ลองใช้มุมออยเลอร์แล้ว แต่ไม่ว่าฉันจะใช้คำสั่งหมุนแบบใดฉันก็จะใช้ gimbal lock หรือ axes "switch places" ฉันดูเหมือนว่าฉันต้องใช้ quaternions แต่ฉันไม่รู้วิธีควบคุมแกนแต่ละอันเนื่องจาก quaternions ใช้ทิศทางและมุม ฉันควรสร้างสามควอเทอร์เนียนและคูณพวกมันเข้าด้วยกันไหม? ฉันจะไม่จบลงด้วยปัญหาเดียวกันหรือไม่? สิ่งที่แปลกคือถ้าฉันใช้นิ้วของฉันเพื่อเป็นตัวแทนของสามแกนของเฮลิคอปเตอร์ของฉัน (thumb up = y, index = z, middle = x) ดูเหมือนว่าฉันจะไม่พบปัญหาเหล่านั้น ทำไม?
9 3d  rotation 

3
เอนจินฟิสิกส์ 2 มิติแบบเบา ๆ ?
สวัสดีดังนั้นฉันเพิ่งได้เรียนรู้ห้องสมุดกราฟิก SFML และต้องการใช้หรือสร้างระบบฟิสิกส์ 2D ที่ไม่แข็งกระด้างเพื่อใช้กับมัน ฉันมีสามคำถาม: ความหมายของร่างกายที่แข็งแกร่งใน Box2d คือ ก้อนของสสารที่แข็งแรงมากจนระยะห่างระหว่างสสารสองชิ้นใด ๆ บนก้อนนั้นคงที่อย่างสมบูรณ์ และนี่คือสิ่งที่ฉันไม่ต้องการอย่างที่ฉันต้องการทำให้ร่างกายที่ยืดหยุ่น, ผิดปกติ, เปราะบางและเชื่อมต่อใหม่ 1. มีเครื่องยนต์ฟิสิกส์แบบ 2D ธรรมดา ๆ แต่มีคุณสมบัติแบบนี้หรือไม่? ฟรีหรือโอเพนซอร์สดีกว่า 2. ถ้าไม่สามารถใช้ box2d และสร้างมันเพื่อสร้างมันได้แม้ว่ามันจะขึ้นอยู่กับร่างกายที่แข็งทื่อหรือไม่? 3. ในที่สุดหากมีเครื่องมือฟิสิกส์อย่างง่ายเช่นนี้ฉันควรผ่านการสร้างใหม่หรือไม่เพื่อประสบการณ์และเพื่อเพิ่มพูนความรู้คณิตศาสตร์ฟิสิกส์? ฉันรู้สึกว่ามันจะช่วยได้ถ้าฉันต้องการแก้ไขโค้ดของเอ็นจิ้นที่มีอยู่หรือสร้างเกมด้วยฟิสิกส์ที่มีเอกลักษณ์ ขอบคุณ!
9 c++  physics 

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