ฉันจะใช้ระบบการเขียนโปรแกรมในเกมของฉันที่สามารถเข้าถึงได้มีประสิทธิภาพและรวดเร็วในการเขียนโค้ดได้อย่างไร


15

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

  1. สามารถเข้าถึงได้
  2. มีประสิทธิภาพ (ขั้นต่ำเปล่าจะสมบูรณ์ทัวริง)
  3. รหัสรวดเร็วใน

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


ฉันจะแปลกใจถ้าใครสามารถยกตัวอย่างให้คุณได้ สาเหตุที่ผมทำจริงๆคิดว่านี้ความต้องการบางการวิจัย (เช่นว่ามนุษย์ใช้ตรรกะและสิ่งที่ไม่ได้สิ่งที่ปัจจัยทางจิตวิทยาและมนุษย์เหล่านี้เป็นศูนย์กลางสิ่ง)
Sidar

2
ไม่มีใครพูดถึง Scratch?
Russell

2
ฉันจะไม่แนะนำการลงคะแนนอย่างใกล้ชิด แต่ฉันต้องการชี้ให้เห็นว่าสิ่งนี้ค่อนข้างเข้ากันได้ดีกับ "หากคุณสามารถจินตนาการหนังสือทั้งเล่มที่ตอบคำถามของคุณคุณกำลังถามคำถามมากเกินไป" หมวดหมู่คำถามที่จะไม่ถาม จากคำถามที่พบบ่อย; นี่เป็นปัญหาที่ยากมากและในขณะที่ผู้คนที่นี่สามารถให้คำแนะนำได้นี่เป็นปัญหาที่เกินขอบเขตของไซต์ SE เพื่อแก้ไข
Steven Stadnicki

มันน่าสังเกตว่าทัวริง-ครบถ้วนสามารถทำได้โดยเกมคอนเวย์ของชีวิต , Minecraftและอื่น ๆ ที่ระบบดังกล่าวไม่ได้ออกแบบมาสำหรับการเขียนโปรแกรม
จะ

คำตอบ:


10

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

การอนุญาตให้ใช้ระบบที่อนุญาตให้ผู้เริ่มต้นตั้งโปรแกรมด้วยการมองเห็นบางทีสิ่งที่คล้ายกับเครื่องมือการเขียนโปรแกรม Lego Mindstorms :

ป้อนคำอธิบายรูปภาพที่นี่

ตำแหน่งที่มีองค์ประกอบการลาก / วาง ส่วนประกอบมีอินพุตและเอาต์พุต ส่วนประกอบอาจเป็นสิ่งที่เรียบง่ายเช่นANDหรือORประตูหรือซับซ้อนกว่าเช่นการทดสอบศัตรูใกล้เคียง

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

แน่นอนว่ากระดูกสันหลังของระบบนั้นเป็นภาษาเขียน เครื่องมือแสดงผลเป็นเพียงการให้ผู้ใช้อย่างรวดเร็ววิธีที่ในการเขียนโปรแกรมอย่างง่ายและอนุญาตให้ผู้เริ่มต้นเริ่มต้นใช้งาน

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

โชคดี! เสียงเหมือนโครงการที่สนุก


ขอบคุณสำหรับคำอธิบาย จริง ๆ แล้วฉันกำลังคิดที่จะทำสิ่งต่าง ๆ เช่น NXT-G เพียงฉันเท่านั้นที่รู้จากประสบการณ์ว่ามันยากแค่ไหนที่จะสร้างโปรแกรมที่ซับซ้อนในภาษาเช่นนั้น ฉันชอบความคิดในการแปลงโปรแกรมภาพเป็นรหัสทำให้ผู้เล่นสามารถย้อนกลับและแก้ไขโปรแกรมของพวกเขาแบบข้อความเมื่อพวกเขามีประสบการณ์มากขึ้นดังนั้นฉันจะใช้มัน
Dimitriye98

1
ระวังว่ามันง่ายที่จะสร้างโค้ดสคริปต์บางส่วนจากการแสดงกราฟิก แต่ยากมากในการสร้างการแสดงกราฟิก (มีความหมายและอ่านได้) ออกมาจากสคริปต์ ดังนั้นคุณอาจสิ้นสุดด้วยไวยากรณ์สคริปต์ที่ จำกัด ของตัวเองมาก
Imi

1
มันไม่น่าเป็นไปได้ที่คุณต้องการใช้สคริปต์ -> ภาพด้วยเหตุผลที่แน่นอน ติดกับสคริปต์ภาพ>
MichaelHouse

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

5

คุณอาจต้องการดูบล็อกของ Google พวกเขารวมองค์ประกอบภาพกับคำศัพท์การเขียนโปรแกรมที่รู้จักในขณะที่รักษาระดับการเข้าถึงที่ดีพอสมควร

ป้อนคำอธิบายรูปภาพที่นี่

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


ภาษาที่น่าสนใจจากมุมมองการช่วยสำหรับการเข้าถึงอย่างไรก็ตามการเขียนโปรแกรมในนั้นช้ามาก (ฉันเพิ่งลอง) ...
Pasha

@PashaS แน่นอนฉันคิดว่านั่นเป็นส่วนหนึ่งของราคาที่คุณต้องจ่ายเพื่อลองและได้รับสิ่งที่ดีที่สุดของทั้งสองโลก
Quetzalcoatl

4

ฉันประหลาดใจที่สิ่งนี้ไม่ได้ถูกกล่าวถึงมาก่อน แต่เป็นของ MIT Scratchใช้อินเตอร์เฟสบล็อกที่รวดเร็วในการเขียนโค้ดทำให้ผู้ใช้สามารถสร้างฟังก์ชั่นของตัวเองและสามารถซับซ้อนอย่างน่าประหลาดใจสำหรับภาษาที่สร้างขึ้น รหัส.

Stencylเป็นอีกตัวอย่างหนึ่งของการเข้ารหัสบล็อกที่ทำสิ่งที่คล้ายกับสิ่งที่คุณต้องการ การเข้ารหัสด้วยบล็อคแบบนี้มีประสิทธิภาพมากกว่าและใช้เวลาน้อยกว่าอินเตอร์เฟสการเขียนโปรแกรมแบบเห็นภาพเหมือนกับที่ใช้โดย Lego NXT Stencyl อนุญาตให้ผู้ใช้รหัสใน Actionscript หรือบล็อก

ฉันขอโทษที่ไม่มีรูปภาพฉันไม่มีชื่อเสียงพอที่จะโพสต์ภาพได้


2

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

ภาษาที่เหมือนของ BPEL จะไม่รู้สึกเหมือนการเขียนโปรแกรมมากขึ้นเช่นการกำหนดเส้นทางและระบบเชื่อมต่อ ดังนั้นคุณสามารถมีระบบการกำหนดเป้าหมายเชื่อมต่อกับระบบปืนด้วยตรรกะบางอย่างในระหว่าง


+1: แม้ว่าฉันจะไม่สนับสนุน BPEL แต่แนวทางของมันคือคำตอบที่ฉันจะให้ ภาษาปกติสูงที่ทั้งง่ายต่อการแสดงในข้อความหรือภาพและมุ่งเน้นที่การกำหนดเส้นทาง / การตอบสนองเหตุการณ์มากกว่ากระบวนทัศน์การเขียนโปรแกรม "ปกติ" มากกว่า
Sean Middleditch

1

พิจารณาวิธีนี้:

  1. ตรวจสอบให้แน่ใจว่าสคริปท์สคริปต์ของคุณสามารถแสดงผลได้ในกลไกแบบอิงกฎอย่างง่าย ตัวอย่างเช่นคุณมี "ทริกเกอร์" ที่เกิดขึ้นในระหว่างการเล่นเกมที่เกี่ยวข้องกับ "เงื่อนไข" ที่ต้องกรอกข้อมูลจนเต็มแล้วจึงดำเนินการ "การดำเนินการ" (ขโมยโดย Starcraft 2 Editor) อย่างไร้ยางอาย
  2. จากนั้นให้ UI ที่คุณสามารถลาก 'วาง' การกระทำ / เงื่อนไข / ทริกเกอร์ที่กำหนดไว้ล่วงหน้าแล้วสร้าง 90% ของกรณีการใช้งานที่ผู้คนมักต้องการทำ
  3. ตอนนี้รับเอ็นจิ้นการเขียนสคริปต์ที่มีประสิทธิภาพและเป็นที่นิยมซึ่งรวมอยู่ใน Lua Python หรือ C #
  4. ในที่สุดเขียนสอง dozends ของการกระทำ / เงื่อนไข / ทริกเกอร์ตัวเองในภาษานั้น ตรวจสอบให้แน่ใจว่าผู้ใช้ที่ปรับแต่งเองสามารถคัดลอกวางแก้ไขและรวมแอคชั่นเหล่านี้และแอคชั่นใหม่ภายในตัวแก้ไข drag'n'drop ของคุณได้อย่างง่ายดาย
  5. คุณอาจต้องการที่จะสกัดกั้นทริกเกอร์, เงื่อนไขและการกระทำของคุณเพื่อให้คุณต้องการพื้นฐานมากกว่าสองสามอย่างเช่น "GameObject", "ตำแหน่ง", "หมายเลข" หรือ "สตริง" ใน UI คุณจะต้องมีกล่องโต้ตอบเพื่อกำหนดพารามิเตอร์เหล่านี้ แต่นั่นก็ยังทำงานได้น้อยกว่าถ้าคุณจะต้องสร้างสคริปต์ทั้งหมดผ่านการดำเนินการของ UI

นั่นเป็นวิธีที่เร็วที่สุดที่ฉันสามารถนึกได้ว่าจะได้รับขนมที่ไม่มีความเจ็บปวดมากเกินไป คุณจะได้รับ click'n'drag noobs และ vim-geeks บนเครื่อง และถ้าคุณทำให้กลไกง่าย ๆ (เช่น Trigger -> Condition -> Action) คุณไม่ต้องใช้เวลาหลายปีในการพัฒนา UI สำหรับตัวแก้ไขสคริปต์ที่มีประสิทธิภาพและยังใช้งานง่าย

ตัวอย่างบางส่วนเพื่อชี้แจงสิ่งที่ฉันหมายถึง:

  • ทริกเกอร์อาจเป็น: "เกมเริ่มต้นเฟรมเวิร์ก", "โหลดเกม", "สร้างหน่วย", "ทำลายหน่วย", "ผู้เล่นเสียหาย" และอื่น ๆ ทริกเกอร์มักจะมีพารามิเตอร์บางอย่าง (เช่นหน่วยที่สร้างได้รับ GameObject ที่สร้างขึ้น)
  • เงื่อนไขเป็นเงื่อนไขแบบบูลมาตรฐานและเงื่อนไขทางคณิตศาสตร์พื้นฐาน (และ / หรือ / ไม่ / เท่ากับ / มากกว่า ... ) บวกกับเงื่อนไขทั่วไปบางอย่างที่คุณพบในเกมของคุณเช่น "หน่วยมีสุขภาพสมบูรณ์" หรือ "เชื่อมต่อผู้เล่นอย่างน้อยสองคน" เงื่อนไขมักจะมีพารามิเตอร์ที่ผู้ใช้ต้องกรอก (ใช้ UI)
  • การดำเนินการเป็นสคริปต์ที่อาจใช้พารามิเตอร์ง่ายๆ เช่น "แพนกล้องไปที่ XXX", "Kill Unit Y", "Game over", "Execute Trigger" และ "Call Actions X, Y, Z ... ตามลำดับ"

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

ฉันเห็น .. ว่าฟังดูเหมือนเป็นเกมที่น่าสนใจ;) คุณเคยดูเกมที่คล้ายกันเช่น "Code Hero" หรือ "Garry's Mod" ซึ่งพยายามที่จะให้ความสามารถในการเขียนโปรแกรมโดยไม่ทำลายเกมหรือไม่? อย่างไรก็ตามคุณยังสามารถกู้คำแนะนำพื้นฐานของฉันและแยกปัญหาออกเป็นส่วนการเขียนสคริปต์และ UI ขอให้โชคดีกับเกมของคุณ :)
Imi

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