Po pierwsze przepraszam za długi post. Zadaję kilka pytań o haxe i jego przydatność jako narzędzia do rozwiązania problemu, z którym się borykam. Mam bardzo ograniczoną wiedzę o haxe, ale wiem, że moja idealna rola dla haxe w moim projekcie nie jest normalnym użyciem haxe. Więc staram się unikać marnowania czasu, ponieważ nie uczę się tego języka (pomimo tego, że wygląda to naprawdę zabawnie i wydajnie) tylko po to, aby przekonać się, że nie nadaje się do tego celu. Mam nadzieję, że otrzymasz od weterynarza porady na temat tego, czy nadają się do tego celu. Naprawdę mam nadzieję, że tak jest.Używanie haxe jako transpilera między C++ a JavaScriptem
Oto co usiłuję osiągnąć:
Pracuję w branży gier i muszę stworzyć grę zarówno w C++ i JS. C++ dla systemu wbudowanego i JS dla Internetu i urządzeń mobilnych. Mam duże doświadczenie zarówno w C++, jak i JS.
Gry, które rozwijam Chcę napisać tylko raz. Teraz mógłbym użyć czegoś takiego jak emscripten do przechodzenia z C++ do JS, ale spowoduje to skompilowany kod JS, który nie będzie mógł być debugowany za pomocą narzędzi do Chrome. Jestem converned, że wpadnę na błędy krawędzi krawędzi z kompilowanym JS, którego nie mogę łatwo powrócić do oryginalnego C++. Ponadto niektóre platformy do gry wymagałyby laboratoriów uczciwości, aby zobaczyć kod źródłowy, który byłby problemem dla skompilowanego JS.
To, czego naprawdę potrzebuję, to źródło do kompilatora, który produkuje natywny i czytelny dla człowieka kod C++ i JS, z którym będę mógł pracować i modyfikować w swojej natywnej formie, jeśli będzie to konieczne, stąd haxe. Spojrzałem na kod produkowany przez haxe dla C++ i JS. JS wygląda na łatwego do zrozumienia i pracy. C++ nie tak bardzo, ale wciąż prawie do zaakceptowania. Mogę nawet powstrzymać haxe od kompilowania i łączenia C++, którego nie potrzebuję. Chcę tylko kodu źródłowego.
Jak dotąd tak dobrze.
Teraz mam framework gry w C++, który wykorzystuje silnik Oxygine 2d. Jest w stanie pokazywać sprite'y itp., Jak również ramy, które stworzyłem dla magistrali komunikatów i skończonych maszyn stanów (ładuje również bardziej użyteczne klasy). Mam również podobne ramy w JS, który używa Pixijsa do jego silnika 2d i ma własną magistralę komunikatów itp., Podobnie jak silnik C++.
Teraz, co chcę zrobić, to pisać moduły w haxe, które po transpozycji do C++ i JS, że kod może być włączony jako część struktury i pracować z jej szanowanym silnikiem językowym. Każdy obiekt, który utworzę w haxe, będzie bardzo enkapsulowany i będzie po prostu musiał zasubskrybować magistralę komunikatów, obsługiwać wiadomości i wysyłać wiadomości z powrotem. Może również potrzebować wiedzy na temat korzystania z jego maszyny stanu silnika. Tak więc nie mam pojęcia, czy jest to możliwe z haxe, ponieważ magistrala komunikatów (wraz z innymi obiektami) nie zostanie zapisana w haxe, ale zostanie dostarczona do modułu po tym, jak zostanie on transponowany i wbudowany w swój macierzysty projekt. Może mogę napisać własną bibliotekę haxe, która zna składnię moich dwóch silników gier i może przenosić w zależności od języka docelowego? Nie jestem pewien, czy to możliwe.
Dziękujemy za poświęcenie czasu na przeczytanie i porady, które można udzielić.
Myślę, że Haxe jest stworzony właśnie z tego powodu. Myślę, że twoje pytanie jest bardzo szerokie, ale możesz dokonać rozróżnienia między tym, co jest używane w C++/js przy użyciu kompilacji warunkowej. Oznacza to, że powinieneś zrobić '#if js' lub' #if cpp' Zobacz http://haxe.org/manual/lf-condition-compilation.html –
Próbowałem osiągnąć coś podobnego (skompiluj Haxe do C++ i zaimportuj moje Moduły Haxe w istniejącym projekcie C++), ale na IRC#Haxe, ludzie zdecydowanie odradzają to robić. Z tego, co odkryłem po pewnym wyszukiwaniu, myślę, że mają całkowitą rację. Wyjaśnili mi, że wygenerowany kod C++ jest idealny do bezpośredniego kompilowania przez kompilator C++, ale nic więcej. –
Istnieje [inna istotna dyskusja] (https://groups.google.com/forum/#!topic/haxelang/gSnoTKv7HEY) na temat transpilera C++ do Haxe. –