การพัฒนาอิสระข้ามแพลตฟอร์ม


34

เมื่อหลายปีก่อนถ้าคุณเขียนใน C และเซตย่อยของ C ++ และใช้ abstract abstract platform ที่เพียงพอ (ผ่าน SDL หรืออะไรก็ตาม) คุณสามารถทำงานบนทุกแพลตฟอร์มที่อินดี้สามารถทำได้ - Linux, Windows, Mac OS เวอร์ชันต่าง ๆ ปิดบังสิ่งต่างๆเช่น BeOS และคอนโซลแบบเปิดเช่น GP2X และ Dreamcast หลังความตาย หากคุณได้รับสัญญาสำหรับแพลตฟอร์มปิดในบางกรณีคุณสามารถย้ายเกมของคุณไปยังแพลตฟอร์มนั้นได้ด้วยการเปลี่ยนแปลงรหัส "ขั้นต่ำ" เช่นกัน

วันนี้ผู้พัฒนาอินดี้ต้องใช้ XNA เพื่อรับบน Xbox 360 (และ Windows Phone ที่กำลังจะมาถึง); ต้องไม่ใช้ XNA เพื่อทำงานที่อื่นนอกจาก Windows; จนกระทั่งเมื่อเร็ว ๆ นี้ต้องใช้ Java บน Android; Flash ไม่ทำงานบนโทรศัพท์ HTML5 ไม่ทำงานบน IE ซึ่งแตกต่างจาก DirectX กับ OpenGL หรือ Windows กับ Unix การเปลี่ยนแปลงเหล่านี้เป็นภาษาหลักที่คุณเขียนโค้ดและไม่สามารถเขียนทับได้โดยไม่ต้องเขียนคอมไพเลอร์ คุณสามารถย้ายตรรกะของเกมลงในสคริปต์และรวมล่าม - ยกเว้นเมื่อคุณทำไม่ได้เพราะ iPhone SDK ไม่อนุญาตและประสิทธิภาพการทำงานลดลงเพราะไม่มีใครยอมให้ JIT

ดังนั้นคุณจะทำอย่างไรถ้าคุณต้องการเกมพกพาข้ามแพลตฟอร์มจริง ๆ หรือแม้แต่แค่เอนจิ้นสำคัญของรหัสเครื่องยนต์และลอจิก?

นี่ไม่ใช่ปัญหาเพราะแพลตฟอร์มมีความแตกต่างพื้นฐาน - เป็นเรื่องธรรมดาที่ไม่คุ้มค่าที่จะลองกำหนดเป้าหมายทั้ง iPhone และ Xbox 360 ด้วยรหัสที่ใช้ร่วมกันเพราะเกมดังกล่าวจะไม่ดี? (ฉันคิดว่ามันไม่น่าเป็นไปได้มากฉันสามารถเห็นได้อย่างง่ายดายว่าต้องการแบ่งปันเกมระหว่างโทรศัพท์ Windows Mobile และ Android หรือ Xbox 360 และ iPad) ส่วนต่อประสานมีระดับสูงในขณะนี้ (ฉันอาจเชื่อว่านี่สำหรับแอปพลิเคชันธุรกิจ แต่ไม่ใช่สำหรับเกมที่มีข้อกำหนดด้านประสิทธิภาพที่เข้มงวด)

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

tl; dr - การย้ายปัญหาจะเป็นปัญหาใหญ่ในอนาคตหรือไม่และถ้าเป็นเช่นนั้นเราจะแก้ปัญหาได้อย่างไร


2
ส่วนที่ 3.3.2 ของข้อตกลงสิทธิ์การใช้งานโปรแกรมนักพัฒนาซอฟต์แวร์ iPhone อนุญาตให้มีการเขียนสคริปต์เกมได้ในขณะนี้ แต่ก็ยังมีความซับซ้อนอยู่บ้าง - "แม้จะมีการกล่าวถึงข้างต้นด้วยความยินยอมเป็นลายลักษณ์อักษรล่วงหน้าจาก Apple แอปพลิเคชันอาจใช้โค้ดตีความแบบฝังตัวในลักษณะที่ จำกัด หากการใช้งานดังกล่าวมีไว้เพื่อมอบคุณสมบัติหรือฟังก์ชั่นเล็กน้อยเท่านั้นที่สอดคล้องกับวัตถุประสงค์
Bachus

3
Apple เปลี่ยนข้อตกลงใบอนุญาตอีกครั้งเมื่อวานนี้และตอนนี้การเขียนสคริปต์เกมทั้งหมดไม่เป็นไร - "โค้ดตีความอาจใช้ในแอปพลิเคชันเท่านั้นหากสคริปต์รหัสและล่ามทั้งหมดบรรจุอยู่ในแอปพลิเคชันและไม่ได้ดาวน์โหลดยกเว้นข้อยกเว้นข้างต้นคือสคริปต์และรหัสที่ดาวน์โหลดและรันโดยเฟรมเวิร์ก WebKit ในตัวของ Apple"
Bachus

ฉันจะบอกว่าคุณได้รวมสิ่งของหลายอย่างเข้าด้วยกันซึ่งไม่ได้เป็นของคุณ - อุปกรณ์พกพา, คอนโซล, พีซีและเกมบนเว็บ? แน่นอนว่าคอนโซลและพีซีควรแบ่งปัน codebase กับการปรับแต่ง อุปกรณ์พกพามีความสามารถที่แตกต่างกันอย่างมากมายจากฮาร์ดแวร์การประมวลผลเฉพาะ (ในแง่ของพลังกราฟิกดิบ, การจัดเก็บ, ความสัมพันธ์, ฯลฯ ) ดังนั้นคุณจะไม่สามารถใช้โซลูชั่นเดียวกันได้ และเกมบนเว็บที่คุณรู้ว่าหน้าเว็บ คุณต้องการอะไร? การกระจายตัวของที่นี่อยู่ตรงข้ามกับกระบวนทัศน์ของอุปกรณ์ไม่ใช่แค่สถาปัตยกรรมการคำนวณ
ChrisE

จริงๆแล้วฉันไม่ได้พูดอะไรเกี่ยวกับเกมบนเว็บ ฉันคิดว่ามันสมเหตุสมผลที่จะต้องการเรียกใช้รหัสเดียวกันบางส่วนในอุปกรณ์ทั้งหมด - การแมปอินพุทหรือ API กราฟิกที่เป็นนามธรรมหรือระบบเอนทิตีการแยกไฟล์การเชื่อมต่อเครือข่าย - ทั้งหมดนี้เป็นกระบวนทัศน์พื้นฐานแบบเดียวกันโดยไม่คำนึงถึงแพลตฟอร์ม แต่คำถามก็อายุ 8 เดือนและเป็นเพราะความกังวลที่ไม่ได้ใช้มากนักเนื่องจาก NDK ได้รวบรวมการสนับสนุนเพิ่มเติมบน Android และ Apple หยุดนโยบายที่โง่เขลา

ฉันหมายถึงคุณพูดถึง HTML5 ... มันมีไว้สำหรับเกมบนเว็บใช่ไหม?
ChrisE

คำตอบ:


14

เอ็นจิ้น Unity ทำให้คุณได้รับรู้ถึงวิธีการที่นั่น เขียนเพียงครั้งเดียวและคุณใช้ Mac / Windows Standalone และ webplayer ปรับอินพุตของคุณและจดจ่อที่การโทรและคุณใช้ iOS / Android


12

สำหรับนักพัฒนาอินดี้ขนาดเล็กที่มีเงินทุน / เวลา จำกัด (และอาจจะเน้นไปที่ 'ทำอะไรที่เจ๋งกว่า' ทำบางสิ่งที่ให้ผลกำไร ') การพยายามข้ามแพลตฟอร์มจากจุดเริ่มต้นอาจเป็นการต่อต้าน ต้องใช้ความพยายามอย่างมากในการสร้างเครื่องมือแพลตฟอร์มและเทคโนโลยีข้ามแพลตฟอร์ม (API กราฟิก, endianness, อุปกรณ์อินพุตและอื่น ๆ ) - เวลาที่สามารถใช้ในด้านความคิดสร้างสรรค์ของการพัฒนาเกม

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

หากคุณเขียนโค้ดใน C / C ++ ส่วนใหญ่จะเป็นรอยขีดข่วนตราบใดที่คุณยังคงรักษาโค้ดไว้อย่างเป็นระบบและทำการตัดสินใจที่สมเหตุสมผลเกี่ยวกับรูปแบบข้อมูลและมิดเดิลแวร์ / ไลบรารี่จากนั้นการสนับสนุนแพลตฟอร์มอื่น ๆ ในภายหลัง

หากเทคโนโลยี / เครื่องมือข้ามแพลตฟอร์มของบุคคลที่สาม (เช่น Unity) เป็นตัวเลือกสำหรับโครงการของคุณย่อมเป็นสิ่งที่ควรพิจารณา

หลัก 'ปัญหาแพลตฟอร์ม' สำหรับอินดี้ดูเหมือนว่าจะเป็น Xbox360 Indie Games (C # เท่านั้น, การเข้าถึงเครือข่ายที่ จำกัด , ฯลฯ ), และอาจเป็น Android (ความแตกต่างอย่างมากในประสิทธิภาพของอุปกรณ์ / ขนาดหน้าจอ / อุปกรณ์อินพุต) หากคุณมุ่งมั่นที่จะสนับสนุนสิ่งเหล่านี้ให้คาดหวังว่างานการย้ายที่มีขนาดใหญ่ขึ้นหรือวางแผนที่จะมุ่งเน้นเฉพาะงานเหล่านั้นเท่านั้น


ใช่หิน Unity3D www.unity3D.com
BerggreenDK

ฉันเห็นด้วยกับ @bluescrn - ดีกว่าที่จะรู้เกือบทุกอย่างเกี่ยวกับเกือบจะไม่มีอะไรเลยกว่ารู้อะไรเกือบทุกอย่าง: แจ็คของทุกลักษณะต้นแบบของใคร
rodrigo-silveira

3

คุณบอกว่าการพัฒนาอิสระข้ามแพลตฟอร์ม อุปสรรคที่ใหญ่ที่สุดคือทรัพยากรและนั่นหมายถึงการขาดเวลาส่วนใหญ่ แต่ยังขาดความรู้และการเงินที่อาจเกิดขึ้น (ค่าธรรมเนียมใบอนุญาตการซื้ออุปกรณ์ ฯลฯ )

อินดี้หรือไม่อุปสรรค์ที่ใหญ่ที่สุดคือการออกแบบ อย่างที่คุณพูดเกมที่ทำงานบน Xbox360 และ iPad อาจทำงานได้ แต่พวกเขาก็ต้องมีความแตกต่างในแง่ของการออกแบบ 360 มีตัวควบคุม iPad เป็นหน้าจอสัมผัส นอกจากนี้การพัฒนาสำหรับ 360 จะทำใน Windows โดยใช้ C # เป็นภาษา iPad สามารถกำหนดเป้าหมายได้เฉพาะบนคอมพิวเตอร์ Mac OS และใช้ C, C ++ หรือ Objective-C หรือ Javascript ถ้าคุณต้องการ บางสิ่งบางอย่างไม่ได้ผสมกันไม่ว่าคุณจะทำอะไร

สิ่งที่คุณพูดเกี่ยวกับแพลตฟอร์มที่แตกต่างถือเป็นจริงวันนี้ ใช้ C / C ++ และ SDL และคุณสามารถเขียนโปรแกรมข้ามแพลตฟอร์มบนเครื่องที่เหมือนพีซีอาจราบรื่นกว่าปีที่ผ่านมา อย่างไรก็ตามมันเป็นปัญหาเสมอและจะยังคงเป็นปัญหากับพอร์ตเกมจากพีซีไปยังคอนโซลไปยังมือถือและในทางกลับกัน มันเพิ่งจะเด่นชัดมากขึ้นในช่วงไม่กี่ปีที่ผ่านมาโดยอนุญาตให้นักพัฒนาอินดี้สามารถตั้งโปรแกรมคอนโซล (หรือผู้พัฒนาแฮ็คเข้าถึงเพื่อสร้างเกมโฮมบรูว์) และโดยอุปกรณ์พกพาที่มีประสิทธิภาพเพียงพอที่จะเรียกใช้เกม

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


ที่จริงแล้วฉันจะบอกว่าเวลาในการพอร์ตเป็นสิ่งหนึ่งที่นักพัฒนา / กลุ่มอิสระมีแนวโน้มที่จะมีมากกว่าสตูดิโอที่ขับเคลื่อนด้วยผู้เผยแพร่ขนาดใหญ่

มีการออกแบบเกมมากมายที่ให้ความสำคัญกับทุกแพลตฟอร์ม - ตัวอย่างเช่นเกมกระดานเสมือนจริงแบบเทิร์นเบสที่มีผลกระทบต่อแพลตฟอร์มอย่างต่อเนื่อง มีเกมปริศนาบล็อกล้ม / จับคู่มากมาย สิ่งเหล่านี้ไม่สามารถ "แจ้งความ" ได้ในแบบดั้งเดิมอีกต่อไป - การย้ายเกมจาก XBLIG ไปยัง iPhone เป็นการรับประกันการเขียนรหัสใหม่ทั้งหมด

3

ฉันคิดว่ากรอบอินเทอร์เฟซที่เรียบง่ายพกพาและเปิดโล่งเป็นสิ่งที่จำเป็นจริงๆ บาง musings:

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

ในอุดมคติแล้วผู้พัฒนาของเราจะสามารถระบุวิธีการทั่วไปที่แตกต่างกันไม่กี่ UIs ที่เหมาะสมสำหรับประเภทของเกมที่กำลังเขียน (พวกเขาอาจตัดสินใจที่จะให้ UI คีย์บอร์ดและเมาส์, UI ของเมาส์เท่านั้นและ UI แบบมัลติทัชเป็นตัวอย่างโดยพลการ)

จากนั้นเฟรมเวิร์กจะทำหน้าที่เป็นสื่อกลางระหว่างแพลตฟอร์มและรหัสเกมคล้ายกับกรอบข้ามแพลตฟอร์ม GUI เช่น QT และ GTK

การมีกรอบงานดังกล่าวจะไม่สามารถแก้ไขปัญหาข้อกำหนดด้านภาษาที่เข้ากันไม่ได้ แต่อย่างน้อยก็จะแค็ปซูลการเรียกใช้เฉพาะระบบทั้งหมดที่อยู่เบื้องหลัง API ทั่วไปซึ่งควรทำให้การย้ายภาษาตรงไปตรงมามากขึ้น

ทีนี้ตอนนี้ที่ฉันเขียนทั้งหมด: ไม่มีใครรู้ว่ามีกรอบเช่นนั้นมีอยู่แล้วหรือไม่?


3

ด้วยโปรเจ็กต์อย่าง MonoTouch และ XNATouch มันดูเหมือนว่า XNA จะทำให้คุณได้ใช้แพลตฟอร์มส่วนใหญ่ด้วยการปรับแต่งเล็กน้อย น่าเสียดายที่ Apple ตอร์ปิโดว่าเมื่อพวกเขาเปลี่ยนข้อกำหนดและเงื่อนไขเพื่อ จำกัด ภาษาที่คุณสามารถใช้ได้ ตอนนี้ Unity ได้พบกับทุกสิ่งทุกอย่างที่สวยงามแม้ว่าใน XBOX มันจะทำให้คุณได้รับ XBLA แต่ไม่ใช่ XBLIG ดังนั้นจึงไม่ใช่ตัวเลือกสำหรับอินดี้ขนาดเล็ก

วิธีการหนึ่งอาจจะสร้างกรอบงานที่ใช้หลักการเดียวกันในหลายภาษา / แพลตฟอร์มจากนั้นเป็นเพียงเรื่องของการปรับแต่งไวยากรณ์ให้เข้ากับเกมพอร์ต คุณอาจต้องการเปิดเกมของคุณใน Flash ซึ่งสามารถพัฒนาได้อย่างรวดเร็วและเข้าถึงผู้ชมจำนวนมากหากเป็นพอร์ตที่ประสบความสำเร็จกับ iPhone, XNA เป็นต้นวิธีนี้คุณจะรู้ว่าคุณมีเกมที่สนุกก่อนที่จะลงมือทำเอง


แอปเปิ้ลโง่ที่ จำกัด ภาษาการเขียนโปรแกรม! WHO?!?!
FreshJays

2

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

ฉันสงสัยว่าสิ่งนี้จะเปลี่ยนไปเมื่อการเล่นเกมบนเครือข่ายทางสังคมเติบโตขึ้นเนื่องจากอาจมีเงินมากขึ้นในการทำให้ทุกคนเข้าสู่ระบบการเล่นเกมทางสังคมเดียวกัน


2

ฉันเพิ่งค้นพบHaxe และศัตรู มันอ้างว่าเป็นแอพข้ามแพลตฟอร์มที่รองรับเดสก์ท็อปและอุปกรณ์พกพาและแฟลชจากฐานรหัสเดียว คุ้มค่าดู


1

เครื่องมือพัฒนาข้ามแพลตฟอร์มที่ใหม่มากฉันไม่จำเป็นต้องแนะนำว่ามันคือhttp://www.monkeycoder.co.nz/

มันยอดนิยมทุกแพลตฟอร์มที่คุณกล่าวถึง

ในขณะที่มันใหม่เกินกว่าที่จะตัดสินจริง ๆ มันมีสายเลือดที่ยอดเยี่ยม: ก่อนหน้านี้ผู้สร้างได้สร้าง Blitz3D และ BlitzMax ซึ่งเป็นเครื่องมือในการพัฒนาที่ยอดเยี่ยมสำหรับนักพัฒนาเกมอินดี้


0

ฉันโชคดีกับ airplay SDK - อย่างน้อยใน x86 และเห็นได้ชัดว่าตั้งเป้าหมายกับ iPhone ได้เป็นอย่างดี

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