Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Sandbox 2D][Pygame-Python] UrWorld

Anonyme
9 avril 2015 à 18:25:23

Essais avec beaucoup plus de niveaux différents pour voir ce que ça donne, (genre 20)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 18:26:51


ca donne ca avec bcp + de niveau, mais la je ne parcourt que du haut vers le bas :(
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 18:28:00

C'est déjà nettement mieux ! et sans le *30 ?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 18:33:05

tout serait accumulé en haut a gauche, faut que je bidouille pas mal dans ce cas là x)

m'enfin j'essaye de faire pareil que ca, mais en parcourant avec la distance from top et from bottom ;)

edit :

yes !

j'arrive a quelque chose qui m'a l'air correct ! faut que je bidouille encore par contre ;)

edit 2 :
voilààààààààààààààà ! bon, ok ca a pas l'air au point :/

-
Edité par Anonyme 9 avril 2015 à 19:07:16

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 19:03:15

-

-
Edité par Anonyme 9 avril 2015 à 19:06:37

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 19:07:16

Tu peux essayer de faire (en adaptant ça au python) :

    int lightIntensity(4); // La lumière pure à une intensité de 4, c'est-à-dire qu'il éclaire sur 4 blocs à la ronde
    int mapHeight(30*25); // une map de 25 de blocs de haut par ex
    int mapWidth(30*50); // une map de 50 blocs de large par ex
    int brightnessIntensity;
    for (int y(0); y < mapHeight; ++y) {
        for (int x(0); x < mapWidth; ++x) { // On parcours tout les blocs de la map
            for (int yI(-lightIntensity); yI < lightIntensity; ++yI) {
                for (int xI(-lightIntensity); xI < lightIntensity; ++xI) { // à partir du bloc présent, on parcours tout les blocs qui sont dans son intensité. On démarre à -blockIntensity pour avoir les blocs d'en dessous aussi
                    brightnessIntensity = (yI*xI)*(100/((lightIntensity-1)*(lightIntensity-1))); // On calcul l'intensité du bloc (en %)
                    // Par ex, si on est à 2;3 bloc de la source de lumière, alors l'intensité sera de : 
                    // (2*3)*(100/(4-1)²) = 6 * (100/9) = 6 * 11 = 66% Donc la luminosité sera de 66% (le 11 est aproximatif, normalement c'est un nombre infini : 11,11111111...)
                    blocks[y+yI][x+xI].SetBrightness(birghtnessIntensity);
                }
            }
        }
    }

Bon, ok c'est pas le plus optimisé, mais je pense qu'il est fonctionnel (PS : Si tu ne veux pas sur 100 mais sur 3 comme tu l'a dit, remplace 100 par 3 :D)

Faut aussi l'adapter en Python, J'espère t'avoir aidé !

-
Edité par Anonyme 9 avril 2015 à 19:09:37

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 19:10:19

merchi :D je test et je te dis :)

par 30 tu veux dire plutot, pas 3 x) ?

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
Anonyme
9 avril 2015 à 19:29:33

techniquement parlant c'est ++ que fonctionnel :D

mais bon, comment dire ?

python aime pas, il rame à 0 FPS donc il arrete tout car y a pas de changement :(

en gros le prog ne repond pas x)

def ombrage_bloc4(fenetre, structure_niveau, fov):
    lightIntensity = 4
    mapHeight = 30 * 20
    mapWidth = 30 * 50
    brightnessIntensity = 0
    for y in range(mapHeight):
        for x in range(mapWidth):
            for yI in range(-lightIntensity, lightIntensity):
                for xI in range(-lightIntensity, lightIntensity):
                    # à partir du bloc présent, on parcours tout les blocs qui sont dans son intensité.
                    # On démarre à -blockIntensity pour avoir les blocs d'en dessous aussi
                    brightnessIntensity = (yI*xI)*(30/((lightIntensity-1)*(lightIntensity-1)))
                    # On calcul l'intensité du bloc (en %)
                    # Par ex, si on est à 2;3 bloc de la source de lumière, alors l'intensité sera de :
                    # (2*3)*(100/(4-1)²) = 6 * (100/9) = 6 * 11 = 66% Donc la luminosité sera de 66%
                    # (le 11 est aproximatif, normalement c'est un nombre infini : 11,11111111...)
                    if y + yI >= 0 and x + xI >= 0 and (y + yI) // 30 <= 20 and (x + xI) // 30 <= fov[1] - fov[0]:
                        if structure_niveau[(y + yI) // 30][(x + xI) // 30] in passe_pas:
                            surf = pygame.Surface((30, 30))
                            surf.fill(0x000000)
                            surf.set_alpha(brightnessIntensity)
                            surf.convert_alpha()
                            fenetre.blit(surf, (int((x + xI) // 1), int((y + yI) // 1)))
                            #blocks[y+yI][x+xI].SetBrightness(birghtnessIntensity)

et j'ai utilisé cet algo, traduit en python ;)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 19:33:24

Lubzorg a écrit:

python aime pas, il rame à 0 FPS donc il arrete tout car y a pas de changement 

Alors chez moi... X)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 19:36:56

bon projet en python en plus
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 19:37:58

Tu le lance quand cette algo ?

Et il n'est pas totalement fonctionnel chez moi faut que je regarde

-
Edité par Anonyme 9 avril 2015 à 19:38:30

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 20:47:10

je lance a chaque tour de boucle, soit environ 75 fois par secondes.

mais la j'ai optimisé, je suis passé en bloc (en 30 * 30) et plus en pixel pour voir ;)

ou n'est il pas fonctionnel ?

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
9 avril 2015 à 21:45:52

ca marche bizarrement et ca rame, mais bon ;) GG

faut que j'augmente les différences entre chaque % dans ce cas :D

  • Partager sur Facebook
  • Partager sur Twitter
10 avril 2015 à 0:25:45

Et en utilisant des nombres flottants?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 avril 2015 à 10:34:23

essaye de le mettre juste a la génération de la map
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 avril 2015 à 19:21:51

Ardakaniz a écrit:

essaye de le mettre juste a la génération de la map


hum, oui mais non en fait, car c'est un shader, et on peut choisir lequel utiliser :/

alors ca poserait pas mal probleme je pense :(

1vrai0 a écrit:

Et en utilisant des nombres flottants?


non plus, ca ferait pareil et en plus je ne peux regler mon niveau d'ombres qu'avec des int :)
  • Partager sur Facebook
  • Partager sur Twitter
11 avril 2015 à 0:33:22

salut, joli projet !
pour le shader, peut être lui faire detecter les changement dans l'environnement et ne le mettre a jours que lorsqu'un changement se produit ?
(bloc "cassé" ect ect)
  • Partager sur Facebook
  • Partager sur Twitter
DIESELPUNK
Anonyme
11 avril 2015 à 7:49:12

Hello, merci de ton commentaire, ça fais toujours plaisir :)

C est pas bête ça aussi mais ça boufferrait plein de perf au lancement du jeu et a chaque action du personnage :(

Et de plusplus je n utilise que le field of view pour faire mes shaders donc sur une toute petite partie de la mal. En gros sur 75 blocs de largeur ;)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2015 à 19:22:41

il s'en est passé des choses depuis lors dis donc !

une gui (dialog box, donc ok ou oui-non box :) ) a vu le jour ! enfin !

et on peut effacer totalement sa partie depuis le menu ;)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
Anonyme
15 avril 2015 à 20:38:39

pour ou contre un indicateur in game qui vous dit combien vous avez de tel ou tel bloc et son nom ?

(au survol dans la "création" de son monde)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2015 à 20:42:55

Pour, mais faut pas que ça prenne trop de place. Pour que ce soit visible sans que ça prenne la moitié de l'écran, calcule la couleur du texte en fonction du bloc survolé ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2015 à 20:46:17

ok je te fais ca vite def pour voir alors ;)

edit : voici ce que ca donne

-
Edité par Anonyme 15 avril 2015 à 20:56:54

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2015 à 20:57:06

fait :D

edit : et la touche 't' permet désormais de choisir si on affiche les 'stats' du blocs ou le curseur :D

-
Edité par Anonyme 15 avril 2015 à 21:00:20

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
Anonyme
15 avril 2015 à 21:11:50

Lubzorg a écrit:

ok je te fais ca vite def pour voir alors ;)

edit : voici ce que ca donne

-
Edité par Lubzorg il y a 14 minutes



  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
15 avril 2015 à 21:15:00

Je suis un blaireau.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
16 avril 2015 à 8:02:44

hello :D

juste pour vous dire que j'ai corrigé pas mal de bugs, mais d'autres arrivent encore, et que j'ai fini les actions de mana avec les sceptres :D (ok y a un bug avec le cone destructeur et quand on build on va poser des sceptres, faut que je demande quel bloc on veut poser sur le terrain avant, mais ca c'est facile :) )
  • Partager sur Facebook
  • Partager sur Twitter