Autor Wątek: FUGE - GUI do twojej gry  (Przeczytany 20921 razy)

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Listopad 30, 2008, 23:03:21
FUGE to moja biblioteka ułatwiająca tworzenie GUI w grach. Zawiera większość popularnych rodzajów kontrolek. Świetnie nadaje się do robienia wszelkiego rodzaju okienek w grze, np. do konfiguracji, wyświetlania komunikatów, tworzenia narzędzi wbudowanych w grę itp. Na razie działa tylko pod Windows, ale planuję też wersję na Linuksa.

Wybrane cechy:

  • projekt open-source
  • wbudowany renderer oparty DirectX (OpenGL w drodze :))
  • współpraca z zewnętrznymi silnikami renderującymi
  • korzysta z dowolnych fontów lub z wbudowanej czcionki bitmapowej
  • obsługa schematów kolorów
  • obsługa przezroczystości okien
  • dokumentacja w Doxygenie (CHM) wraz z tutorialami

Screenik:



Więcej screenów oraz link do downloadu w portalu:

http://www.warsztat.gd/projects.php?x=view&id=578

Miłego użytkowania :).
« Ostatnia zmiana: Luty 04, 2011, 23:42:05 wysłana przez Złośliwiec »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Oti

  • Użytkownik

# Listopad 30, 2008, 23:22:53
Mhm, gratulacje, bardzo fajnie wygląda, dużo kontrolek, widać, że się napracowałeś. :) Akurat wczoraj także zacząłem klepać jakieś GUI do edytorka, więc nie zassam(muszę sam to skodzić, w celach edukacyjnych lub chociażby własnej satysfakcji), ale k++. :)

PS. Proponuję w pierwszym poście wypisać wszystkie kontrolki ;)

Offline Charibo

  • Redaktor

# Listopad 30, 2008, 23:28:44
Nie widzę, żeby było gdzieś na wierzchu napisane - na jakiej licencji ją rozprowadzasz? :)

yfan

  • Gość
# Grudzień 01, 2008, 00:14:01
dobra byłaby jako demo twojego silniczka mała gra, w której różnorakie suwaki rozrzucone na ekranie połączone są dziwnymi zależnościami (przesuwasz jeden, ruszają się też inne), a zadaniem byłoby ustawić jeden podświetlony na określonej pozycji bez ruszania go, w określonym - krótkim - czasie. na pewno zaciągnęłoby ludzi do zapoznania się z biblioteką :).

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Grudzień 01, 2008, 11:08:16
Akurat wczoraj także zacząłem klepać jakieś GUI do edytorka, więc nie zassam(muszę sam to skodzić, w celach edukacyjnych lub chociażby własnej satysfakcji), ale k++. :)

Edukacja to dobra rzecz, ale mimo wszystko zachęcam do ściągnięcia i wypróbowania :). Zresztą myślę, że jeśli już się uczyć, to lepiej uczyć się rozszerzania istniejącego kodu, a nie wynajdywać koło od nowa :).

Nie widzę, żeby było gdzieś na wierzchu napisane - na jakiej licencji ją rozprowadzasz? :)

Cały ostatni weekend pracowałem tylko nad FUGE, więc nie chciało mi się już wieczorem zastanawiać, jaka licencja byłaby odpowiednia. Może LGPL, tyle że z tego co się orientuje, nakłada ona wymaganie, że produkt musi być open-source, co średnio mi się podoba.

dobra byłaby jako demo twojego silniczka mała gra, w której różnorakie suwaki rozrzucone na ekranie połączone są dziwnymi zależnościami (przesuwasz jeden, ruszają się też inne), a zadaniem byłoby ustawić jeden podświetlony na określonej pozycji bez ruszania go, w określonym - krótkim - czasie. na pewno zaciągnęłoby ludzi do zapoznania się z biblioteką :).

Niezły pomysł :).

Offline albireo

  • Użytkownik

# Grudzień 01, 2008, 11:15:16
Cały ostatni weekend pracowałem tylko nad FUGE, więc nie chciało mi się już wieczorem zastanawiać, jaka licencja byłaby odpowiednia. Może LGPL, tyle że z tego co się orientuje, nakłada ona wymaganie, że produkt musi być open-source, co średnio mi się podoba.
To GPL tego wymaga, LGPL wymaga tylko aby wszelkie upublicznione zmiany w samej bibliotece były open source.

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Grudzień 01, 2008, 11:21:38
To GPL tego wymaga, LGPL wymaga tylko aby wszelkie upublicznione zmiany w samej bibliotece były open source.

To w sumie na jedno wychodzi - czy będę musiał opublikować kod obecnej wersji, czy następnej wersji, dla mnie to bez różnicy, bo nie chcę go publikować :).

Offline albireo

  • Użytkownik

# Grudzień 01, 2008, 11:30:00
To opublikuj jako freeware (z ewentualnym ograniczeniem, że tylko do użytku niekomercyjnego).

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Grudzień 01, 2008, 11:37:49
To opublikuj jako freeware (z ewentualnym ograniczeniem, że tylko do użytku niekomercyjnego).

W zasadzie już to zrobiłem :D.

Offline micran

  • Użytkownik
    • Micran - Warsztat

# Grudzień 01, 2008, 19:54:51
Nie wiem czy dobrze rozumie zasadę freeware. Ale załóżmy, że pobrałem tą bibliotekę i na prawie identycznej zasadzie opracowałem swoją, i teraz czy to już uznaje się za moje czy nadal jest to freeware w tym wypadku Złośliwca ???

GUI świetnie się prezentuje.   

Offline Lobsang Rampa

  • Użytkownik
    • Global Epidemic

# Grudzień 01, 2008, 20:20:22
Brakuje mi tutaj wsparcia dla różnych "skórek", z tego co widzę, wszystkie elementy GUI są rysowane i nie można zastosować np. własnych bitmapek jako przycisków. Piszesz też w featursach o obsłudze schematów kolorów, gdzie ten schemat jest zapisany ? szukałem w projekcie plików XML czy cuś takiego, ale nic nie znalazłem.

A tak poza tym bardzo fajna biblioteczka, gratuluje jej ukończenia :) choć zważywszy na fakt, że to była praca magisterska, innego wyboru raczej nie miałeś ;D

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Grudzień 01, 2008, 22:35:36
Nie wiem czy dobrze rozumie zasadę freeware. Ale załóżmy, że pobrałem tą bibliotekę i na prawie identycznej zasadzie opracowałem swoją, i teraz czy to już uznaje się za moje czy nadal jest to freeware w tym wypadku Złośliwca ???

W sumie to freeware nie ma jednej konkretnej definicji. Ogólnie przyjmuje się, że jest to soft za darmo lub za opcjonalną opłatą, że nie ma wglądu do źródełek i tym samym możliwości modyfikacji. Natomiast jeśli tylko chcesz kopiować moje pomysły, to proszę bardzo - ogólnie jestem zwolennikiem dzielenia się niektórymi rzeczami ;).

Brakuje mi tutaj wsparcia dla różnych "skórek", z tego co widzę, wszystkie elementy GUI są rysowane i nie można zastosować np. własnych bitmapek jako przycisków. Piszesz też w featursach o obsłudze schematów kolorów, gdzie ten schemat jest zapisany ? szukałem w projekcie plików XML czy cuś takiego, ale nic nie znalazłem.

Skórki będą w przyszłej wersji, jak już gdzieś napisałem. Natomiast tworzenie schematu koloru polega po prostu na czymś takim:

Kod: (cpp) [Zaznacz]
    FUGE_BLACK.clr [COLOR_WINDOW_BACKGROUND]     = CColor::WHITE;
    FUGE_BLACK.clr [COLOR_WINDOW_TITLE_NORMAL]   = CColor::BLACK;
    FUGE_BLACK.clr [COLOR_WINDOW_TITLE_LIGHT]    = CColor::DARKGRAY;
    FUGE_BLACK.clr [COLOR_WINDOW_TITLE_DARK]     = CColor::BLACK;
    FUGE_BLACK.clr [COLOR_WINDOW_TITLE_TEXT]     = CColor::WHITE;
    FUGE_BLACK.clr [COLOR_3D_LIGHT]              = CColor::GRAY;
    FUGE_BLACK.clr [COLOR_3D_DARK]               = CColor::BLACK;
    FUGE_BLACK.clr [COLOR_3D_NORMAL1]            = CColor::DARKGRAY;
    FUGE_BLACK.clr [COLOR_3D_NORMAL2]            = CColor::BLACK;
    FUGE_BLACK.clr [COLOR_3D_MEDIUM]             = CColor (64, 64, 64, 255);
    FUGE_BLACK.clr [COLOR_TEXT]                  = CColor::LIGHTGRAY;

A potem:

Kod: (cpp) [Zaznacz]
ui->SetColorScheme (FUGE_BLACK);

Wiem, prymitywne, ale śpieszyło mi się trochę z tą magisterką :D. Do przyszłej wersji wymyślę, mam nadzieję, coś lepszego.

Cytuj
A tak poza tym bardzo fajna biblioteczka, gratuluje jej ukończenia :) choć zważywszy na fakt, że to była praca magisterska, innego wyboru raczej nie miałeś ;D

Dziękuję :). A z tym wyborem to było w sumie tak, że sam sobie wymyśliłem temat ;).

Offline micran

  • Użytkownik
    • Micran - Warsztat

# Grudzień 01, 2008, 22:40:25
Bo wiesz Złośliwiec ja nie rozumię dokładnie jak by to miało się tworzyć te okna. A takie nie zrozumienie dla rysowania okien w grach mam od zawsze, więc czas to zmienić. WinAPI także nie wiele rozumię, może dlatego że z twojego kursu się uczyłem ;)  :P
« Ostatnia zmiana: Grudzień 01, 2008, 22:52:39 wysłana przez micran »

Offline Kosai_

  • Użytkownik
    • devlog

# Grudzień 01, 2008, 23:00:04
jak ta biblioteka stoi z ustawianiem zmiennych? w GLUI było tak, że do suwaka 'doczepiałem' zmienną jakąś, i jak user przesuwał suwak, to wartość zmiennej się zmieniała automatycznie. jak jest tutaj?

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Grudzień 01, 2008, 23:55:03
jak ta biblioteka stoi z ustawianiem zmiennych? w GLUI było tak, że do suwaka 'doczepiałem' zmienną jakąś, i jak user przesuwał suwak, to wartość zmiennej się zmieniała automatycznie. jak jest tutaj?

Nie przepadam za takimi cudami na kijku. Biblioteki powinny być stosunkowo proste. Gdyby suwak miał bezpośredni dostęp do pamięci, trzeba by było jakoś ograniczyć zakres, żeby nie było żadnych AV. Wprowadzamy więc klasę do walidacji. Potem ktoś mógłby się przyczepić, że brakuje obsługi float-ów. Wprowadzamy więc walidatory do int-ów i float-ów. Następnie ktoś życzy sobie jeszcze typ double i int64. Wprowadzamy. Ktoś inny stwierdza, że przydałoby się jeszcze ustawianie zmiennych typu string zawierających liczbę. Wprowadzamy. Potem pojawia się pomysł, że suwaki można by podpiąć też pod struktury, na przykład reprezentujące kolor albo wierzchołek 3D. Wprowadzamy. Ktoś wymyśla, że przydałyby się wyspecjalizowane suwaki podpięte do regulacji głośności. Wprowadzamy. Następnie ktoś stwierdza, że potrzebuje koniecznie kontrolkę składającą się z trzech suwaków do ustawiania koloru, podpiętych do dowolnych dwóch kolorów systemowych, które można dynamicznie zmieniać konfigurowalną kombinacją klawiszy... etc., etc. W końcu z prostego i fajnego GUI robi się potwór w rodzaju wxWidgets: tańczy, śpiewa, recytuje, a w wolnych chwilach wyświetla jakieś kontrolki. Rozumiesz? :)