Daedalus IDE 16203 23

O temacie

Autor inż. Avallach

Zaczęty 27.11.2016 roku

Wyświetleń 16203

Odpowiedzi 23

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
https://github.com/Avallach7/daedalus-intellij

Tak tylko tu zostawiam. Na razie wczesna alfa, ale niedługo będę potrzebował testerów ;)
Kodzę to w nadziei że przysporzy się do szybszego skończenia Dziejów Khorinis. Przy okazji - przenieśliśmy się na GitHuba.
SoulFire robi sobie markę najbardziej profesjonalnie tworzonego obecnie w kraju moda :D

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Daedalus IDE
#1 2016-12-01, 19:35(Ostatnia zmiana: 2016-12-01, 20:19)
Wydałem już wersję 0.3 i wrzuciłem do oficjalnego repozytorium pluginów platformy IntelliJ. Działa wykrywanie na żywo błędów składni i błędnych referencji.

Instalacja IDE i otwieranie skryptów:
1. https://www.jetbrains.com/idea/download/download-thanks.html?code=IIC
2. File > Settings > Plugins > Browse repositories, "Daedalus support", Install
3. File > New > Project from Existing Sources...
Dajcie znać jeśli wydaje się to zbyt skomplikowane. Można pomyśleć nad uproszczeniem.

Sawik

Sawik

Użytkownicy
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Użytkownicy
  • Rebel
Dajcie znać jeśli wydaje się to zbyt skomplikowane. Można pomyśleć nad uproszczeniem.
:lol: :ok:
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny


Splash

Splash

Moderator
posty4209
Propsy3411
ProfesjaNierób
  • Moderator
Ja sobie poradziłem. Ale na razie nie mam potrzeby by tego użyć.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Widzę, że jest wersja 0.5. Co brakuje i co zamierzasz jeszcze dodać? Potrzebujesz pomocy? Dlaczego nie używasz testów jednostkowych? :P

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Daedalus IDE
#6 2016-12-13, 01:02(Ostatnia zmiana: 2016-12-13, 01:17)
Zamierzam dodać kontekstowe autouzupełnianie i uruchamianie gry przyciskiem w IDE.
Co do pomocy - potrzeba pomysłów i implementatorów do nich ;) Tak jak wspomniałem w opisie, zachęcam do commitowania. Nie mam "swojego osobistego planu" na to narzędzie. Celowo wybrałem licencję MIT i chciałbym żeby projekt był traktowany jako całkowicie otwarty na rozbudowę. Jedyne commity które bym odrzucał, to takie które coś psują.
Nie używam testów bo w pluginie jest bardzo niewiele logiki. Zdecydowana większość kodu jest generowana (cały lekser i parser).

Inne rzeczy które fajnie byłoby dodać, to np wykrywanie martwego kodu, rozpoznawanie entry pointów z silnika (jest ich wiele różnych rodzajów), listy definicji ze względu na typ (klasy, npc, itemy, dialogi...).
Ewentualnie generatory, ale takie których istotą byłoby to że naprawdę generują *zawartość* a nie tylko zamieniają uzupełnione pola tekstowe na kod. Mogłyby przykładowo losować ekwipunek i wygląd tworzonej postaci. Nie wiem jednak czy ja osobiście będę chciał aż tak to rozbudowywać. Jeśli zaimplementuje je kto inny - proszę bardzo.

Aha, trzeba by przerobić resolver referencji żeby brał pod uwagę kolejność parsowania plików w gothic.src. Obecnie zawsze uznaje że kolejność jest taka że akurat będzie działać. Chociaż to jest trochę śliska sprawa - zEngin pozwala na używanie w pliku src wildcardów w celu parsowania całej zawartości katalogu w *nieokreślonej* kolejności. To powoduje że np na Linuxie oryginalne czyste skrypty się nie parsują - bo kilka plików trafia do parsera w innej niż na Windowsie kolejności.

Z zalet korzystania z tego plugina warto zwrócić uwagę na świetną integrację IntelliJ z systemami kontroli wersji. To chyba oczywiste dla każdego kto zna się na temacie, że programowanie moda skali Dziejów Khorinis czy Złotych Wrót II bez systemu kontroli wersji to tragiczna amatorszczyzna.

No i to chyba jedyny edytor Daedalusa wspierający więcej niż tylko Windowsa. Ostatnio wróciłem do moddingu ze względu na prace nad build systemem dla Dziejów Khorinis - pracuję tylko i wyłącznie na Linuxie.

Aha, no i nie ma jeszcze skończonego semantycznego kolorowania (np koloruj inaczej referencje do stałych i zmiennych) - jest tylko leksykalne (np koloruj inaczej słowa kluczowe i literały liczb).

Jak znasz Anta, byłoby super zautomatyzować generowanie kodu parsera i leksera. Obecnie wymaga to paru ręcznych kliknięć.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Anta nie znam, więc z tym nie pomogę.
Przy ustawionym SDK na wersję Javy jdk1.8.0_51 wyskakują mi takie błędy:
Error:(3, 26) java: package com.intellij.lexer does not exist
Error:(4, 35) java: package com.intellij.openapi.editor does not exist
Error:(5, 42) java: package com.intellij.openapi.editor.colors does not exist
Error:(6, 38) java: package com.intellij.openapi.fileTypes does not exist
Error:(7, 24) java: package com.intellij.psi does not exist
Error:(8, 29) java: package com.intellij.psi.tree does not exist
Error:(9, 29) java: package com.intellij.psi.tree does not exist
Error:(13, 33) java: package org.jetbrains.annotations does not exist

Natomiast gdy ustawię SDK na IntelliJ IDEA Community Edition IC-163.9166.29, to mam takie błędy:
D:\Projekty\Daedalus IDE\daedalus-intellij\gen\org\avallach\daedalus\parser\Parser\_DaedalusLexer.java
Error:(3, 1) java: package org.avallach.daedalus.parser.Parser clashes with class of same name
Error:(7, 32) java: package org.intellij.grammar.psi does not exist
D:\Projekty\Daedalus IDE\daedalus-intellij\gen\org\avallach\daedalus\parser\Parser.java
Error:(15, 8) java: class org.avallach.daedalus.parser.Parser clashes with package of same name
D:\Projekty\Daedalus IDE\daedalus-intellij\src\org\avallach\daedalus\ide\highlighting\DefinitionHighlighter.java
Warning:(21, 30) java: createTextAttributesKey(java.lang.String,com.intellij.openapi.editor.markup.TextAttributes) in com.intellij.openapi.editor.colors.TextAttributesKey has been deprecated
D:\Projekty\Daedalus IDE\daedalus-intellij\src\org\avallach\daedalus\parser\LexerAdapter.java
Error:(9, 19) java: cannot find symbol
  symbol:   class _DaedalusLexer
  location: class org.avallach.daedalus.parser.LexerAdapter
D:\Projekty\Daedalus IDE\daedalus-intellij\src\org\avallach\daedalus\ide\highlighting\GenericSyntaxHighlighter.java
Warning:(35, 64) java: createTextAttributesKey(java.lang.String,com.intellij.openapi.editor.markup.TextAttributes) in com.intellij.openapi.editor.colors.TextAttributesKey has been deprecated
D:\Projekty\Daedalus IDE\daedalus-intellij\src\org\avallach\daedalus\ide\highlighting\ReferenceHighlighter.java
Warning:(20, 30) java: createTextAttributesKey(java.lang.String,com.intellij.openapi.editor.markup.TextAttributes) in com.intellij.openapi.editor.colors.TextAttributesKey has been deprecated
D:\Projekty\Daedalus IDE\daedalus-intellij\gen\org\avallach\daedalus\parser\psi\impl\VarDeclImpl.java
Error:(21, 12) java: cannot find symbol
  symbol:   method visitVarDecl(org.avallach.daedalus.parser.psi.impl.VarDeclImpl)
  location: variable visitor of type org.avallach.daedalus.parser.psi.Visitor

Co mam zrobić, jak ustawić biblioteki, by nie mieć takich błędów?

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Na pewno dobrze zrobiłeś kroki z "Contribution" ? Wygląda jakby nie zgadzały się ścieżka generowanego lexera. Nie wybrałeś wtedy "gen/org/avallach/daedalus/parser/Parser/_DaedalusLexer.flex" zamiast gen/org/avallach/daedalus/parser/_DaedalusLexer.flex?

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Rzeczywiście, był błąd w ścieżce.
Teraz mam taki błąd:
Error:(7, 32) java: package org.intellij.grammar.psi does not exist
D:\Projekty\Daedalus IDE\daedalus-intellij\gen\org\avallach\daedalus\parser\_DaedalusLexer.java
Ale wygląda na to, że jak zakomentuje:
//import org.intellij.grammar.psi.BnfTypes;to się wszystko kompiluje.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Dziwne, plik jest niby generowany, i to generowany przez twojego IntelliJ :D
Nie wiem dlaczego sie pojawia, podejrzewam że po stronie twojej wersji pliku jflex skeleton. Nie pamiętam teraz jak sprawdzić jego ścieżkę, ale podejrzewam że kojarzysz o co mi chodzi. Zajrzyj czy tam nie było tego "import org.intellij.grammar.psi.BnfTypes;".

Tak czy inaczej wykomentowanie to w tym przypadku zupełnie wystarczające obejście.

Jurigag

Jurigag

Użytkownicy
posty869
Propsy285
ProfesjaSkrypter
  • Użytkownicy
Szkoda że dopiero teraz ktoś wpadł na taki pomysł :C
 
Skrypter/Tester - Szukasz testera/skryptera - Pisz !

Karen

Karen

Użytkownicy
Recovery Team
posty36
Propsy18
ProfesjaGracz
  • Zbanowany
  • Recovery Team
Zainstalowałem(chyba) ten plugin ale wydaje mi się że coś źle zrobiłem.

Cytuj
W trakcie pisania na żywo podkreśla błędy składniowe, niepoprawne referencje, pozwala na nawigację przez kod i proste refactoringi (jak zmiana nazw funkcji). Jeśli kod nie jest "czerwony" w edytorze, jest właściwie pewne że skompiluje się poprawnie.
Chciałem sprawdzić czy na pewno dobrze zainstalowałem i wywołałem funkcje która nie istnieje i nie była podkreślona na czerwono.

Plugin chyba dobrze zainstalowałem.
1.Pobrałem z githuba plik .jar i dodałem go jako plugin w ustawieniach IntelliJ.
2.Aktywowałem plugin.
3.Stworzyłem projekt za pomocą: Project from Existing Sources...

Co zrobiłem źle?

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Nie trzeba było pobierać nic z GitHuba - tak też się da, ale wtedy nie będą działały aktualizacje. Poprawny sposób jest podany na głównej stronie na GitHubie:
Cytuj
Install IntelliJ IDEA CE, open File > Settings > Plugins > Browse repositories, type Daedalus and hit Install

W każdym razie powinno działać tak czy inaczej. Poczekałeś chwilę aż IDE sparsuje wszystkie pliki? Podświetlanie na czerwono referencji potrafi mieć laga zależnego od tego jak szybki masz dysk i procesor, u mnie jest to do kilku sekund. Podkreślanie błędów składni powinno być natychmiastowe.

Karen

Karen

Użytkownicy
Recovery Team
posty36
Propsy18
ProfesjaGracz
  • Zbanowany
  • Recovery Team
Zainstalowałem od nowa tym razem przez IntelliJ.
Błędy składni podkreśla ale funkcje które nie istnieją nie są podkreślane. Czekałem minutę :D


Karen

Karen

Użytkownicy
Recovery Team
posty36
Propsy18
ProfesjaGracz
  • Zbanowany
  • Recovery Team
InelliJ zawiesza się na 3s.
A później wyświetla się: Cannot find declaration to go to :D

IntelliJ jest aktualny.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Jak zawiesza się, top znaczy że kolorowanie jest zapewne przerywane przez IntelliJ jako zbyt wolne. Masz za wolny procesor, dysk, albo zbyt dużo skryptów.
Dałoby się tego uniknąć, ale trzeba by zaimplementować stub psi tree... Nie robiłem tego nigdy, to sporo pracy niestety/

Jurigag

Jurigag

Użytkownicy
posty869
Propsy285
ProfesjaSkrypter
  • Użytkownicy
Ten plugin jest tylko dla IntelliJ ? Czy do innego softu od jetbrains też zadziała ?
 
Skrypter/Tester - Szukasz testera/skryptera - Pisz !



0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry