Opracowanie mapy nasion Minecraft Java / przeglądarki nasion dla strony internetowej
Opracowanie mapy nasion Minecraft Java / Podgląd nasion dla strony internetowej
Opis projektu
Potrzebne jest opracowanie narzędzia opartego na przeglądarce Mapa nasion Minecraft Java / Podgląd nasion, które będzie działać na naszej stronie i pozwoli użytkownikowi wprowadzić nasiono Minecraft Java Edition i przeglądać interaktywną mapę świata z biomami, strukturami i punktami kluczowymi.
Funkcjonalnie narzędzie ma być zbliżone do Cubiomes Viewer / podobnych rozwiązań podglądu map nasion: użytkownik wprowadza nasiono, wybiera wersję Minecraft Java Edition, po czym widzi mapę świata z możliwością powiększania / przesuwania, przełączania warstw, współrzędnymi i znacznikami struktur.
Główny nacisk zadania — poprawna realizacja generacji świata Minecraft przez Cubiomes, stabilna praca bez zawieszeń, dokładność mapy nasion i prawidłowe wyświetlanie struktur / biomów.
Co należy zrealizować
1. Generacja mapy nasion Minecraft Java po stronie klienta
Trzeba zrealizować w pełni logikę generacji mapy po stronie klienta na podstawie nasiona Minecraft Java.
Oczekiwana baza techniczna:
- Biblioteka C Cubiomes
- kompilacja / integracja przez WebAssembly / Emscripten
- generacja w przeglądarce bez przetwarzania backendowego
- użycie Web Workers, aby generacja nie blokowała UI
- stabilna praca bez zacięć podczas podstawowej interakcji z mapą
Nasiono musi być ważne: jeśli użytkownik wprowadzi nasiono i następnie sprawdzi je w grze Minecraft Java Edition, kluczowe biomy, struktury i współrzędne muszą odpowiadać oczekiwanemu wynikowi dla wybranej wersji gry.
2. Wsparcie dla wprowadzania nasion
Użytkownik musi mieć możliwość:
- wprowadzenia numerycznego nasiona;
- wprowadzenia tekstowego nasiona, które poprawnie konwertuje się na nasiono Minecraft Java;
- wygenerowania losowego nasiona przez przycisk Losowe nasiono;
- zmiany nasiona i ponownego wygenerowania mapy.
3. Wsparcie dla wersji Minecraft Java Edition
Trzeba zrealizować selektor wersji Minecraft Java Edition.
W MVP pożądane jest wsparcie dla wszystkich wersji, które są wspierane przez Cubiomes, lub maksymalnie pełna lista aktualnych wersji, które Cubiomes może poprawnie przetwarzać.
Wybrana wersja ma realnie wpływać na generację mapy, biomów i struktur.
4. Wsparcie dla wymiarów Minecraft
W MVP trzeba zrealizować wsparcie dla podstawowych wymiarów:
- Overworld;
- Nether;
- End.
Użytkownik musi mieć możliwość przełączania się między wymiarami, jeśli jest to wspierane przez Cubiomes dla odpowiedniej wersji.
5. Interaktywna mapa
Trzeba zrealizować mapę z podstawową interaktywnością:
- powiększanie / pomniejszanie;
- przesuwanie / przeciąganie;
- wyświetlanie współrzędnych X / Z;
- współrzędne przy najechaniu lub kliknięciu;
- możliwość skopiowania współrzędnych;
- przywracanie stanu przez udostępniony URL.
Do renderowania mapy można użyć OpenLayers lub innego uzasadnionego rozwiązania, jeśli lepiej pasuje do zadania. Jeśli wybierane jest inne niż OpenLayers — trzeba krótko wyjaśnić powód.
6. Wyświetlanie biomów
Na mapie mają być wizualnie wyświetlane biomy Minecraft Java Edition.
Ważne:
- biomy muszą odpowiadać wybranemu nasionu;
- biomy muszą odpowiadać wybranej wersji Minecraft Java;
- musi być możliwość włączenia / wyłączenia warstwy biomów;
- pożądane jest, aby wizualizacja mapy była zrozumiała i przyjemna, a nie tylko techniczną siatką.
Osobno możemy dostarczyć referencje pożądanego stylu wyświetlania mapy / bloków / kolorów.
7. Wyświetlanie struktur i znaczników
Na mapie mają być wyświetlane struktury, które są wspierane przez Cubiomes dla wybranej wersji Minecraft Java.
Minimalnie obowiązkowe:
- punkt spawnu lub szacowany spawn;
- wioski;
- twierdze;
- stare miasta;
- komory prób, jeśli są wspierane przez wybraną wersję;
- fortecy Nether;
- bastiony;
- pomniki oceaniczne;
- dwory leśne;
- ruinowane portale;
- posterunki pillagerów;
- kopalnie;
- inne struktury dostępne przez Cubiomes.
Trzeba zrealizować znaczniki struktur na mapie oraz przełączniki warstw:
- wszystkie struktury włączone / wyłączone;
- poszczególne typy struktur włączone / wyłączone;
- biomy włączone / wyłączone.
Znaczniki muszą być klikalne lub interaktywne: przy kliknięciu pożądane jest pokazanie typu struktury i współrzędnych.
8. Udostępniony URL
Trzeba zrealizować udostępniony URL, który przywraca stan mapy.
Minimalnie w URL muszą być zapisane:
- nasiono;
- wersja Minecraft Java;
- pożądane — wybrany wymiar;
- pożądane — pozycja mapy / powiększenie.
Po otwarciu takiego URL użytkownik ma zobaczyć tę samą mapę bez ponownego ręcznego wprowadzania nasiona.
9. UI / UX
Trzeba zrobić wygodny i wizualnie schludny UI dla narzędzia.
Podstawowe elementy:
- wprowadzanie nasiona;
- przycisk losowego nasiona;
- selekcja wersji;
- selekcja wymiaru;
- przełączniki warstw;
- współrzędne;
- kopiowanie współrzędnych;
- mapa;
- panel ze strukturami / filtrami.
Projekt ma być dostosowany do desktopu. Mobile — drugi priorytet, ale interfejs nie ma się całkowicie psuć na małych ekranach.
Możliwe, że dostarczymy osobny projekt od naszego projektanta. Jeśli projekt zostanie dostarczony, realizacja będzie musiała być dostosowana do niego.
SEO / integracja na stronie
Narzędzie będzie umieszczone na osobnej stronie strony internetowej, orientacyjnie:
/minecraft-seed-map
Strona ma działać jako strona docelowa SEO + narzędzie użytkowe.
Z strony dewelopera należy przewidzieć, aby samo narzędzie można było zintegrować na stronie internetowej. Ostateczna treść SEO, teksty i struktura strony docelowej mogą być przygotowane osobno.
Oczekiwania techniczne
Pożądany stos / podejście:
- Cubiomes;
- WebAssembly przez Emscripten;
- Web Workers;
- JavaScript / TypeScript;
- OpenLayers lub inna warstwa renderowania map;
- w pełni generacja po stronie klienta;
- bez obowiązkowej zależności backendowej do generacji mapy.
Ważne, aby realizacja była wydajna:
- UI nie ma się zawieszać podczas podstawowej interakcji;
- generacja ma być przeniesiona do worker;
- trzeba zoptymalizować ładowanie / budowę mapy;
- pożądane jest zrealizowanie podejścia opartego na kafelkach lub fragmentach, aby mapa nie próbowała od razu generować nadmiernej ilości danych.
Logika MVP
W MVP ma działać:
- Wprowadzenie nasiona.
- Losowe nasiono.
- Wybór wersji Java Edition.
- Generacja mapy dla wybranego nasiona.
- Wyświetlanie Overworld.
- Pożądane — wsparcie dla Nether i End.
- Wyświetlanie biomów.
- Wyświetlanie struktur, które są wspierane przez Cubiomes.
- Minimalnie obowiązkowe struktury:
- wioski;
- twierdze;
- stare miasta;
- punkt spawnu / szacowany spawn.
- Powiększanie / przesuwanie.
- Współrzędne X / Z.
- Kopiowanie współrzędnych.
- Udostępniony URL.
- Przełączniki warstw dla biomów i struktur.
- Web Worker do generacji.
- Stabilna praca bez krytycznych lagów.
Referencje
Przed rozpoczęciem pożądane jest zapoznanie się z logiką Cubiomes Viewer / narzędzi podglądu map nasion.
Musimy zrealizować podobne funkcjonalnie narzędzie na naszej stronie, ale z własnym UI i stylem wizualnym.
Dodatkowo możemy dostarczyć:
- projekt UI;
- referencje stylu mapy;
- referencje wyświetlania bloków / biomów;
- listę priorytetowych wersji Minecraft Java;
- listę struktur, które muszą być w MVP.
Kryteria akceptacji
Praca jest uważana za wykonaną, jeśli:
- nasiono jest wprowadzane i poprawnie przetwarzane;
- tekstowe nasiono poprawnie konwertuje się na nasiono Minecraft Java;
- losowe nasiono działa;
- selekcja wersji wpływa na generację;
- mapa jest interaktywna: powiększanie / przesuwanie działa;
- biomy są poprawnie wyświetlane;
- kluczowe struktury są poprawnie wyświetlane;
- minimalnie działają wioski, twierdze, stare miasta;
- punkt spawnu lub szacowany spawn jest wyświetlany;
- przełączniki warstw działają;
- współrzędne X / Z są pokazywane przy najechaniu lub kliknięciu;
- kopiowanie współrzędnych działa;
- udostępniony URL przywraca nasiono i wersję;
- generacja jest realizowana przez Web Worker;
- UI nie zawiesza się podczas podstawowej interakcji;
- narzędzie można zintegrować na stronie internetowej;
- kod jest zorganizowany i nadaje się do dalszego wsparcia.
Co potrzebne od wykonawcy
W odpowiedzi na projekt, proszę podać:
- Czy miałeś doświadczenie z WebAssembly / Emscripten.
- Czy pracowałeś z Cubiomes lub generacją świata Minecraft.
- Jaki proponujesz podejście do renderowania mapy.
- Czy widzisz ryzyka w wsparciu różnych wersji Minecraft Java.
- Orientacyjną ocenę terminów dla MVP.
- Przykłady podobnych interaktywnych narzędzi webowych, jeśli są.
Preferencje będą miały osoby, które już pracowały z:
- narzędziami związanymi z Minecraft;
- generacją proceduralną;
- WebAssembly;
- renderowaniem map / canvas;
- OpenLayers lub podobnymi bibliotekami;
- optymalizacją wydajności w przeglądarce.
-
196 mamy już prawie gotową bazę dla takiego rozwiązania - interaktywny narzędzie przeglądarkowe z mapą, warstwami, stanem w linku i generacją w workerach, więc możemy szybko dostosować pod Minecraft seed viewer i uruchomić MVP.
co do terminów dla MVP, orientowałbym się na 5-7 tygodni, w zależności od ostatecznej listy wersji Java Edition, struktur i tego, jak głęboko trzeba pokryć Nether i End.
oszacowanie - 180000 UAH za MVP z normalną architekturą, a nie tylko demo, które ładnie działa przez pierwsze 10 minut, a potem idzie filozofować w konsoli =)
WebAssembly / Emscripten - tak, takie podejście tutaj jest uzasadnione.
Cubiomes zintegrowałbym przez osobny moduł wasm, generację przeniósłbym do Web Workera, a mapę robiłbym tile-based lub chunk-based, aby nie generować zbędnego obszaru i nie blokować interfejsu.
dla renderowania, najprawdopodobniej, wziąłbym OpenLayers, jeśli nie pojawi się wymaganie do bardziej niestandardowego wizualizacji canvas/WebGL.
OpenLayers dobrze nadaje się do zoom / pan, współrzędnych, warstw, znaczników i przywracania stanu przez URL.
…
widzę ryzyko związane z wersjami Minecraft w tym, że różne wersje Java Edition różnie wpływają na biomy, struktury i dostępność poszczególnych obiektów.
więc nie obiecywałbym wszystkich wersji na raz, a stworzyłbym zweryfikowaną listę wsparcia na podstawie Cubiomes, z matrycą - wersja, wymiary, biomy, struktury.
to ten przypadek, gdzie lepiej siedem razy sprawdzić seed, niż raz ładnie narysować błędną mapę.
z technicznego punktu widzenia widzę taką realizację
- kompilacja Cubiomes w WebAssembly przez Emscripten
- osobny worker do generacji biomów i struktur
- cache'owanie tile'i / chunków w przeglądarce
- konwersja text seed w Java seed bez utraty kompatybilności
- warstwy biomów i struktur z osobnymi przełącznikami
- współrzędne X / Z, kopiowanie współrzędnych, hover lub click
- shareable URL dla seed, wersji, dimension, pozycji i zoom
- format integracyjny, aby narzędzie można było wstawić na stronę /minecraft-seed-map
wyjaśnię 2 punkty, aby nie zgadywać na cubiomach, chociaż brzmi to kusząco
- które wersje Minecraft Java dla MVP są najważniejsze - tylko aktualne czy potrzebny szeroki historyczny wykaz?
- projekt już będzie od waszego projektanta czy trzeba z naszej strony przygotować własny schludny UI pod desktop i responsywny?
przykłady bliskiego doświadczenia Ingello
- https://business.ingello.com/vorfahr - skomplikowany system webowy z automatyzacją, logiką danych i integracjami
- https://business.ingello.com/fractal - przykład architektury dla skomplikowanych procesów, logiki agentowej i skalowalnych modułów
- https://systems-fl.ingello.com/ua - krótko o naszym podejściu do systemowej rozwoju, automatyzacji i rozwiązań AI
na łączności, możemy omówić skład MVP, wersje Minecraft i ryzyka techniczne tutaj na giełdzie.
-
1168 7 0 Dzień dobry! Mamy doświadczenie w pracy z algorytmami generacji świata Minecraft oraz integracją interaktywnych map w interfejsy webowe. Realizujemy to poprzez zoptymalizowane renderowanie chunków po stronie klienta z wykorzystaniem WebGL dla wysokiej wydajności. Jesteśmy gotowi omówić szczegóły architektury i skalowalność rozwiązania pod Twoje potrzeby.
-
Zadaj swoje pytanie zleceniodawcy