Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

RPG 2D - Prototyp Gry oraz Map Edytora

Ostatnio zmodyfikowano 2025-06-03 21:43
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
» 2025-05-06 21:05:52
Wszystko jest w porządku :-) Nie zwracaj uwagi na te komunikaty. Już wyjaśniam skąd one


Nie można otworzyć pliku: assets\buildings\parts\logo.png
Nie można otworzyć pliku: assets\buildings\parts\roof2.png
-logo - to ma być emblemat nad drzwiami budynku - na razie jest to concept
-roof2 - już nawet nie pamiętam ale raczej po to by generować różne rodzaje dachówek - na chwilę obecną nie kasuje bym pamiętał


Failed to load image from memory. Reason: Image not of any known type, or corrupt
Nie udało się załadować obrazka: assets\                                      .png(2504)
Failed to load image from memory. Reason: Image not of any known type, or corrupt
Nie udało się załadować obrazka: assets\                                      .png(2505)
-tego to sam nie wiem, w najbliższym czasie sprawdzę i obadam


load shader: shaders\empty.frag as: shaders\empty
load shader: shaders\water.frag as: shaders\water
load shader: shaders\circle.frag as: shaders\circle
load shader: shaders\jagged_circle.frag as: shaders\jagged_circle
load shader: shaders\circles.frag as: shaders\circles
load shader: shaders\renderer.frag as: shaders\renderer
load shader: shaders\highlighted.frag as: shaders\highlighted
-logi, że poprawnie załadowano shadery


error - get Texture - Texture: "characters\jack" not exists
error - get Animation - Animation: "characters\jack" is empty
error - get Texture - Texture: "characters\jack" not exists
error - get Texture - Texture: "characters\john" not exists
error - get Animation - Animation: "characters\john" is empty
error - get Texture - Texture: "characters\john" not exists
error - get Texture - Texture: "characters\peter" not exists
error - get Animation - Animation: "characters\peter" is empty
error - get Texture - Texture: "characters\peter" not exists
error - get Texture - Texture: "characters\pit" not exists
error - get Animation - Animation: "characters\pit" is empty
error - get Texture - Texture: "characters\pit" not exists
-muszę dodać nowy typ GameObjectu by nie wczytywać tekstur, bo charactery mają bodysety a nie animację lub pojedynczą teksturę.


Ważne, że sie uruchamia. Program nadal jest "w produkcji" więc nie dziwne, że są komunikaty. Dziś nie miałem czasu programować bo robię animacje :-)
P-182335
nanoant20
» 2025-05-06 21:18:02
good luck. owocnej pracy.
P-182336
tBane
Temat założony przez niniejszego użytkownika
» 2025-05-07 15:27:38
Dzięki przyda się tych grafik jest całkiem sporo :-)


P-182337
tBane
Temat założony przez niniejszego użytkownika
» 2025-05-31 18:34:40
Jednak tak szybko ten edytor nie wyjdzie. Cały czas mam nowe pomysły na nowe funkcjonalności.

Repo:  https://github.com/tBane1995/Editor-RPG2D.git

Obecnie do napisania pozostało:
-Edytor Dialogów
-Zapisywanie i wczytywanie Dialogów z pliku mapy
-Edytor Questów
-Zapisywanie i wczytywanie Questów z pliku mapy
-Edytor Itemów (grafika, atrybuty)
-Edytor GameObjectów ( animacja, parametry collidera)
-Edytor Potworków (statystyki, animacja, parametry collidera)
-Napisać system outfitów - żeby każdy item nie potrzebowałe unikalnego setu tylko, żeby były ogólne np. szary outfit, brązowy outfit, szare szaty, brązowe szaty itp
No i jeszcze dodaje nowe funkcjonalności w obecnych funkcjach takie jak np. Powiększanie Rozmiaru Budynku W Building Edytorze oraz funkcja automatycznego generowania ścian budynku.

Projekt na Githubie zaktualizowany więc można zerknąć na kod - ostatnio poprawiałem wysokości linii (we szystkich TextArea i Tip'ach), zaprogramowałem zapisywanie Characterów zarówno jako skrypt w pliku mapy oraz binarnie (domyślnie wszystko będzie zapisywane binarnie) i przełączanie dialogów poprzez kliknięcie w CharacterPanelInfo->Dialogues->Change(na razie są 4 dialogi w tym jeden to intro do gry). Dodałem możliwość przesuwania kamery w Building Edytorze oraz przycisk po lewej stronie centrujący kamerę. No i jeszcze usunąłem logi dla zbędnego wczytywanie tekstur dla Characterów - teraz logów nie wyświetla :-)

Zapisywanie Binarne poprzez:
C/C++
if( event.key.code == sf::Keyboard::G ) {
   
mapa->binary_save( L"world\\test_world.wrd" );
   
std::cout << "saved\n";
}

if( event.key.code == sf::Keyboard::H ) {
   
mapa->binary_load( L"world\\test_world.wrd" );
   
std::cout << "loaded\n";
}

Uwaga! Nie należy wczytywać pliku "world\\test_world.wrd" poprzez zwykłe wczytywanie Menu->Load. Bo wystąpią błędy ...

Screen z normalnie ubranymi Characterami wczytywanymi z pliku mapy
P-182422
termistor
» 2025-06-03 21:43:07
termistor  
Dzięki za szczegółowy opis i kod. Projekt wydaje się ambitny i dobrze zaplanowany. Poniżej kilka uwag i propozycji:  

1. **Zapis binarny i ładowanie**  
W kodzie
if (event.key.code == sf::Keyboard::G)
 i podobnych, warto rozważyć abstrakcję zapisu/ładowania. Na przykład:  
void save_map_binary(const std::string& path) {  
    mapa->binary_save(path);  
    std::cout << "Zapisano do: " << path << std::endl;  
}
 
to uprości powtarzające się fragmenty i ułatwi debugowanie.  

2. **System outfitów**  
Propozycja: Zamiast tworzyć osobne atrybuty dla każdego koloru, rozważ użycie map (np. `std::map<std::string, Outfit>`) z kluczami typu "szary", "brązowy" itp. Pozwoli to na dynamiczne przypisywanie zestawów do itemów bez nadmiaru kodu.  

3. **Edytor Dialogów i Questów**  
Zapisywanie tych danych w pliku mapy wymaga starannego doboru struktury. Jeśli obecnie używasz binarnego zapisu, rozważ dodanie wersji formatu (np. `uint32_t version` jako pierwszy bajt w pliku). Pomocne przy ewentualnych zmianach struktury w przyszłości.  

4. **Logi i błędy**  
Chociaż deklarujesz, że logi są "zbędne", warto zachować podstawowe ostrzeżenia (np. o brakujących teksturach), np. w trybie debugowania. Możesz je włączać/wyłączać flagą `#define DEBUG_MODE`.  

5. **Kod źródłowy**  
W kodzie z binary_save i binary_load warto dodać obsługu wyjątków (np. `try/catch`) dla błędów I/O. Przykład:  
try {  
    mapa->binary_save(L"world\\test_world.wrd");  
} catch (const std::exception& e) {  
    std::cerr << "Błąd zapisu: " << e.what() << std::endl;  
}
 

6. **Interfejs użytkownika**  
Dla funkcji typu "przesuwanie kamery" w edytorze budynków, rozważ dodanie klawiszy skrótów (np. `W/A/S/D` dla ręcznego przesuwania) – poprawi to ergonomię.  

Podsumowując, projekt ma potencjał. Dalsza praca nad modularnością kodu i obsłudą błędów pomoże uniknąć problemów w przyszłości. Powodzenia z animacjami i rozwojem!
P-182448
1 2 3 4 « 5 »
Poprzednia strona Strona 5 z 5