Zdravím všechny! Myšlenka LÖVE se mi moc líbí, ale jazyk Lua už moc ne. Vím že je to troufalé tvrzení, napsat takový příspěvek do seriálu o jazyku Lua, ale nemyslím to jako flame.
Poslední dobou nejvíc používám Javu, takže mě přirozeně napadlo do Javy
přenést rozhraní LÖVE. Hry by se psaly úplně stejným způsobem, jen jazyk
by se změnil z Lua na Javu. Chci to zkusit, protože psát hry v Javě jen
s AWT je docela peklo.
Nechal jsem si na prozkoumání konceptu chvilku času, pro přístup
k nativním systémovým knihovnám jsem použil Java Native Access,
inicializoval jsem SDL a do okna jsem vykreslil pár čárek. Jako funkční
prototyp ve verzi „0.1 alfa“ mi to zatím stačí, ale rozšiřování
rozhraní zabere ještě dost času. :-)
Líbí se mi původní název i celé názvosloví, které jsem si vytvořil:
namísto „game-engine“ jsem třídu pojmenoval „Java Love Machine“, pro
přístup k nízkoúrovňovým službám mám balík
„penetration“. :-D
Technicky jde o normální .jar s přeloženou třídou Java, která
používá herní engine. Celý systém balení resource obrázků do zipu
zůstává stejný, jen příponu archivu jsem změnil z .love na .JavaLove, aby
se to nepletlo s původním systémem LÖVE.
Chtěl jsem si zaregistrovat doménu, ale zjistil jsem, že lovejava.org
i javalove.org už nejsou volné, což mě dost mrzí, ale na druhou stranu se
není čemu divit. Nemáte někdo nápad na jiný název domény, který by byl
stejně chytlavý a zněl by stejně pěkně?
Budu vděčný za vaše nápady a připomínky! :-)
Pokud se Ti podaří udělat správně event loop tak, aby byl jednoduchý podobně jako v LÖVE, tak by to mohlo vypadat hezky, hlavne by tam byla automaticky podpora vsech trid z JDK a hafo dalsich balicku. Mozna by tu knihovnu chtelo udelat jeste na ponekud vyssi urovni, napriklad graficke objekty by byly skutecne reprezentovany objekty ulozenymi ve stromu cele zpracovavane sceny.
<noflame>To spojeni Lua+LÖVE je docela dobre, ostatne si myslim, ze nakonec taky skoncis s tim, ze si pridas podporu pro Groovy nebo Jython :-), protoze spoustu jednodussich her postaci naskriptovat v nejakem vysokourovnovem jazyce a teprve pro opravdu vypocetne narocne veci se sahne po C/C++/Jave. Lua+LÖVE je taky v podstate strasne jednoducha vec, treba uz jen instalace, takze napriklad pro vyuku je to takrka idealni prostredi pro ty, kteri se uz nechteji zabyvat Baltikem ci Logem.</noflame>
Ještě mě napadlo – potřebuješ vůbec SDL, když ted máme akcelerovanou Java2D? Bez toho SDL by to přecejen bylo (výsledná hra) snáze instalovatelné atd. Podpora pro fonty i rastrové obrázky v Java2D je, základní objekty taky. (přiznám se, benchmarky pro porovnání nemám, ale když se volá ten stejný driver, tak by to mohlo být +- stejně rychlé). Pro opravdu low-level přístupu k video RAM by se taky dalo použít VolatileImage, to je vlastně obdoba původního DirectDraw :-)
Díky za příspěvek! :-) V použití knihovny SDL namísto grafiky v Javě asi moc nezískám, větší benefit bude v ostatních modulech, třeba ovládání joystickem nebo fyzikální engine.
Ale abych vysvětlil své plány, nejde mi o zvýšení výkonu grafiky
v Javě, jde mi především o kvalitní rozhraní. Je možné, že Java2D je
ve výsledku stejně rychlá jako SDL s OpenGL, ale o to mi ani tolik nejde.
Jde o to, že např. rotovat obrázek je s API Javy je mnohem složitější
než pouhé:
love.graphics.draw(image, x, y, angle)
A když už budu kopírovat rozhraní, které má LÖVE, můžu přitom
využít i technologii, která stojí za tím, tedy SDL.
Aha, promiň, já to na začátku špatně pochopil. Myslel jsem, že se chceš celým systémem LOVE pouze inspirovat a udělat si všechno sám.
Pokud to má být vrstva mezi vlastním „céčkovým“ LOVE a Javou, tak je opravdu nejjednodušší použít prakticky všechny věci tak jak jsou a udělat k nim přes Java native interface rozumné API (bude to i výhodné, protože jakékoli další rozšíření LOVE se již zapracuje poměrně snadno).
Asi jediný problém bude v časovačích a callback funkcích, ale mohlo by to celé ve výsledku být velmi zajímavé, protože mám dojem, že nějaký podobný snadno použitelný a ucelený systém pro Javovskou platformu chybí.
Přeji hodně štěstí, jestli něco budeš potřebovat (Lua, Java), klidně se ozvi na e-mail, ten se někde na Rootu dá najít :-)
Ahoj. Pracuješ na tom ještě? Sice mě osobně Lua vyhovuje, ale nepřipadá mi jako špatný nápad portovat Love do jiných jazyků - alespoň bude více lidí, kteří se budou moci zapojit :)
Já osobně si pohrávám s myšlenkou na něco podobného jako je Love, ale nechci to dělat jako samostatný engine, nýbrž jako wydget do FoxToolkitu (C++).
Koncept by tedy byl defakto stejný. Existovalo by několik základních událostí, které by se doprogramovaly v Lua jazyce, k tomu několik předdefinovaných objektů a metod (sprite a grafické objekty, správce objektů, funkce kolizních systému, možnost výběru mezi OpenGl a software renderigem, graphics context - to Love zrovna zatím nemá, Lua knihovnu sablonových objektů pro různé typy her, ...) a zároveń by tento widget mohl komunikovat se zbytkem aplikace psané v C++ (takže by bylo k dispozici např. pohodlné GUI, atd...).
Jak píšu je to jen nápad, bohužel zatím nerealizovaný, protože v tuto chvíly mám rozpracovány jiné projekty a potřebuji je dokončit, ale jakmile se najde trocha času a chuti určitě se do toho pustím :)