Obecnie pracuję nad kosmiczną grą typu sandbox, która w dużym stopniu będzie oferować możliwość niestandardowego programowania systemów. Chcę to wdrożyć w sposób, który jest jednocześnie
- dostępny,
- potężny (absolutne minimum byłoby kompletnością Turinga)
- szybkie w kodowaniu.
Języki tekstowe zasadniczo spełniają tylko dwa ostatnie wymagania i chociaż nie jest trudno zaprojektować język wizualny, który spełnia dwa pierwsze, języki wizualne są trudne do zaprogramowania ze względu na konieczność intensywnego używania myszy. Chociaż istnieje kilka bardzo dostępnych języków tekstowych, chcę, aby kompletni nieprogramiści mogli ułatwić sobie programowanie.
game-design
software-engineering
Dimitriye98
źródło
źródło
Odpowiedzi:
Naprawdę jedynym sposobem na posiadanie wszystkich funkcji jest wdrożenie wielu interfejsów. Dostępne i potężne to często dwa końce spektrum. Najłatwiejszym sposobem na to jest wdrożenie potężnego systemu, który ma dodatkowy interfejs umożliwiający początkującym interakcję z systemem w intuicyjny sposób.
Pozwalając na system, który pozwala początkującym programować wizualnie, być może coś podobnego do narzędzi programistycznych Lego Mindstorms :
Gdzie są elementy przeciągnij / upuść. Komponenty mają wejścia i wyjścia. Elementy mogą być proste rzeczy, jak
AND
, lubOR
bramy, lub bardziej skomplikowane jak test na pobliskich wrogów.Najlepiej byłoby, gdyby reprezentacja wizualna kompilowała skrypt w języku pisanym w tle. Jest to także potężne narzędzie do nauki języka. Jeśli początkujący może „napisać” swój program wizualnie, to przeczytaj kod, który tworzy, o wiele bardziej prawdopodobne, że go zrozumie i będzie mógł zmodyfikować wygenerowany kod. W końcu jest w stanie napisać mocniejszy kod niż pozwalają na to same narzędzia wizualne. Spełnia to wymóg ułatwienia użytkownikom programowania.
Podstawą systemu jest oczywiście język pisany. Narzędzia wizualne mają po prostu dać użytkownikom szybki sposób na zaprogramowanie czegoś prostego i umożliwić początkującym rozpoczęcie pracy.
Język pisany pozwala zaawansowanym użytkownikom robić zaawansowane rzeczy. Możesz nawet pozwolić użytkownikom na tworzenie własnych komponentów, tworząc niestandardowe skrypty. Następnie mogą ponownie wykorzystać komponenty wykonane w szybkim i łatwym interfejsie do szybkiego programowania.
Powodzenia! Brzmi jak fajny projekt.
źródło
Możesz rzucić okiem na blokadę Google , łączą elementy wizualne z rozpoznawalnymi warunkami programowania, zachowując dość przyzwoity poziom dostępności.
Możesz zobaczyć inspirację w wersji demo Maze , wielu moich nieprogramowych przyjaciół było w stanie przejść przez łamigłówki, spełniając przynajmniej niektóre z twoich kryteriów.
źródło
Dziwię się, że nie wspomniano o tym wcześniej, ale Scratch MIT wykorzystuje interfejs blokowy, który można szybko kodować. Pozwala użytkownikom tworzyć własne funkcje i może być zaskakująco skomplikowany dla języka, który został zbudowany, aby uczyć dzieci, jak kod.
Stencyl to kolejny przykład kodowania blokowego, który robi coś bardziej podobnego do tego, czego chcesz. Kodowanie za pomocą takich bloków jest o wiele bardziej wydajne i mniej czasochłonne niż wizualne interfejsy programowania, takie jak te używane przez Lego NXT. Stencyl pozwala użytkownikom kodować w ActionScript lub blokach.
Przepraszam za brak zdjęć, nie mam jeszcze wystarczającej reputacji, aby zamieszczać zdjęcia.
źródło
Język programowania BPEL ma reprezentację wizualną i wiele współpracujących z nim narzędzi. Jest to język przepływu pracy, a nie język programowania, ale jest on kompletny. Jest pełny, ale łatwo jest pisać zarówno dla programistów, jak i biznesmenów i łatwo można go przełożyć z formy wizualnej na tekstową. Nie sądzę, żeby był dobrym językiem gry, ale może być źródłem inspiracji. Biorąc pod uwagę ilość silników i narzędzi BPEL, powinno być możliwe ponowne wykorzystanie niektórych pomysłów i / lub kodu.
Język podobny do BPEL nie będzie przypominał programowania, a bardziej systemów routingu i łączenia. Możesz więc mieć system celowania podłączony do systemu broni z logiką pomiędzy nimi.
źródło
Rozważ to podejście:
To jest najszybszy sposób, w jaki mogę wymyślić wszystkie cukierki bez zbytniego bólu. Dostajesz noobów click'n'drag, a także vim-maniaków na pokładzie. A jeśli utrzymasz prostotę mechaniki (np. Trigger -> Condition -> Action), nie będziesz musiał spędzać wielu lat na opracowywaniu interfejsu użytkownika dla wydajnego i wciąż łatwego w użyciu edytora skryptów graficznych.
Kilka przykładów, aby wyjaśnić, co mam na myśli:
źródło