Jak uruchomić aplikację Windows na systemie Linux - czy C++ i Qt to dobry pomysł?

0

Cześć, na wstępie chciałbym zaznaczyć, że nie znam się na programowaniu, ale zamierzam to zmienić:)

Chciałbym uruchomić (lub napisać) program do zarządzania serwerem gry na Linuxie. Program został napisany na Windowsa, kod źródłowy jest tu: link
i działa tak: link

  1. klient gry, serwer dedykowany oraz program do zarządzania serwerem (nazwijmy go „Controller”) – napisane są na Windowsa – ale zarówno klient gry jak i serwer dedykowany bez problemu działają na Ubuntu (WINE, Lutris, PlayOnlinux) – niestety działają tylko 2 z 3 głównych modułów Controllera – najważniejszy, czyli możliwość uruchomienia i zarządzania serwerem dedykowanym nie działa na Linuksie. Może to jest kwestia odpowiedniej konfiguracji WINE, ale na razie nie udało mi się tego uruchomić.
  2. Controller został napisany w VB.net – i tu jest moje pierwsze pytanie: czy dałoby się przekonwertować kod źródłowy Controllera (lub jego część) np. do C++, C# aby następnie uruchomić go na Ubuntu? Czy w ogóle jest sens do tego podchodzić?
  3. czy lepiej napisać od zera program w C++ przy wykorzystaniu Qt lub GTK+? Wzorując się na oryginalnym programie - i czy w takim programie będzie można umieścić wszystkie funkcjonalności z oryginalnego programu napisanego VB.net (albo przede wszystkim ten nie działający moduł)? Pytam konkretnie o C++ (być może są inne bardziej efektywne rozwiązania, może CMake, może inny język: Java?) ale chciałem zacząć naukę od C++ i przy okazji nauki chciałem napisać ten program (albo odwrotnie), a nie chciałbym dojść do wniosku po paru miesiącach, że jednak się nie da lub że był to całkowicie chybiony pomysł.

Podsumowując: chciałem uruchomić/napisać program do zarządzania serwerem gry (serwer gry będzie działał pod WINE) i czy próba napisania tego programu w C++ i Qt na Linuxa to dobry pomysł? a przy okazji chciałem w końcu nauczyć się programować:)

1

Programowania najlepiej zaczynać od czegoś prostszego !

Ad 1) A sprawdziłeś czy Twoje WINE ma zainstalowane wszystko co wymaga aplikacja ? I jakie błędy na konsoli ?

Ad 2) Nie ma to sensu ! Nie tedy droga

Ad 3) Jak ktoś napisał program to inna osoba może stworzyć podobny program lepszy albo gorszy wiec szansa jest, ale jak nie masz doświadczenia to sie za to nie bierz

1

@MaNick:

MaNick napisał(a):
  1. Controller został napisany w VB.net – i tu jest moje pierwsze pytanie: czy dałoby się przekonwertować kod źródłowy Controllera (lub jego część) np. do C++, C# aby następnie uruchomić go na Ubuntu?

VB.Net to taki C# tylko inny – w sensie że jedno i drugie to język dotnetowy.
Czyli Mono, albo .Net Core/5/6 i powinno ruszyć. Chyba.

0

Dziękuję za odpowiedzi.

Próbowałem jeszcze raz uruchomić Controllera przez PlayOnLinux (WINE 7.0) - wyczyściłem dysk wirtualny i jeszcze raz zainstalowałem jeden z pakietów dotnet - i tym razem udało się uruchomić Controller oraz uruchomił się serwer dedykowany (tak mi się wydaje, ponieważ Controller zczytał informacje z konsoli serwera dedykowanego, z których wynika, że serwer uruchomił się, została wczytana mapa itd) - ale niestety nadal nie da się zrządzać serwerem z poziomu Controllera - wszystkie przyciski, kontrolki, pola są "jakby szare": przyciski nie działają, w polach tekstowych nic nie można wpisać, nie można wybrać żadnej komendy, rozwijane listy wyboru nie rozwijają się - czyli de facto nadal nie działa, tak jakby WINE wyświetliło jedynie interfejs użytkownika bez możliwości kliknięcia czegokolwiek w tym module Controllera. Będę próbował nadal, ale tym razem nie pojawił się żaden błąd, który mógłby naprowadzić mnie na konieczność instalacji czegoś jeszcze.
Mam też zainstalowane Mono 6.8.0.105 oraz .Net Core 6 - ale to że jest zainstalowane to jedno, ale czy na pewno potrafię tego użyć? :)

Co do napisania Controllera od podstaw w C++ to oczywiście jestem świadomy tego, że nie jestem obecnie w stanie napisać ani takiego samego, ani lepszego, a nawet gorszego programu - nie jestem w stanie napisać żadnego:) ale pomyślałem, że jeśli mam zaczynać od wyświetlenia na ekranie Hello World! to mógłbym napisać do tego kod, który wyświetli to, ale nie na moim ekranie tylko na serwerze.

Jeszcze dodam, że w tej chwili mogę ręcznie zarządzać serwerem (bez pomocy Controllera) poprzez edycję pliku tekstowego z ustawieniami serwera ServerSetting.txt, a po uruchomieniu serwera pojawia się konsola (taka jak CMD w Windowsie) gdzie można wpisać komendy wykorzystywane przez grę (i w dużej mierze działanie Controllera opiera się na tym, że pobiera on polecnia z konsoli serwera, albo polecenia graczy i w zależności od tego co zostanie napisane wyrzuca określone komendy wbudowane w grę) np.:
"/adminsay" - wyrzuca na serwerze dowolny tekst, więc jak napiszę z palca w konsoli
"/adminsay Hello World!" - to na serwerze pojawi się Hello World! - no i pierwszy sukces mam za sobą:)
w kodzie Controllera w VB.net jest np. coś takiego "SendToConsole("/adminsay" - więc na początku w C++ chciałbym znaleźć analogiczną funkcję, która pozwoli wyświetlić ten Hello World! na serwerze (czyli w konsoli serwera, a nie tylko na moim ekranie). Później chciałbym znaleźć funkcję, która pozwoli pobrać tekst wpisywany przez graczy na chacie w grze (np poprzez pobranie tego tekstu z konsoli serwera lub pliku tekstowego tworzonego przez serwer) i w zależności od tego co napisze gracz, to chciałbym, aby mój Controller wykonał określoną czynność itd itp - czyli to co robi oryginalny Controller na Windowsa, ale raczej nie zamierzam rzucać się na napisanie całego programu teraz, ale raczej po kawałku, zaczynając od najprostszych rzeczy chciałbym budować kolejne moduły Controllera w miarę zdobywania nowych umiejętności (posiłkując się przeglądaniem kodu w VB, aby zobaczyć jak to zrobił autor oryginału)

0

Mono teoretycznie nawet posiada kompilator VB .net - ale prawie na pewno nie obejdzie się bez problemów..

0

Zdecydowanie nie ten projekt na tym etapie

Planowanie z góry, ze to w emulatorze ma chodzić, to bardzo niefajne.
Albo kompilować na docelowy system, albo pisac w czymś przenośnym.

Wg mnie przenośne to:
1st java (z GUI włacznie)
2nd C# .NET Core (ale GUI problematyczne) Mono będzie odchodziło na margines - lub już odchodzi, choć wydaje się pacjent jeszcze nie umarł..
Czy .NET Core + Basic to dobry zestaw ... na pewno działa, ale nie mam pojęcia o szczegółach

interpretery (Python i inne)
C++ kompilowane bez kłamst na właściwa maszynę.

0

spróbowałem odpalić go przez mono - program startuje, ale w pierwszej kolejności zawsze przy pierwszym uruchomieniu należy wskazać lokalizację folderu gdzie znajdują się pliki serwera dedykowanego gry - niestety zawsze pojawia się błąd, że nie prawidłowa ścieżka pomimo tego, że wskazuję prawidłową lokalizację (przy uruchomieniu przez PlayOnLinux po wskazaniu ścieżki było ok i program przechodził do kolejnego etapu). Będę próbował nadal

A tak w ogóle to czy słusznie zakładam, że kod źródłowy powinien skompilować się w Visual Studio Code na Ubuntu bez większych problemów? Pytam bo na razie nie udało mi się to, ale może to jest kwestia doinstalowania brakujących komponentów.

1

A tak w ogóle to czy słusznie zakładam, że kod źródłowy powinien skompilować się w Visual Studio Code na Ubuntu bez większych problemów? Pytam bo na razie nie udało mi się to, ale może to jest kwestia doinstalowania brakujących komponentów.

Jeżeli to jest ten kod, który wrzuciłeś, to jest to projekt zbudowany dla Windows Forms, które – jak nazwa wskazuje – jest tylko dla Windows, i dla starego .NET 4.0. Bez problemu to to na pewno się nie skompiluje, aczkolwiek istnieje szansa.

niestety zawsze pojawia się błąd, że nie prawidłowa ścieżka

Być może dlatego, że w kodzie są rzeczy w stylu My.Computer.FileSystem.FileExists(rutaAppData & "\Config\DedicatedServerSettings.ini"), czyli ścieżki w wersji dla Windows (z \), a nie z /. I w ogóle przywiazanie jest silne do ścieżek postaci Dim rutaCrashLog As String = Mid(rutaAppdata, 1, (Len(rutaAppdata) - 8)) & "\Local\VirtualStore\Program Files (x86)\techland\out\crash.log", więc coś może nie być znalezione (VirtualStore to takie obejście, które robi Windows dla pewnych starszych aplikacji, które chcą pisać po Program Files bez podwyższonych uprawnień).

1 użytkowników online, w tym zalogowanych: 0, gości: 1