Users browsing this thread: 3 Guest(s)
Gamedev Lounge 0010
(09-03-2013, 06:40 PM)TheShyGuy Wrote: Hey Phaze (and Ridge?), here are a few images of the progress on the tool.

https://www.dropbox.com/sh/ujnz733i3flof...M5/random2

They are from a few days ago.

Welp, I'm put to shame. At l-least I got out d-database SQL for Mask... Cry

http://pastebin.com/PvtRSsYQ if u wanna see (and tell me where I fucked up, assuming I did)
Could've sworn # commented in SQL...

Also showed Ridge that for you since he doesn't check this forum iirc.
Thanked by: TheShyGuy
haha lol. The docking thing wasn't me though (https://github.com/dockpanelsuite/dockpanelsuite)

I don't know anything about SQL. I've never needed to work on anything with servers and stuff so I can't help you out =/. I'll probably have to look into to that stuff after I start working on the game. Having atleast online multiplayer is a must for it.

I pm-ed Ridge already too because I was unsure if he was okay with me showing his Popple SpriteSheet.
Animations - MFGG TKO (scrapped) - tFR
[Image: QUmE6.gif]
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
Thanked by:
(09-03-2013, 09:53 PM)TheShyGuy Wrote: haha lol. The docking thing wasn't me though (https://github.com/dockpanelsuite/dockpanelsuite)

I don't know anything about SQL. I've never needed to work on anything with servers and stuff so I can't help you out =/. I'll probably have to look into to that stuff after I start working on the game. Having atleast online multiplayer is a must for it.
Ah :v

It's not very hard... imo. SQL doesn't really execute anything and just describes so the learning curve is less steep. Just gotta learn the keywords. But on the other hand, knowing how to use it WELL is another thing... one I'm not sure I've grasped yet.

Which game?
Thanked by:
It's not Ridges game (if that's what you were thinking?) more or less because all I know about it is that you guys need this tool. The game I will be be working on is a 2D brawler. I'll probably get started on it when I atleast have support for animating with the tool. -Which I'm about to do soon.

Oh yea, I'm not going to support skewing anymore (among a few other things). It's still there and using it doesn't break the engine. But I don't know how to decompose a matrix with skew.(SKRT -> Scale * Skew * Rotation * Translation). Since I can't do that, I can't correctly do global transforms =/. Googling gives me answers but nothing that is dummed down enough for me ( I haven't learned Linear Algebra yet).

----

What's the issue you have with the SQL link you posted?
Animations - MFGG TKO (scrapped) - tFR
[Image: QUmE6.gif]
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
Thanked by:
Been programming a bunch of photoshop style OpenGL ES shaders for Game Maker Studio games. Here's an image of the curves tool shader.

[Image: curvesexample_by_alaingalvan-d6ldqvj.png]
Thanked by: Virt, Kakashifan
That's cool, care to describe a bit more about the shader code? You've probably already heard of it already, but look up distortion shaders. They're pretty fun to mess with.
----

Progress on tool:

https://www.dropbox.com/sh/ujnz733i3flof...gTool/9-15

There's still quite a bit to do on it. Tomorrow, I'll probably work on keyframing and then making a dopesheet. That means there's no interpolation right now, but the "frame by frame" animating works fine. After that, I'll add a some polish (note the ugly "Play" button among other things). I'm going more for functionality right now as I've picked up a practice game.

I'm unsure who will use this, but I hope someone finds a use. It's not something to sprite animate with. It's more of like interpolation animating, instead of doing it by hand. I don't know. For some reason, I'm doubting the usage of this for normal spriters that aren't making a game or would even need this kind of animation.

Anyways, after I get atleast some polish in, I'll probably start working on the prototype for the practice game. Heh, which means I also need a small tool to make some small attack scripts to use with the animation tool. That's the plan right now, an animator and a small tool next to it to view the attack collisions and effects.
Animations - MFGG TKO (scrapped) - tFR
[Image: QUmE6.gif]
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
Thanked by: Phaze
Well, the shaders that I've been programming are essentially the same as the Photoshop/GIMP tools that everyone uses, color correction tools like Contrast/Brightness, Hue/Sat/Lum, Gamma, Color Curves, Levels, and Blend Modes like Overlay, Color Burn, Exlude, etc.

I'll probably program some distortion shaders for underwater effects, say some distortion with some chromatic aberration and god rays. Though I'd probably do that with Unity, since as far as I'm able to tell, Game Maker isn't the best at deferred rendering techniques. Game Maker shaders are in OpenGL ES though, so if you know C++ (Or really any OOP language), you should get it in a jiffy. Unity uses their own proprietary shader language though, most likely for compatibility.

And that's looking like a beast tool, a "puppet" based sprite animator. Big Grin
Thanked by:
Progress so far, visually the same:
https://www.dropbox.com/s/xsrfmkl2kz7mrg...onTool.png

Most of the development has been non-visual behind the scenes stuff. The scripting window is so useful, especially when you gotta keep recreating the same animations due to code updates.
Animations - MFGG TKO (scrapped) - tFR
[Image: QUmE6.gif]
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
Thanked by: Phaze
making a battleship game for my programming class (GUI not necessary)

fun fun fun
[Image: E3DU8rS.png]
Reference
♥ ♥ ♥ LOVE ♥ ♥ ♥
Omega ; Phant Mmkay ; Baegal ; Gorsal ; Drakocat ; Chaoxys ; TomGuyCott ; Chris2balls ; Mighty Jetters ; Blueblur97 ; NICKtendo DS ;
Kachua (Secret Santa) ; and some more that i need to locate, save and link onto here
Thanked by: Hiynastrike, puggsoy
double post cause i managed to make it

Code:
# -*- coding: utf-8 -*-
"""
Éditeur de Spyder

Ce script temporaire est sauvegardé ici :
/home/user/.spyder2/.temp.py
"""

from random import *
from copy import *

def generate_player():
#   crée la grille de jeu du joueur et place le bateau du joueur à l'emplacement choisi
    global playersea
    i=0
    while i<=4:
        playersea.append([0,0,0,0,0])
        i=i+1
#   on génère la grille vide
    print "Entrez la coordonnée X de la queue de votre navire (de 1 à 5):"
    xdone=False
    while xdone==False:
        x=input()-1
        if x>=0 and x<=4:
            xdone=True
        else:
            print "Coordonnée invalide - Recommencez:"
#   le joueur entre la coordonnée x du premier carre du navire, et on verifie qu'elle est valide
    print "Entrez la coordonnée Y de la queue de votre navire (de 1 à 5):"
    ydone=False
    while ydone==False:
        y=input()-1
        if y>=0 and y<=4:
            ydone=True
        else:
            print "Coordonnée invalide - Recommencez:"
#   le joueur entre la coordonnée y du premier carre du navire, et on verifie qu'elle est valide
    playersea[y][x]=1
    print "Entrez la direction dans laquelle est orienté votre navire (N,S,E ou O):"
    cdone=False
    while cdone==False:
        cardinal=raw_input()
        if cardinal=="N" or cardinal=="S" or cardinal=="E" or cardinal=="O":
            cdone=True
        else:
            print "Direction invalide - Recommencez:"
            cdone=False
        if (cardinal=="N" and y==0) or (cardinal=="S"and y==4) or (cardinal=="O" and x==0) or (cardinal=="E" and x==4):
            print "Ceci vous ferait sortir de la grille de jeu - Recommencez:"
            cdone=False
    if cardinal=="N":
        playersea[y-1][x]=1
    elif cardinal=="S":
        playersea[y+1][x]=1
    elif cardinal=="E":
        playersea[y][x+1]=1
    elif cardinal=="O":
        playersea[y][x-1]=1
#   le joueur entre le point cardinal vers lequel pointe le navire, et on verifie qu'il est valide

def generate_enemy():
#   crée la grille de jeu adverse et y place aléatoirement le bateau de 2 cases à couler
    global enemysea
    i=0
    while i<=4:
        enemysea.append([0,0,0,0,0])
        i=i+1
    x=randint(0,4)
    y=randint(0,4)
    enemysea[y][x]=1
#   ici on crée le premier carre du bateau aleatoirement
    cardinal=["N","S","E","O"]
    edge=0
    if x==0:
        cardinal.remove("O")
        edge=edge+1
    if y==0:
        cardinal.remove("N")
        edge=edge+1
    if x==4:
        cardinal.remove("E")
        edge=edge+1
    if y==4:
        cardinal.remove("S")
        edge=edge+1
    z=cardinal[randint(0,(3-edge))]
#   ces conditions permettent de verifier si le bateau est en bord de grille et bloque adequatement la creation du 2e carre
    if z=="N":
        enemysea[y-1][x]=1
    elif z=="S":
        enemysea[y+1][x]=1
    elif z=="E":
        enemysea[y][x+1]=1
    elif z=="O":
        enemysea[y][x-1]=1
#   et ici on place donc le 2eme carre du bateau

def player_turn():
#   fait tirer le joueur aux coordonnées choisies, puis indique s'il a touché un bateau adverse, et garde les coord de tir
    global enemysea
    done=False
    while done==False:
        print "Entrez la coordonnée X de votre tir (de 1 à 5):"
        xdone=False
        while xdone==False:
            x=input()-1
            if x>=0 and x<=4:
                xdone=True
            else:
                print "Coordonnée invalide - Recommencez:"
#   On fait entrer au joueur la coordonnée X de son tir, et on verifie si elle est valide
        print "Entrez la coordonnée Y de votre tir (de 1 à 5):"
        ydone=False
        while ydone==False:
            y=input()-1
            if y>=0 and y<=4:
                ydone=True
            else:
                print "Coordonnée invalide - Recommencez:"
#   On fait entrer au joueur la coordonnée Y de son tir, et on verifie si elle est valide
        if isinstance(enemysea[y][x],str)==True:
            print "Vous avez déjà tiré là - Recommencez:"
            done=False
        elif enemysea[y][x]==1:
            print "Touché !"
            global playershot
            playershot=playershot+1
            enemysea[y][x]="O"
            done=True
        elif enemysea[y][x]==0:
            print "Raté !"
            enemysea[y][x]="+"
            done=True
#   On verifie si l'endroit du tir a deja été fait, et s'il s'y trouve le bateau adverse ou simplement de l'eau

def enemy_turn():
#   fait tirer aleatoirement l'ennemi
    global playersea
    global enemyshot
    if enemyshot==0:
        x=randint(0,4)
        y=randint(0,4)
#   Ici l'IA va simplement tirer aleatoirement
    elif enemyshot==1:
        i=False
        for iy in range(0,5):
            for ix in range(0,5):
                if playersea[iy][ix]=="O" and i==False:
                    y=copy(iy)
                    x=copy(ix)
                    i==True
        cardinal=["N","S","E","O"]
        edge=0
        if x==0:
            cardinal.remove("O")
            edge=edge+1
        if y==0:
            cardinal.remove("N")
            edge=edge+1
        if x==4:
            cardinal.remove("E")
            edge=edge+1
        if y==4:
            cardinal.remove("S")
            edge=edge+1
        z=cardinal[randint(0,(3-edge))]
        if z=="N":
            y=y-1
        elif z=="S":
            y=y+1
        elif z=="E":
            x=x+1
        elif z=="O":
            x=x-1
#   Ici l'IA va determiner si le tir précédent etait bon, et tire ainsi sur un emplacement adjacent
    if playersea[y][x]==1:
        print "Vous avez été touché !"
        enemyshot=enemyshot+1
        playersea[y][x]="O"
    elif playersea[y][x]==0:
        print "L'ennemi vous a raté !"
        playersea[y][x]="+"
    

def print_maps():
# affiche les cartes apres chaque tour
    playersea_shown=deepcopy(playersea)
    for y in range(0,5):
        for x in range (0,5):
            if playersea[y][x]==1:
                playersea_shown[y][x]="#"
            elif playersea_shown[y][x]==0:
                playersea_shown[y][x]="~"
    enemysea_shown=deepcopy(enemysea)
    for y in range(0,5):
        for x in range (0,5):
            if enemysea_shown[y][x]==0 or enemysea_shown[y][x]==1:
                enemysea_shown[y][x]="~"
#   Ici on crée deux listes identiques à celles des grilles dans lequelles on va changer les int en str pour l'affichage
    print "Votre grille      Grille adverse"
    for i in range(0,5):
        print " ", " ".join(map(str, playersea_shown[i])), "        ", " ".join(map(str, enemysea_shown[i]))


#   Les lignes suivent executent le jeu de bataille navale
enemysea=[]
generate_enemy()
playersea=[]
generate_player()
print_maps()
playershot=0
enemyshot=0
while playershot<2 and enemyshot<2:
    player_turn()
    enemy_turn()
    print_maps()
if playershot==2:
    print "Gagné !"
else:
    print "Perdu !"
if anyone's got a python interpreter or anything
[Image: E3DU8rS.png]
Reference
♥ ♥ ♥ LOVE ♥ ♥ ♥
Omega ; Phant Mmkay ; Baegal ; Gorsal ; Drakocat ; Chaoxys ; TomGuyCott ; Chris2balls ; Mighty Jetters ; Blueblur97 ; NICKtendo DS ;
Kachua (Secret Santa) ; and some more that i need to locate, save and link onto here
Thanked by:
I wanna do a game jam...
Thanked by: Lexou Duck, Sengir
Took a break from my game for the past day or so and decided to follow a deferred lighting tutorial:

[Image: i41csx.jpg]
Animations - MFGG TKO (scrapped) - tFR
[Image: QUmE6.gif]
"It feels that time is better spent on original creations" - Konjak
Focus on the performance, the idea, not the technical bits or details - Milt Kahl
Thanked by: Kitsu, Sengir, Phaze, Mag
I think I'm getting to the point where I can start being productive proper, again.

Sorry to come to you lot so soon but it's not really asking for a solution, it's just asking for a name. In Mask, I've been thinking about how I have like 2-3 separate variables for specific numerical values so I was considering creating a Class similar in concept to a Fraction that would store the current value, the maximum value and perhaps the initial value when the object was constructed. I could also implement checks to prevent exceeding the max and all that jazz too from one implementation.

Thing is... I don't know what to call it. I would use "Fraction" but that doesn't feel correct, it implies a strictly mathematical context. I would use something like "Stat" or "Status" but I'm using the former as enums to refer to those specific stats (HP, FP, BP, POW, DEF, etc.) and the latter as an enum to refer to specific statuses like Dodgy or Hurt.
Thanked by:
(11-10-2013, 06:52 PM)Phaze Wrote: In Mask, I've been thinking about how I have like 2-3 separate variables for specific numerical values so I was considering creating a Class similar in concept to a Fraction that would store the current value, the maximum value and perhaps the initial value when the object was constructed.

Not really understanding this. What would the class look like, and what would it be used for?
You may have a fresh start any moment you choose, for this thing that we call "failure" is not the falling down, but the staying down. -Mary Pickford
Thanked by:
(11-10-2013, 08:24 PM)puggsoy Wrote: Not really understanding this. What would the class look like, and what would it be used for?

It'd have 3 values in it; baseValue, curValue and maxValue. It's used to consolidate data for stats like HP into single objects instead of 3 separate variables.

Like, say when creating it it's created with a value of 20 and it represents HP. I later increase the maximum by 5 and later still, the card of which this data object belongs to takes 10 damage.

baseValue is 20
curValue is 15
maxValue is 25

baseValue may be superfluous but I think knowing the base value might be useful.
Thanked by:


Forum Jump: