Autor Wątek:  Exe - konwersja na C++  (Przeczytany 1157351 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #90 dnia: 27 Listopada 2016, 13:11:06 »
W tej chwili na pewno fizyka nic nie podmienia, gdyż jest liczona w każdej klatce na nowo. Stąd były takie problemy, że jeśli FPS spadał zbyt bardzo to cuda zaczynały się dziać z zachowaniem składów. Tamtego if-a w GetVDc zakomentowałem. Zresztą nie tylko tam bo było jeszcze parę miejsc gdzie były if-y prowadzące np. do zakomentowanych funkcji, chyba najlepszym miejscem były trzy if-y po kolei sprawdzające jakieś tam rzeczy po czym we wszystkich odnogach każda potencjalnie wywoływana funkcja była zakomentowana w związku z czym exe po zrobieniu iluś branchy (z każdym traci cykle pracy) nie robiło nic.

  Dodano: 29 Listopada 2016, 20:12:18
Pogadaliśmy sobie troszkę, a ja tu pracuję ;)
Z placu boju to teraz sprawdzam każdą funkcję w moverze i poprawiam, uzupełniam braki i ewentualnie usuwam niepotrzebne rzeczy, np coś takiego:
PosRatio = -PosRatio * 0;albo takiego
PosRatio = 1.0 * (PosRatio * 0 + 1) * PosRatio; // 1 * 1 * PosRatio = PosRatio.
Właśnie skończyłem tracktionforce i zaczynam brakeforce. Idzie do przodu. Narazie commitów nie wrzucam na serwer bo to bez sensu jest. Wrzucę wszystko jak skończę i będzie można skompilować.
« Ostatnia zmiana: 29 Listopada 2016, 20:12:18 wysłana przez firleju »
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #91 dnia: 29 Listopada 2016, 21:05:27 »
W tej chwili na pewno fizyka nic nie podmienia, gdyż jest liczona w każdej klatce na nowo. Stąd były takie problemy, że jeśli FPS spadał zbyt bardzo to cuda zaczynały się dziać z zachowaniem składów.[ciach]

No i dlatego fizykę wypadało by z tego oczekiwania wybić i ograniczyć częstotliwość przeliczania do arbitralnej liczby max 120 powtórzeń na sekundę. Wyniki obliczeń fizycznych wystawiać na kontener, a grafika na początku każdej klatki robiła by sobie szybką kopię na własne potrzeby.
Wiem, na starszych komputerach było to marnowanie mocy obliczeniowej, która przydawała się w obliczaniu grafiki, ale dzisiaj nic nie tracimy. A jak kiedyś byśmy chcieli pomyśleć o multi, to bez tego się nie obejdzie...
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #92 dnia: 29 Listopada 2016, 23:11:05 »
No i dlatego fizykę wypadało by z tego oczekiwania wybić i ograniczyć częstotliwość przeliczania do arbitralnej liczby max 120 powtórzeń na sekundę.
120 to bylby tzw overkill -- w zasadzie wszystkie gry publikowane dzisiaj maja fizyke liczona 15-20 razy na sek., okazjonalnie moze 30/sek. Silnik trzyma sobie zapisana aktualna i poprzednia kalkulacje, i interpoluje miedzy nimi na potrzeby wizualizacji.

tutaj jest bardzo ladna seria artykulow na ten temat: http://gafferongames.com/game-physics/ z kodem c++ i mnostwem innych przydatnych rzeczy (jak np. fizyka typu klient-serwer, bardzo przydatna do multiplayera itp)
« Ostatnia zmiana: 29 Listopada 2016, 23:16:50 wysłana przez tmj »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #93 dnia: 30 Listopada 2016, 13:02:54 »
Ja tam uważam, że już na początek samo zrobienie osobnej fizyki do wagonów będzie powodowało mniej miss-cache (w tej chwili każdy wagon przechowuje wszystkie zmienne każdego możliwego typu napędu). Tych danych jest na tyle dużo, że bez sensu jest trzymanie ich niepotrzebnie w każdym obiekcie. Jeśli jeszcze samo rozseparowanie wagonu on lokomotywy zrobi się zgodnie z Data Oriented Programming to można pewnie przyspieszyć obliczanie fizyki z dwa razy.
Widzę tutaj jednak pewną problematyczną sprawę, że w fizyce jest mnóstwo miejsc kiedy obiekty wywołują siebie nawzajem. Być może da się zredukować niektóre z tych wywołań do obliczeń na jednej macierzy danych dla większości obiektów.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline youBy

  • Deweloper
  • Wiadomości: 6167
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 876
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #94 dnia: 30 Listopada 2016, 16:37:02 »
No i dlatego fizykę wypadało by z tego oczekiwania wybić i ograniczyć częstotliwość przeliczania do arbitralnej liczby max 120 powtórzeń na sekundę.
120 to bylby tzw overkill -- w zasadzie wszystkie gry publikowane dzisiaj maja fizyke liczona 15-20 razy na sek., okazjonalnie moze 30/sek. Silnik trzyma sobie zapisana aktualna i poprzednia kalkulacje, i interpoluje miedzy nimi na potrzeby wizualizacji.
U nas fizyka musi być liczona z krokiem nie większym niż 100 razy na sekundę ze względu na stabilność sprzęgów i przepływów.
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #95 dnia: 30 Listopada 2016, 21:54:51 »
No i to 100 to i tak może być dużo, albowiem wiele gier i aplikacji 3D ma w opcjach przełącznik ograniczający częstotliwość wyświetlania do 60 klatek (chociaż 50-55 jest dla ludzkiego oka płynne).
Za czasów świetności Delphi nie było jeszcze wzorców, stąd zapewne wszystkie dynamic'i przechowują komplet zmiennych dla wszystkich typów napędu. Znowu pole do orania (yy, do popisu :D) i przerobienie budowania obiektów dynamic wg wzorców i ograniczanie ilości danych i metod to rzeczywiście używanych w danym typie pojazdu.
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #96 dnia: 01 Grudnia 2016, 00:43:52 »
U nas fizyka musi być liczona z krokiem nie większym niż 100 razy na sekundę ze względu na stabilność sprzęgów i przepływów.
Nie jestem pewien czy dobrze to czytam, ale czy masz na mysli ze fizyka musi byc liczona co najmniej 100 razy/sek? Czy przeciwnie, nie wiecej niz 100 razy? Jesli to pierwsze, to chyba raczej w tej chwili nie ma to miejsca jesli fizyka jest liczona raz na ramke graficzna, bo 100 fps raczej rzadko sie zdarza, nawet przy wylaczonym vsync (no chyba ze kalkulacje sa robione z malym krokiem tyle razy ile trzeba, co ramke graficzna, ale wtedy nie wariowaloby przy niskim framerate?)

Offline matek123

  • Moderator
  • Wiadomości: 6268
    • Zobacz profil
  • Otrzymane polubienia: 2190
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #97 dnia: 01 Grudnia 2016, 07:36:35 »
" nie większym niż 100" czyli maksymalnie 100 kroków w sekundę.
Poszukuję zdjęć na tekstury pociągów sieciowych. Szczególnie platform z pomostami.

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #98 dnia: 01 Grudnia 2016, 12:40:17 »
" nie większym niż 100" czyli maksymalnie 100 kroków w sekundę.
Ale tam bylo "z krokiem nie wiekszym niz", i zaczalem kombinowac, ze to wskazuje ze krok musi byc jak najmniejszy, a to akurat zwieksza ilosc kalkulacji na sekunde, a nie zmniejsza :)

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #99 dnia: 02 Grudnia 2016, 08:11:48 »
Za czasów świetności Delphi nie było jeszcze wzorców, stąd zapewne wszystkie dynamic'i przechowują komplet zmiennych dla wszystkich typów napędu. Znowu pole do orania (yy, do popisu :D) i przerobienie budowania obiektów dynamic wg wzorców i ograniczanie ilości danych i metod to rzeczywiście używanych w danym typie pojazdu.
Nie zgodzę się, gdyż cały SPKS ma zrobione hamulce na obiektach i pochodnych a pierwotnie napisany był w Delphi. Więc dany obiekt nie przechowuje niepotrzebnych danych.
Ja widzę raczej problem, że funkcje w jednym obiekcie wywołują te same funkcje w następnym obiekcie i to powoduje przeładowanie wszystkiego w pamięci. Brakuje trzymania pociągu w kontenerze (tzn kontener jest ale do tego nie służy), z którego pobierane są dane wspólne, np. komendy rozsyłane po składzie.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline youBy

  • Deweloper
  • Wiadomości: 6167
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 876
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #100 dnia: 02 Grudnia 2016, 17:37:57 »
Nie jestem pewien czy dobrze to czytam, ale czy masz na mysli ze fizyka musi byc liczona co najmniej 100 razy/sek? Czy przeciwnie, nie wiecej niz 100 razy? Jesli to pierwsze, to chyba raczej w tej chwili nie ma to miejsca jesli fizyka jest liczona raz na ramke graficzna, bo 100 fps raczej rzadko sie zdarza, nawet przy wylaczonym vsync (no chyba ze kalkulacje sa robione z malym krokiem tyle razy ile trzeba, co ramke graficzna, ale wtedy nie wariowaloby przy niskim framerate?)
Dokładnie tak jest - jeśli czas wygenerowania ramki graficznej przekroczył 10 ms, wtedy fizyka jest liczona wielokrotnie, żeby czas jednej iteracji fizyki nie przekroczył 10 ms. Przy ekstremalnie niskim fps (poniżej 5) fizyka jest liczona najwyżej 20 razy na klatkę, co skutuje spowolnieniem upływu czasu w symulacji.
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #101 dnia: 02 Grudnia 2016, 23:35:39 »
Skończyłem poprawiać cały TMoverParameters. Mam nadzieję, że niczego nie przeoczyłem. Udało się też skompilować projekt. W związku z tym poprawki wrzuciłem na repo. Jutro testy odpalania czy to wszystko w ogóle będzie działać.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Krzysiek626

  • Zasłużony dla Symulatora
  • Wiadomości: 5925
  • EXIT
    • Zobacz profil
    • Krzysiek626
  • Otrzymane polubienia: 445
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #102 dnia: 03 Grudnia 2016, 12:19:28 »
Zapodasz skompilowany efekt pracy?

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #103 dnia: 03 Grudnia 2016, 19:17:16 »
Niestety nie, gdyż nie ma czego zapodawać. Nadal występują błędy obsługi hamulców. Ponadto wsadza mechanika nie do tej kabiny i próbuję w tej chwili dojść dlaczego.

  Dodano: 03 Grudnia 2016, 20:08:44
Czemu była nieprawidłowa kabina już znalazłem. Ale błąd jest dziwny i muszę rozgryźć dlaczego funkcja znajdowania w stringu nie działa prawidłowo. Za to hamulec jest spowodowany włączeniem flagi działania AI pomimo narzuconej obsady. Pewnie też coś w ten deseń jak poprzednio. Przejście z Borlanda na VS to nie będzie łatwa i przyjemna droga widzę.

  Dodano: 03 Grudnia 2016, 20:22:11
Dobra, znalazłem dwa błędy odnośnie inicjacji mechanika i już teraz ładuje dobrą kabinę. AI się włącza bo uruchamiam w debug. <facepalm>. Teraz odkrywanie czemu nie reaguje na klawisze hamulców.

  Dodano: 05 Grudnia 2016, 10:28:20
Znalazłem już przyczynę braku reakcji na hamulce. FV4aM działa. Teraz jeszcze tylko reszta kranów. Następnie będziemy sprawdzać, czy hamulce dobrze działają bo mam wątpliwości. Następnie, czemu po wrzuceniu pierwszej pozycji nastawnika nie pojawia się prąd na silnikach. No i widać, że nie ma co wydawać jak narazie.

  Dodano: 06 Grudnia 2016, 08:00:12
Nie mogę dojść do ładu i składu z hamulcami. Po przestawieniu kranu hamulec w ogóle nie reaguje. Sprawdziłem czy może uruchamia funkcje z klasy bazowej zamiast potomnej ale wygląda ok. Zaczynam głupieć.
« Ostatnia zmiana: 06 Grudnia 2016, 08:00:12 wysłana przez firleju »
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline djuzi

  • Zasłużony dla Symulatora
  • Wiadomości: 144
    • Zobacz profil
  • Otrzymane polubienia: 1
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #104 dnia: 06 Grudnia 2016, 11:05:19 »
Grzesiek...porwałeś się na te hamulce. Czasem lepiej zostawić to na kilka dni i zająć się czymś innym. Póżniej gdy się wróci do tego na świeżo będzie dużo prościej.

Offline HTD

  • Wiadomości: 702
  • "Twoja stara mieszka w Boldach" xD
    • Zobacz profil
    • I like trains
  • Otrzymane polubienia: 33
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #105 dnia: 06 Grudnia 2016, 12:40:08 »
No jak hamulce trykną, to można w zasadzie już wydać to nowe exe, chyba, że jeszcze jakieś regresje są w stosunku do borlandowego exe. Później warto by się zastanowić które bugi i w jakiej kolejności wziąć na tapetę. Z mojej strony głosowałbym na ten, który kładzie symulator po odwołaniu do nieistniejącej komórki pamięci. To powinno zapisywać normalnie komunikat do error.txt i ignorować polecenie. Ludzie piszą, że Kaliska się składa od czasu do czasu, ja jeszcze nie testowałem, ale gdyby po testach mieć  wpisy w error.txt zamiast wysypów byłoby łatwiej znaleźć przyczyny błędów, bo teraz niektórzy piszą, że sypanie na Kaliskiej wynika z błędów exe, a całkiem możliwe, że to błędy skryptów, tylko trudno to póki co odróżnić.

Drugi w kolejności do zaatakowania (IMHO) byłby ten, że syk hamulców (i ogólnie dźwięki) zawieszają się, kiedy nagle oddalimy się od źródła dźwięku. Np stoję przy syczącym wagonie na końcu długiego składu i wciskam F4 - ten syk się wtedy nie wycisza, jest zawieszony, żeby go "odwiesić" muszę jeszcze raz podejść do tego samego wagonu i powoli od niego odejść. Niestety jeśli źródłem dźwięku nie jest nasz skład, tylko inny, który sobie już odjechał, to ciężko odwiesić, bo trzeba by znaleźć źródło.

Offline Krzysiek626

  • Zasłużony dla Symulatora
  • Wiadomości: 5925
  • EXIT
    • Zobacz profil
    • Krzysiek626
  • Otrzymane polubienia: 445
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #106 dnia: 06 Grudnia 2016, 13:20:04 »
Nie wydać chyba, raczej pokazać. Może nawet w zamkniętym dziale. Zbyt szeroka dyskusja rozmydli problemy.

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #107 dnia: 06 Grudnia 2016, 15:22:54 »
Nie mogę dojść do ładu i składu z hamulcami. Po przestawieniu kranu hamulec w ogóle nie reaguje. Sprawdziłem czy może uruchamia funkcje z klasy bazowej zamiast potomnej ale wygląda ok. Zaczynam głupieć.
Jesli mozna cos zasugerowac, wytnij najpierw Borlanda do konca, a jak juz zrodla da sie skompilowac gdzie indziej, to i odpluskwianie i cala reszte bedzie duzo latwiej przeprowadzic.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #108 dnia: 07 Grudnia 2016, 19:07:56 »
Najpierw to musiałem wyciąć taki fajny błąd, który powodował że nie dało się nic testować na debugerze w 9 na 10 przypadków. Po prostu symek się zawieszał. Po całym dniu szukania znalazłem, tą fajną różnicę, że Pascal inicjuje zmienne do wartości 0, a c++ jak chce. Więc jak nie zainicjujesz zmiennej, której potem nigdzie nie modyfikujesz przed pierwszym użyciem (w tym konkretnym przypadku przesunięcie taboru) to dziwne rzeczy się dzieją (np. dL = 1.38e+220) no i skład się próbuje ciągle przesunąć.
Tak ostatnio myślałem czy by nie wyciąć Borlanda do końca, ale musiałby się chyba znaleźć jakiś chętny co by wydziergał QueryParserComp z brancha. Jak się jakiś chętny znajdzie to resztę już i tak robię.
« Ostatnia zmiana: 07 Grudnia 2016, 19:09:27 wysłana przez firleju »
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #109 dnia: 07 Grudnia 2016, 21:16:58 »
Po całym dniu szukania znalazłem, tą fajną różnicę, że Pascal inicjuje zmienne do wartości 0, a c++ jak chce.
No, to akurat standard :)  Tzn nie, ze c/c++ inicjalizuje jak chce, tylko samo z siebie nie inicjalizuje w ogole, wiec dostajesz to co sie akurat trafi w pamieci, a trafic moze sie wszystko (przynajmniej w trybie release, debug moze sobie rozne rzeczy tam ustawiac)

Jak zrobisz wszystko inne, to jesli nie znajdzie sie nikt inny to ja moge sie poswiecic i tego parsera wyciac, ale to na samym koncu bo tak jak wspomnialem, inaczej nie bede w stanie tego skompilowac, wiec musialbym edycje na sucho robic.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #110 dnia: 07 Grudnia 2016, 21:30:52 »
Ja ci borlanda udostępnię jak coś. Zawsze możesz go zainstalować na wirtualce (cd xp sp3 też się znajdzie).
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #111 dnia: 07 Grudnia 2016, 22:11:13 »
Tak szczerze to ja nie chce dranstwa tykac, bo nie mam zaufania ani do siebie ze czegos przy okazji nie spieprze, ani do niego ze mi w system jakos nie napaskudzi :)

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #112 dnia: 08 Grudnia 2016, 08:37:14 »
No właśnie dlatego mówię o wirtualce. Jak dla mnie na sucho też może być.

  Dodano: 08 Grudnia 2016, 08:46:01
Okazuje się, że w hamulcach mam dziurę w przewodzie sterującym. Teraz szukam miejsca rozszczelnienia.

  Dodano: 08 Grudnia 2016, 18:11:53
Nie powinienem się brać za konstrukcję kranów bo źle podłączyłem i miałem tam wielką dziurę. Już załatana i wygląda, że powietrze mi narazie nie ulatuje. Teraz jakieś testy tego ustrojstwa i patrzymy co nie działa dalej.

  Dodano: 08 Grudnia 2016, 22:28:12
Znalazłem kolejną dziurę i teraz działa także sprężarka ;) Nie ma jak błąd w globalnej funkcji ustawiającej bity w zmiennej.
Teraz skład sam luzuje. Ciekawe gdzie znajdę ten feature, który to powoduje.

  Dodano: 10 Grudnia 2016, 19:57:33
Wygląda, że znalazłem dziurę w hamulcach. Takie zabawy są bez sensu. Trzeba przeglądnąć całe hamulce i dopisać inicjację wszelakich zmiennych w konstruktorze.

  Dodano: 10 Grudnia 2016, 22:52:17
Dziury już nie ma. Szkoda tylko, że po zmianie pozycji hamulca na jazdę przewód sterujący nie napełnia się do końca. W związku z czym hamulce też nie puszczają do końca. Pochlastam się chyba. W takim tempie to nie skończę tego do końca przyszłego roku.

  Dodano: 12 Grudnia 2016, 19:39:51
Narazie żadnych postępów. Nie wiem jak będzie w najbliższym czasie, gdyż w małopolsce poprawa komunikacji na linii do Tarnowa polega na wycięciu co drugiego pociągu w szczycie dla większości miejscowości. W związku z tym szansa, że sobie rano siądę z lapkiem spadła z 95% do mniej więcej 0%.

  Dodano: 14 Grudnia 2016, 08:14:03
Nie mogę znaleźć tego co jest źle. Na pewno coś się źle liczy tudzież sprawdza, ale nie wiem gdzie. Następny krok: nauczyć się jak uruchomić debugera dla kodu pascalowego (mam nadzieję, że nie będzie trudne) i sprawdzić na starej wersji jak się to wszystko liczy. Ogólnie już w pierwszym kroku obliczeń są różnice w ciśnieniach więc na pewno coś jest nie halo.
« Ostatnia zmiana: 14 Grudnia 2016, 08:14:03 wysłana przez firleju »
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #113 dnia: 14 Grudnia 2016, 18:17:56 »
W ustawieniach kompilatora upewnij się, że nie ma optymalizacji na szybkość (-Ocyfra), zostaw ew optymalizację na rozmiar kodu (-Os). Jeśli dalej będą problemy, wyłącz też optymalizację na rozmiar.

  Dodano: 14 Grudnia 2016, 19:51:26
Jeśli to się uda, to będziemy potem szukać gdzie rzutować z volatile: http://stackoverflow.com/a/2219839
« Ostatnia zmiana: 14 Grudnia 2016, 19:51:26 wysłana przez El Mecánico »
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2349
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #114 dnia: 15 Grudnia 2016, 01:55:39 »
Ogólnie już w pierwszym kroku obliczeń są różnice w ciśnieniach więc na pewno coś jest nie halo.
Warto tez pewnie zweryfikowac czy kod dostaje te same dane wejsciowe, jeszcze przed obliczeniami -- wspominales nieinicjalizowane zmienne, wiec moze sie jeszcze jakies takie kwiatki ostaly.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #115 dnia: 15 Grudnia 2016, 06:53:23 »
Ranna sesja poszła na checkout 481 i debug zmiennych nadawanych i otrzymywanych w funkcjach UpdatePipePressure i UpdateSecondPipePressure. Jak się uda usiąść po południu to zrobię to samo dla wersji c++ i zobaczę co tam się oblicza. Trochę robota głupiego ale nie mam wyjścia. Zastanawiałem się, czy aby nie przyspieszyć sobie tego przez sklonowanie repo. Muszę sprawdzić, czy można trzymać jednocześnie dwa BCB otwarte.

  Dodano: 17 Grudnia 2016, 16:43:42
No i pudło. Te dwie funkcje jak na razie liczą identycznie. Ładnie się zaczyna. Teraz będzie przerwa bo wróciła mi fucha do poprawek (po pół roku, jak ja to uwielbiam) więc narazie więcej nie potestuję. Jak ktoś ma ochotę to sprawdzić to przyjmę każdą pomocną dłoń.

  Dodano: 19 Grudnia 2016, 09:05:13
Stwierdziłem, że podejdę do tematu troszkę inaczej. Przygotowałem sobie nową wersję DynObj, która po każdym przeliczeniu fizyki w Mover->ComputeMovement wyrzuca do loga obliczone wartości PipePress, ScndPipePress, EqvtPipePress, BrakePress i CntrlPipePress. Jak po południu będzie czas to krótki zrzut do loga i patrzymy gdzie zacznie liczyć źle.

  Dodano: 20 Grudnia 2016, 07:13:16
No i dowiedziałem się tyle, że źle inicjowana jest wartość ciśnienia w hamulcach. Rano poprawiłem i sprawdziłem przy okazji całą funkcję i też zrobiłem poprawki (ale nie miały wpływu na te testy, na inne pewnie by miały). Po południu kolejne testy.

  Dodano: 20 Grudnia 2016, 19:25:41
Ha, znalazłem gada. Jednak debugowanie pascala ma swój głęboki sens. Funkcja Init hamulców uruchamia funkcje Init klas-matek. To teraz będzie łatwiej. Ciekawe co jeszcze ciekawego znajdę.

  Dodano: 21 Grudnia 2016, 07:20:10
Rano poprawiłem klasy hamulców. Jeszcze nie testowałem. Jak będzie ok to na tapetę idzie rozruch pojazdu.
« Ostatnia zmiana: 21 Grudnia 2016, 07:20:10 wysłana przez firleju »
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3930
    • Zobacz profil
  • Otrzymane polubienia: 288
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #116 dnia: 21 Grudnia 2016, 16:32:23 »
Wg mnie, przydałoby się jeśli nie masz jakieś narzędzie  do sprawdzania zmiennych np. ich inicjacji, ich wykorzystania, sprawdzania jakiś klas,  w danych funkcjach, procedurach, modułach itp. w zależności od zasięgu zmiennych. Ja na swój użytek, napisałem sobie własne narzędzie do sprawdzania kodu. Różne rzeczy mi sprawdza m.in. to powyższe. Ogólnie, mimo, iż trochę czasu zajeło napisanie narzędzia, opłacało się. Różne kwiatki wychodziły np. dana zmienna była zadeklarowane i zainicjowana, lecz jej później nie wykorzystywałem (ot sobie taka była niepotrzebna). Czasami z tego własnego narzędzia korzystam, przy jakiś złożonym długim kodzie.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #117 dnia: 21 Grudnia 2016, 19:31:15 »
Ale ten błąd był po części winą konwertera, którego użyłem a po części moją, gdyż nie znam Delphi i jak czegoś nie wiem to muszę najpierw sprawdzić co to robi. W c++ wywołanie funkcji z klas-matek odbywa się jawnie (tzn. musisz napisać kod uruchamiający konkretną funkcję) a w Delphi definiujesz przynajmniej na dwa różne sposoby stosując słowo kluczowe, którego nazwa nie jest dla mnie oczywistym uruchomieniem funkcji. Do tego w jednym przypadku robisz to globalnie dla wszystkich funkcji potomnych.
Dla C++ istnieją analizatory kodu więc nie ma potrzeby tego pisać samemu. Nie chcę teraz tego robić, ale na pewno znajdą mnóstwo zmiennych nieużywanych nigdzie. Dodatkowo Q dorzucił troszkę zmiennych używanych jednokrotnie ale tego nie tykam (bo działa) póki nie będzie działać cała reszta.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3930
    • Zobacz profil
  • Otrzymane polubienia: 288
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #118 dnia: 21 Grudnia 2016, 20:33:27 »
Ja mialem na mysli nie tylko ten blad, lecz jakies opisane w tym watku. Czyli wychodzi na to, ze sa analizatory, ale nie wiem, czy je uzywasz. Chyba nie.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Odp: Exe - konwersja na C++
« Odpowiedź #119 dnia: 22 Grudnia 2016, 08:52:48 »
Nie używam, gdyż na obecnym etapie to jest bez sensu. Kod movera jest tak scalony, że najpierw go trzeba rozdzielić, a dopiero potem można bawić się w analizę czy jest coś nieoptymalnego typu nieużywane zmienne. Chociaż być może znalazłyby się miejsca, gdzie mamy wysypy.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es