µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

map vs scrool map ?

 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Coin du dév'
Sujet précédent :: Sujet suivant  
Auteur Message
clem494949


Hors ligne

Inscrit le: 16 Juil 2015
Messages: 3

MessagePosté le: Jeu 16 Juil 2015 - 15:48    Sujet du message: map vs scrool map ? Répondre en citant

Salut, je suis nouveau ici (d’ailler grâce au tuto du site du zero  Okay )

J'ai remarqué qu'après même plusieurs ans, peu de jeux on été partagés sur ce forum ce qui ma poussé à bosser sur mon propre jeu pour accroitre cette collection,
et au du début du codage, j'ai employé naturellement une simple technique afin de rendre une map normale, en map scrollable pixel par pixel.

Je partage cette astuce suite à la lecture de la discussion sur le homebrew du minecraft like qui (je n'ai pas testé le jeu moi même) scrollait la map case par case ...
Bref ma petite astuce consiste en déplaçant la position ou l'on dessine la map chaque frame (en la faissant dépacer de l'écran un peu) :

Code:

--initialisation
tiles = Image.load("tileset.png",VRAM)
map = Map.new(tiles,"map.map",40,40,16,16) --une map normale
scroll_pos = 0  --la position en X
delay = 0  --une variable afin de compter les frames

--boucle principale
while not Keys.newPress.Start do
Controls.read()

if delay > 0 then
delay = delay - 1
end

if Keys.newPress.Right and delay == 0 then --une seule direction pour simplifier
scroll_pos = scroll_pos + 1
Map.scroll(map, scroll_pos, 0)
delay = 8
end

Map.draw(SCREEN_UP,map,2*delay-16,0,19,15) --modification de la position de la map (hors de l'écran)

render()
end

--destruction
Map.destroy(map)
scroll_pos, tiles , delay , map = nil , nil , nil , nil

En fin bref, j'espère avoir aidé quelques uns bien que ce soit assez simple.
Bon allez, une petite preview sur le jeu sandbox que je travail Smile

_________________
Réamination d'une communauté endormie, work in progress...


Revenir en haut
Publicité






MessagePosté le: Jeu 16 Juil 2015 - 15:48    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
miyoyo


Hors ligne

Inscrit le: 12 Mar 2014
Messages: 15

MessagePosté le: Ven 17 Juil 2015 - 20:30    Sujet du message: map vs scrool map ? Répondre en citant

Honnêtement, j'en ai aucune idée, il y a plus de choses disponible dans Map que dans ScrollMap, donc... utilise map, elle fera surement la même chose
Mais bon, je n'ai jamais essayé d'utiliser une carte, donc voila.

Aussi, pour tes sprites, marque explicitement les entrées/sorties, ca aidera pour la lisibilité!

(Futur game-maker DS?)


Revenir en haut
clem494949


Hors ligne

Inscrit le: 16 Juil 2015
Messages: 3

MessagePosté le: Dim 19 Juil 2015 - 11:40    Sujet du message: map vs scrool map ? Répondre en citant

En fait les scroll map sont très simple et sont sûrement plus performantes, elle est suffisante pour la plupart des jeux rpg/plateforme à partir du moment où il n'y a pas une importante interaction avec le background que l'on pourrait avoir dans un jeu sandbox/puzzle.
Voilà pourquoi il y a deux map selon moi.
Faut-il encore savoir que l'on peut mettre un moyen de scroller proprement pour un minimum de confort.

J'y ai pensé à l'affichage des I/O, le problème est que celà multiplierait considérablement le nombre de sprite si je veux que les entrées correspondent aux tiles adjacentes ce qui  rajouterait encore plus de calcules, micro lua tourne déjà qu'à 30 FPS !!!
Je verrais si je peux arranger celà...

(yep Wink du moins le temps que je finisse ce projet en entier (il s'agit d'un rpg puzzle de thème SF))
_________________
Réamination d'une communauté endormie, work in progress...


Revenir en haut
Thomas99


Hors ligne

Inscrit le: 12 Avr 2012
Messages: 141
Localisation: Le forum.

MessagePosté le: Lun 20 Juil 2015 - 19:35    Sujet du message: map vs scrool map ? Répondre en citant

Il me semble que les ScrollMap sont plus performantes que les map. A vrai dire je n'utilise jamais de Map, les ScrollMaps ont toujours suffi pour tous mes projets.

En fait je viens de regarder et les seules choses que semble ajouter les Maps sont la possibilité de dessiner la map sur une partie de l'écran et pas seulement en plein écran, et de mettre de l'espace entre les tiles. Je vois mal des cas d'utilisation de ces fonctionnalités dans la plupart des projets (afficher plusieurs maps par écran peut-être ? mouais pourquoi pas...). En ce qui concerne tout le reste, les interactions avec le background ou le scrolling, c'est rigoureusement identique.

Donc je dirais utilise les ScrollMaps et si jamais tu as besoin de plus utilise les Map (comme toutes les méthodes des ScrollMap sont quasi-identiques dans les Map, ça demandera presque aucun changement).

Et je viens de regarder ton bout de code. Pourquoi faire une combinaison Map.draw / Map.scroll pour scroller ? On peut juste utiliser Map.scroll, comme ça en plus ça marche avec les ScrollMap.
(Bon je viens de comprendre en écrivant, c'est pour faire un déplacement case par case mais avec quand même un scrolling doux. Personnellement j'aurais pas fait comme ça, mais ça marche en effet. La remarque tient toujours cependant, on peut toujours n'utiliser que Map.scroll pour que ce soit compatible ScrollMap (à noter que ScrollMap.scroll accepte des valeurs décimales mais compte quand même en tiles et non en pixel)).

Ton code modifié, plus simple (j'ai pas testé par contre, mais en théorie ça marche je faisais pareil pour mes jeux) :
Code:
--initialisation
tiles = Image.load("tileset.png",VRAM)
map = ScrollMap.new(tiles,"map.map",40,40,16,16) --une map normale
scroll_pos = 0  --la position en X
delay = 0  --une variable afin de compter les frames

--boucle principale
while not Keys.newPress.Start do
Controls.read()

if Keys.newPress.Right and delay == 0 then --une seule direction pour simplifier
scroll_pos = scroll_pos + 1
delay = 8
end

if delay > 0 then
ScrollMap.scroll(map, 2/16, 0) -- 2/16 tiles = 2 pixels (tiles de 16x16)
delay = delay - 1
end

ScrollMap.draw(SCREEN_UP,map)

render()
end

--destruction
Map.destroy(map)
scroll_pos, tiles , delay , map = nil , nil , nil , nil


Concernant les limitations de µLua, c'est généralement plus à cause de la mémoire que les calculs, donc tu as raison de t'inquiéter d'avoir à rajouter de nombreuses tiles. Et pour le "µLua tourne à 30FPS", ce n'est pas vraiment à cause des calculs que tu fais. A mon avis, tu peux encore bourrer longtemps ton code de calculs complexes avant que cela descende en dessous Smile (bon exagère pas non plus, à un moment ça va bien descendre :p). La "limitation" vient du système d'affichage de la DS, qui ne peut afficher de la 3D qu'à 60FPS sur un écran, donc à 30FPS sur deux écrans. Comme µLua utilise en réalité le mode 3D de la DS pour dessiner en 2D (plus rapide et simple), ça donne 30FPS, car la DS "attend" à chaque frame pour conserver ce FPS (limitations hardware de l'affichage 3D), tu as donc de la marge pour tes calculs. 30FPS, c'est en réalité la vitesse maximum, qu'on calcule beaucoup ou pas du tout.

Surtout que rajouter des tiles est beaucoup plus gourmand en mémoire qu'en calculs. Pour résoudre ton problème cependant je te propose une solution plutôt "simple", tu peux afficher deux Map/ScrollMap. L'une est celle que tu affiche actuellement, et l'autre s'affichera au dessus et ne contient que les tiles qui indiquent input / output. Comme ça pas besoin de faire plusieurs tile input et output pour chaque tile, juste un input et un output dans chaque direction, puis tu superpose.

Et sinon, ce jeu a l'air très sympathique, j'attend la suite ! Very Happy

PS aux autres : c'est moi où on a plus accès à la doc et aux sources directement depuis le SourceForge ?
PS à moi-même :
Citation:
peu de jeux on été partagés sur ce forum

Ouais faudrait vraiment que je publie mes projets, surtout ceux qui étaient déjà fini :X
_________________
Publié : ctrµLua, Candran
A publier : TCPDebugger, FastShell
A finir : µPortal, LLUL, µStore, serveur wifis, microlua.js, d'autres trucs
Mon site \o/


Revenir en haut
Visiter le site web du posteur
clem494949


Hors ligne

Inscrit le: 16 Juil 2015
Messages: 3

MessagePosté le: Lun 20 Juil 2015 - 20:35    Sujet du message: map vs scrool map ? Répondre en citant

RE : Ah, je ne savais pas que l'on pouvais scroller en fraction de tile ... c'est sur que c'est plus facile, merci pour l'astuce Smile
Conte'nt que le jeu vous interesse, à vrais dire je fais un "demake" d'un jeu Android (Current Circuit Builder), mais j'ai l'intention de rajouter une partie rpg au jeu avec tout un scénario et différents puzzles basé sur le jeu.
Est-ce que vous avez les mêmes problèmes crash courants sur micro lua par émulateur (desum je crois) ? parce que je dois reset 3-4 fois avant que mon jeu soit stable, c'est normal ? Sad
_________________
Réamination d'une communauté endormie, work in progress...


Revenir en haut
miyoyo


Hors ligne

Inscrit le: 12 Mar 2014
Messages: 15

MessagePosté le: Mer 22 Juil 2015 - 01:35    Sujet du message: map vs scrool map ? Répondre en citant

Si tu veux parler de crashes comme des erreurs de chargement de fichers, OUI, c'est fréquent
sinon, c'est ton code qui est instable.

Aussi, si tu veux être sûr et faire 100% propre, ajoute un collectgarbage() à la fin du code, ca force le ramasse miettes à passer.


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 09:32    Sujet du message: map vs scrool map ?

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Coin du dév' Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com