"fl0w in games" clone

Du hast eine Idee für ein Projekt?
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

ihr kennt sicher:
http://intihuatani.usc.edu/cloud/flowing/

wenn man keinen extrafetten rechner hat, lässt sich das nicht wirklich flüssig durchspielen.

ich denke es wäre gut machbar das mit pygame und evtl. pyode nachzubauen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dill hat geschrieben:wenn man keinen extrafetten rechner hat, lässt sich das nicht wirklich flüssig durchspielen.
Ist der Laptop der neben mir steht extrafett? Also auf dem lies es sich ganz angenehm spielen - und ich muss zugeben, ich konnte gar nicht mehr aufhören (hab die Schlange durchgespielt aber als Qualle ist der Endgegner wirklich hart).. Kenne es von der letzten c't, wo einige Spiele dabei waren.

Mit Pygame sowas zu machen stelle ich mir vergleichweise unbequem vor - Pygame (oder genauer SDL) hat einige Sachen die wirklich unangenehm sind, man muss also öfters um die Bugs herumarbeiten.
Zuletzt geändert von Leonidas am Montag 12. März 2007, 17:41, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Hmmm, irgendwie find ich keine Viecher mehr...
Und was ist mit "+ makes your current body segment evolve" gemeint, funktioniert bei mir irgendwie nicht?!
BlackJack

Also ich sitze hier an einem 1 Ghz Athlon, damit ist es unspielbar. Soviel zum Thema extrafetten Rechner. :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

apollo13 hat geschrieben:Hmmm, irgendwie find ich keine Viecher mehr...
Wenn du alle gegessen (in dem Kontext wäre das Wort assimilieren gut platziert) musst du auf diesen (ich glaube roten) Marker schwimmen, dann kommst du eine Ebene runter. Habe keine Anleitung gelesen, daher hat es erst etwas gedauert, bis ichs raus hatte.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

leonidas, du hast auf hoher qualität keine probleme wenn diese dicken viecher kommen?
ich hab hier massives ruckeln mit meinem athlon 3000+.
habe aber auch keine gescheite grafikkarte (radeon 9200), aber da es flash ist solte das doch eher unwichtig sein.
Mit Pygame sowas zu machen stelle ich mir vergleichweise unbequem vor - Pygame (oder genauer SDL) hat einige Sachen die wirklich unangenehm sind, man muss also öfters um die Bugs herumarbeiten.
was würdest du denn alternativ vorschlagen?
das spiel ist ja nicht sonderlich komplex, kann mir kaum vorstellen, dass SDL damit probleme hat. (was daran liegen könnte, dass ich es noch nie benutzt habe :roll: )


EDIT: komplette regeln gibts hier:
http://jenovachen.com/flowingames/forum ... c.php?t=74[/b]
BlackJack

SDL bietet keine Vektorgrafik und das Spiel scheint da Wert drauf zu legen. Tkinter-Canvas oder Cairo würden sich vielleicht anbieten. Falls die denn hübsch bzw. schnell genug sind.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

@Dill: Danke für die Regeln :)

Auf meinem Laptop läuft es flüssig:
Intel Core 2 Duo 2,0 Ghz 4mb Cache
Geforce Go 7700 512mb

Wundert mich allerdings nicht wirklich, sonst würde ich mir wirklich sorgen machen....
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Auf meinem Pentium M mit 1.50 GHz läuft das wunderbarst. Und ja, es ist cool 8)

Allerdings habe ich irgendwann mangels Futter und entsprechend Evolution abgebrochen; dass es einen Endgegner gibt, wusste ich nicht. Allerdings war da noch ein anderes Vieh so wie ich, mit dem ich mir immer gegenseitig dieses "Dinger" vom Leib gefressen habe.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dill hat geschrieben:leonidas, du hast auf hoher qualität keine probleme wenn diese dicken viecher kommen?
ich hab hier massives ruckeln mit meinem athlon 3000+.
habe aber auch keine gescheite grafikkarte (radeon 9200), aber da es flash ist solte das doch eher unwichtig sein.
Nein, da der Laptop recht ähnlich ausgestattet ist wie der von apollo13: Core 2 Duo T5500 (1,66 GHz), GeForce Go 7600 (nichts besonderes, mir war nur wichtig dass es eine nVidia ist, weil ich mir die ATI-Scherereien unter Linux sparen will) und 2 GB RAM.
Auf dem anderen Rechner ist ein Athlon 1700+, aber dort will ich mir Flash gar nicht erst antun.

Y0Gi: Die Aufgabe ist es ja, die anderen Dinger zu fressen - ganz ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Ist der Laptop der neben mir steht extrafett?
ja :)

> is there an extension for SDL available to handle some
> kind of vector graphics? For example for animated,
> colored fonts?

There's SDL_svg for SVG image rendering. It was dead for a while,
but then picked back up

http://lists.libsdl.org/pipermail/sdl-l ... 52386.html
das wäre doch die richtige antwort auf die flash-version :D


Im tutorial von cario wird nur geizeigt, wie man cairo-grafiken in dateien schreiben kann (pdf, svg), aber man kann es auch über SDL nutzen:
Drawing with cairo to an SDL Surface can be tricky.
Pygame (oder genauer SDL) hat einige Sachen die wirklich unangenehm sind, man muss also öfters um die Bugs herumarbeiten.
Könntest du etwas genauer sagen, was da problematisch ist, das projekt würde ja keine übermässigen anforderungen an SDL stellen.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

habe mal cairo + pygame getestet. irgendwie ist das zu lahm, oder ich mache was falsch.

Code: Alles auswählen

import cairo
import pygame
import array
import math

def draw(surface, dim):
    x, y, radius = dim
    ctx = cairo.Context(surface)
    ctx.set_line_width(15)
    ctx.arc(x, y, radius, 0, 2.0 * math.pi)
    ctx.set_source_rgb(0.8, 0.8, 0.8)
    ctx.fill_preserve()
    ctx.set_source_rgb(1, 1, 1)
    ctx.stroke()

def input(events): 
   for event in events: 
      if event.type == pygame.QUIT: 
         sys.exit(0) 
      else: 
         print event 

#Create Cairo Surface
Width, Height = 512, 512
data = array.array('c', chr(0) * Width * Height * 4)
stride = Width * 4


#init PyGame
pygame.init()
window = pygame.display.set_mode( (Width,Height) ) 
screen = pygame.display.get_surface()#Draw with Cairo

y = 0
x = 0

while True: 
    input(pygame.event.get())
    surface = cairo.ImageSurface.create_for_data (data, cairo.FORMAT_ARGB32,Width, Height, stride)
    x = x + 5
    y = y + 5
    draw(surface, [x,y,200])
    
    #Create PyGame surface from Cairo Surface
    image = pygame.image.frombuffer(data.tostring(),(Width,Height),"ARGB",)
    
    #Tranfer to Screen
    screen.blit(image, (0,0)) 
    pygame.display.flip() 
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dill hat geschrieben:
Pygame (oder genauer SDL) hat einige Sachen die wirklich unangenehm sind, man muss also öfters um die Bugs herumarbeiten.
Könntest du etwas genauer sagen, was da problematisch ist, das projekt würde ja keine übermässigen anforderungen an SDL stellen.
Also den Rotationssupport kannst du zum Beispiel vergessen, denn wie ich festgestellt habe kann SDL nicht gut rotieren - man sollte ein Surface nie mehr als zwei mal rotieren, weil die Qualität darunter stark leidet (habe mal ein Sechseck rotiert, nach einigen Rotationen sah es so aus. Ich habe das letztendlich in den Griff bekommen, aber als Python-Programmierer ist man nicht gewöhnt unelegante Lösungen zu implementieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Das war jetzt aber kein Beispiel für Deine doch recht harte Aussage. Das die Rotation nix taugt steht AFAIK sogar in der Doku. Damit wäre es dokumentiertes Verhalten und kein Bug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ok, die Aussage ist vielleicht zu hart geraten, mag sein. Ich habe etwas mit Pygame gespielt, so als Einstieg und auch etwas zum ausspannen. Es gibt aber einige Pygame-Spiele die sogar ziemlich süchtig machen. Ansonsten finde ich aber Pygame ein wenig eingeschlafen, wie SDL eigentlich auch. Man kann da doch einige kleine Details nachbessern, die es angenehmer zu nutzen machen würden.
BlackJack hat geschrieben:Damit wäre es dokumentiertes Verhalten und kein Bug.
Ich habe mal in die Dokumentation zu Pygame geschaut und konnte dazu nichts finden. Das man einen Fehler dokumentiert macht es auch nicht sonderlich besser. Ist jetzt meine Meinung als Pygame-Anwender. Würde mich mehr darüber freuen wenn es gescheit funktionieren würde, als über einen zusätzlichen Satz in der Dokumentation. Aber das ist eher eine Sache der SDL.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Also ich meinte, dass die Qualität eines rotierten Bildes nicht besonders ist, das würde ich nicht als Bug bezeichnet. Ist halt einfach nur ein einfacher Algorithmus.

Dein Bild sieht so aus, als wenn nicht beachtet wurde, dass die rotierten Bilder grösser sind als das Ausgangsbild.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Dein Bild sieht so aus, als wenn nicht beachtet wurde, dass die rotierten Bilder grösser sind als das Ausgangsbild.
Du hast recht - in der Anfangsphase habe ich das wirklich nicht beachtet. Später aber schon, nur davon habe ich dann keine Bilder mehr. Inzwischen funktioniert das ja auch passabel, nachdem ich eine Kopie des ungedrehten Bildes immer gespeichert habe und für jede Rotation das Ursprungsbild rotiere.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Das hätte man aber auch bei einem besseren Algorithmus so gemacht. Jede Rotation ist verlustbehaftet.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Das hätte man aber auch bei einem besseren Algorithmus so gemacht. Jede Rotation ist verlustbehaftet.
Ok, hast Recht.

Was mir aber jetzt so einfällt: an dieser Stelle hätte man auch Pygame intelligenter machen können, so dass es das speichern und rotieren im Hintergrund selbst macht. Ich sehe darin eigentlich keine größeren Nachteile. Die Rotationsfunktion würde dadurch hochwertiger scheinen als sie ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Mach doch! ;)
Antworten