Seite 3 von 4

Verfasst: 17.02.2008 02:03
von Franky
meine kleine Spielerei, ich nenn es mal 70er Jahre Hippie-Tapete

Code: Alles auswählen


;/ Folker Linstedt
;/ 2008-02-16
;/ PureBaic Textur-Contest

EnableExplicit


#TextureWidth=128 ; Möglich 32, 64, 128, 256, 512


CreateImage(0,#TextureWidth,#TextureWidth) 
CreateImage(1,1024,1024) 

Structure pos 
    addx.l
    addy.l
EndStructure

Procedure ZeichneTextur(u)
Protected NewList Punkte.pos()
;/ Optional
Protected index.l
Protected i, i2, ix,k,f, R, G, B, x.f, y.f, RichtungX.f=1.2, RichtungY.f=0.7 
Protected farbe.l,rot.l,gruen.l,blau.l
Protected mompunktx,mompunkty
Protected a.l
ix=ImageWidth(0)


  StartDrawing(ImageOutput(0))
               For a=0 To ImageWidth(0)/2
                   For b=0 To ImageHeight(0)/2
                       rot=(a+30)%(b+1)%255*3
                       gruen=(b+30)%(a+1)%255*3
                       blau=(rot%(gruen+1)+gruen%(rot+1))%255*3
                       Plot(a,b,RGB(rot,gruen,blau))
                       Plot(ImageWidth(0)-a+1,b,RGB(rot,gruen,blau))
                       Plot(ImageWidth(0)-a+1,ImageHeight(0)-b+1,RGB(rot,gruen,blau))
                       Plot(a,ImageHeight(0)-b+1,RGB(rot,gruen,blau))

                   Next
               Next 
  StopDrawing()
EndProcedure



Procedure ZeichneTexturen()
Protected i, i2, u=1
    For i2=0 To ImageHeight(1)/ImageHeight(0)-1
      For i=0 To ImageWidth(1)/ImageWidth(0)-1
         ZeichneTextur(u)
         StartDrawing(ImageOutput(1))
           DrawImage(ImageID(0),ImageWidth(0)*i,ImageHeight(0)*i2)
         StopDrawing()
         u+1
      Next
    Next 
EndProcedure


Procedure createGadgets()
  ImageGadget(0,5,5,ImageWidth(0),ImageHeight(0),ImageID(0),#PB_Image_Border)
  ScrollAreaGadget(1,GadgetX(0)+GadgetWidth(0)+5,5,WindowWidth(0)-GadgetWidth(0)-15,650,1124,1124,10)
    ImageGadget(2,5,5,ImageWidth(1),ImageHeight(1),ImageID(1),#PB_Image_Border)
 
  CloseGadgetList()
EndProcedure


If OpenWindow(0,0,0,1000,700,"FL Bild",#PB_Window_ScreenCentered | #PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
 
  createGadgets()
  ZeichneTextur(1)
  ZeichneTexturen()
 
  SetGadgetState(0,ImageID(0))
  SetGadgetState(2,ImageID(1))
 
 
  Define Event.l, Quit, GadgetNr
 
 
  Repeat
   
    Event=WaitWindowEvent()
   
    If Event=16
      Quit=1
     
    ElseIf Event=#PB_Event_Gadget
      GadgetNr=EventGadget()   
     
     
    EndIf   
   
   
  Until Quit 
 
 
EndIf 

Verfasst: 17.02.2008 02:33
von Franky
eine kleine Ablage für Papiere ^^

Code: Alles auswählen


Procedure ZeichneTextur(u)
Protected a,c,b,farbe.l
    StartDrawing(ImageOutput(0))
         Box(0,0,ImageWidth(0),ImageHeight(0),RGB(154, 81, 10))
         Box(10,10,ImageWidth(0)-25,ImageHeight(0)-20,RGB(77,40,5))
             For c=0 To 9
                 For b=1 To ImageWidth(0)-20 Step 10
                    For a=1 To ImageHeight(0)-20 Step 10
                         farbe=RGB(155+c*10,155+c*10,155+c*10)
                         Line(10+b+c,10+a+c,10,0,farbe)
                    Next
                 Next 
             Next 
    StopDrawing()

EndProcedure

Leicht modifiziert ergibt es eine häuserfront

Code: Alles auswählen

Procedure ZeichneTextur(u)
Protected a,c,b,farbe.l
    StartDrawing(ImageOutput(0))
         ;Box(0,0,ImageWidth(0),ImageHeight(0),RGB(154, 81, 10))
         Box(10,10,ImageWidth(0)-25,ImageHeight(0)-20,RGB(38,68,255));RGB(77,40,5))
             For c=0 To 9
                 For b=1 To ImageWidth(0)-30 Step 10
                    For a=1 To ImageHeight(0)-20 Step 10
                         farbe=RGB(155+c*10,155+c*10,155+c*10)
                         Line(10+b+c,10+a+c,10,0,farbe)
                    Next
                 Next 
             Next 
    StopDrawing()

EndProcedure

HOLZ

Verfasst: 17.02.2008 04:08
von Xaby
Wer braucht HOLZ :mrgreen:

Code: Alles auswählen


;/ Folker Linstedt: HOLZ
;/ 2008-02-16
;/ PureBaic Textur-Contest

EnableExplicit


#TextureWidth=128 ; Möglich 32, 64, 128, 256, 512


CreateImage(0,#TextureWidth,#TextureWidth)
CreateImage(1,1024,1024)

Structure pos
    addx.l
    addy.l
EndStructure



Procedure ZeichneTextur(u)
Protected a,c,b,d,e,x,y,w,h,i

   h=ImageHeight(0)
   w=ImageHeight(0)


    StartDrawing(ImageOutput(0))
         ;Box(0,0,ImageWidth(0),ImageHeight(0),RGB(154, 81, 10))
        
        
      RandomSeed(50) 
      
      For i=0 To 8
      b=0
      Box(16*i,0,15,h,RGB(150,80,10))
      
      While b<14  
       ;/ c = ... die HOLZ-KANTE, Abschluss ist zu regelmäßig
       While a<h
         
        ;/ PLUS a in der FARBE macht das ganze schick bunt 
       ;  Box(16*i+b,a,1,c,RGB((a+c+12)*4.8,(c+15)*2.3,20+c/2))
       
       ;/ PLUS i in der FARBE legt einen Farbübergang über alle Bretter
       ;  Box(16*i+b,a,1,c,RGB((c+12)*4.8,(c+15)*2.3,20+c/2))
         
                  
         Box(16*i+b,a,1,c,RGB((b/2+c+12)*4.8,(c+15)*2.3,20+c/2))
       
         ;/ HIER WIRD DIE MASERUNG BESTIMMT
         c=(Random(6)+1)*1.2+4 ;4+6 ;/ ES IST WICHTIG, ob vor oder nach BOX            
         
                  
         ; DIESE ZEILE MACHT GLATTERES HOLZ
                    
         If u%2
           
           Box(16*i+b,a,1,c,RGB((c+12)*4.8,(c+15)*2.3,20+c/2))
         EndIf
         
         a+c 
       Wend 
       a=-5              
               
       b+1
       
      Wend 
      
      Next
        
        
    StopDrawing()

EndProcedure 



Procedure ZeichneTexturen()
Protected i, i2, u=1
ZeichneTextur(GetGadgetState(10))
StartDrawing(ImageOutput(1))
    For i2=0 To ImageHeight(1)/ImageHeight(0)-1
      For i=0 To ImageWidth(1)/ImageWidth(0)-1         
           DrawImage(ImageID(0),ImageWidth(0)*i,ImageHeight(0)*i2)         
         u+1
      Next
    Next
StopDrawing() 

SetGadgetState(0,ImageID(0))
SetGadgetState(2,ImageID(1))   
EndProcedure


Procedure createGadgets()
  ImageGadget(0,5,5,ImageWidth(0),ImageHeight(0),ImageID(0),#PB_Image_Border)
  ScrollAreaGadget(1,GadgetX(0)+GadgetWidth(0)+5,5,WindowWidth(0)-GadgetWidth(0)-15,650,1124,1124,10)
    ImageGadget(2,5,5,ImageWidth(1),ImageHeight(1),ImageID(1),#PB_Image_Border)
 
  CloseGadgetList()
  
  ButtonGadget(10,5,WindowHeight(0)-150,60,50,"HOLZ",#PB_Button_Toggle)
  
EndProcedure


If OpenWindow(0,0,0,1000,700,"FL Bild",#PB_Window_ScreenCentered | #PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
 
  createGadgets()
  ZeichneTextur(1)
  ZeichneTexturen()
 
  
 
 
  Define Event.l, Quit, GadgetNr
 
 
  Repeat
   
    Event=WaitWindowEvent()
   
    If Event=16
      Quit=1
     
    ElseIf Event=#PB_Event_Gadget
      GadgetNr=EventGadget()   
     
       If GadgetNr=10
         ZeichneTexturen()
       EndIf     
     
    EndIf      
   
  Until Quit 
 
EndIf 
Schaut mal hier
http://www.astralgfx.de/texturen.html

Bekommen wir nicht so etwas hin, das wäre doch gelacht, wenn das nicht möglich wäre :lol:

BildBild

Und später dann:
Bild

Verfasst: 17.02.2008 15:48
von Deeem2031
Das fällt zwar bestimmt nicht mehr unter die Kategorie schnell und klein, aber ich poste es trotzdem mal ;)

Code: Alles auswählen

;/ Folker Linstedt: HOLZ 
;/ 2008-02-16 
;/ PureBaic Textur-Contest 

EnableExplicit 


#TextureWidth=256 ; Möglich 32, 64, 128, 256, 512 


CreateImage(0,#TextureWidth,#TextureWidth) 
CreateImage(1,1024,1024) 

Structure pos 
    addx.l 
    addy.l 
EndStructure 



;Global rs

Procedure ZeichneTextur() 
  Protected x,y,w,h,i,dx,dy,maxhmp.f,mx, ovlx, ovly
  #s = 1
  #v = 50
  #dx = 4
  #dy = 6

  h=ImageHeight(0)
  w=ImageHeight(0)
  
  ;Debug rs
  RandomSeed(2)
  ;rs + 1
  
  Protected Dim hmp.f(w+#dx,h+#dy)
  For x = 0 To w-1+#dx
    For y = 0 To h-1+#dy
      If y > 0
        mx = Random(2)-(1)
        If x+mx < 0 Or x+mx > h-1
          mx = 0
        EndIf
        hmp(x,y) = hmp(x+mx,y-1) + Random(#v) - (#v/2)
      Else
        If x > 0
          hmp(x,y) = hmp(x-1,h-1) + Random(#v) - (#v/2)
        Else
          hmp(x,y) = #v+Random(#v) - (#v/2)
        EndIf
      EndIf
      For i = 1 To #s
        For dy = 1 To #dy
          If dy > y
            ovly = h-1
          Else
            ovly = 0
          EndIf
          For dx = 1 To #dx
            If dx > x
              ovlx = w-1
            Else
              ovlx = 0
            EndIf
            hmp(x-dx+ovlx,y-dy+ovly) = (hmp(x-dx+ovlx,y-dy+ovly)*(dy+dx) + hmp(x,y)) / (dy+dx+1)
          Next
        Next
      Next
      If hmp(x,y) > maxhmp
        maxhmp = hmp(x,y)
      EndIf
    Next
  Next
   
  Structure CL_Struc
    x.l
    y.l
    s.l
  EndStructure
  
  Protected NewList CL.CL_Struc()
  
  #acl = 25
  #cl_maxs = 5
  #cl_mins = 2
  #maserung_dx = 30
  
  For x = 0 To w-1
    For y = 0 To h-1
      If Random(#acl*(x%#maserung_dx+1)) = 0
        AddElement(CL())
        CL()\x = x
        CL()\y = y
        CL()\s = Random(#cl_maxs-#cl_mins)+#cl_mins
      EndIf
    Next
  Next
  
  Protected v.f, c
  StartDrawing(ImageOutput(0))
    For x = 0 To w-1
      For y = 0 To h-1
        v = 0
        ForEach CL()
          If (CL()\x - x)*(CL()\x - x) + (CL()\y - y)*(CL()\y - y)
            v + 1/((CL()\x - x)*(CL()\x - x) + (CL()\y - y)*(CL()\y - y))
          Else
            v + 1
          EndIf
        Next
        ForEach CL()
          v + 1/((CL()\x+w - x)*(CL()\x+w - x) + (CL()\y - y)*(CL()\y - y))
        Next
        ForEach CL()
          v + 1/((CL()\x+w - x)*(CL()\x+w - x) + (CL()\y+h - y)*(CL()\y+h - y))
        Next
        ForEach CL()
          v + 1/((CL()\x - x)*(CL()\x - x) + (CL()\y+h - y)*(CL()\y+h - y))
        Next
        Select Int(Abs(hmp(x,y))/7) % 5
          Case 0
            c = $015092
          Case 1
            c = $014177
          Case 2
            c = $0A4B86
          Case 3
            c = $083B69
          Case 4
            c = $0A447B
        EndSelect
        Select Int(v*30) % 5
          Case 0
            c | $031220
          Case 1
            c | Random($1F) | Random($1F) <<8 | Random($1F) << 16$
          Case 2
            c & $FFFFD4
          Case 3
            c & $FFFFF4
          Case 4
            c & $FFFFED
        EndSelect
        Plot(x,y,c)
      Next
    Next
    ForEach CL()
      ;Circle(CL()\x,CL()\y,CL()\s,$FF)
    Next
  StopDrawing()
  
EndProcedure 



Procedure ZeichneTexturen() 
Protected i, i2, u=1 
StartDrawing(ImageOutput(1)) 
    For i2=0 To ImageHeight(1)/ImageHeight(0)-1 
      For i=0 To ImageWidth(1)/ImageWidth(0)-1          
           DrawImage(ImageID(0),ImageWidth(0)*i,ImageHeight(0)*i2)          
         u+1 
      Next 
    Next 
StopDrawing() 

SetGadgetState(0,ImageID(0)) 
SetGadgetState(2,ImageID(1))    
EndProcedure 


Procedure createGadgets() 
  ImageGadget(0,5,5,ImageWidth(0),ImageHeight(0),ImageID(0),#PB_Image_Border) 
  ScrollAreaGadget(1,GadgetX(0)+GadgetWidth(0)+5,5,WindowWidth(0)-GadgetWidth(0)-15,650,1124,1124,10) 
    ImageGadget(2,5,5,ImageWidth(1),ImageHeight(1),ImageID(1),#PB_Image_Border) 
  CloseGadgetList()   
  
  ButtonGadget(3,5,500,20,20,"!")
EndProcedure 


If OpenWindow(0,0,0,1000,700,"FL Bild",#PB_Window_ScreenCentered | #PB_Window_SystemMenu) And CreateGadgetList(WindowID(0)) 
  
  createGadgets() 
  ZeichneTextur() 
  ZeichneTexturen() 
  
  
  
  
  Define Event.l, Quit, GadgetNr 
  
  
  Repeat 
    
    Event=WaitWindowEvent() 
    
    If Event=16 
      Quit=1 
      
    ElseIf Event=#PB_Event_Gadget 
      GadgetNr=EventGadget()    
      
      If GadgetNr=3
        ZeichneTextur()
        ZeichneTexturen()
      ElseIf GadgetNr=10 
        ZeichneTexturen() 
      EndIf      
      
    EndIf      
    
  Until Quit 
  
EndIf
Leicht verändert (Kontrast,Sättigung,Helligkeit):

Bild

Verfasst: 17.02.2008 15:56
von Kaeru Gaman
@Deeem
echt schönes exemplar :allright:


@Xaby
für einfache, flache textures wird das schon irgendwie gehen, wie du ja selber gezeigt hast.
sieht ganz nett aus, dein holz.
wenn du mit schrägen parallelen arbeitest, und weniger farbkontrast nimmst,
wirds vielleicht noch besser.


für textures für 3D-Körper ist das schon was anderes.

eine Kiste oder Hütte mag man ja noch mit einer Latten-Texture zunageln können,
aber für ne Kugel und morphe Körper ist das völlig unzureichend,
dazu braucht man dann eine echte 3D-Texture.

eine prozedurale 3D-Texture ist eine Funktion, die den Raum mit werten von 0 bis 1 füllt,
gemäß eines Grund-Patterns, beeinflußt mit ein paar modifikatoren,
wie z.b. Turbulenz, häufigkeit der wiederholungen, etcpp..
aufgrund dieser funktion wird dann jedem punkt im Raum ein farbwert aus einem Spektrum zugeordnet.

bei Holz ist das Pattern eine sammlung konzentrischer zylinder entlang der x-achse.
in jedem dieser "jahresringe" steigt der wert stetig von 0 bis 1.
als Spektrum bzw. color-map benutzt man für Holz normalerweise
einen mehr oder weniger weichen übergang von 2-3 brauntönen.
wenn man das jetzt mit ein wenig turbulenz versieht und die texture leicht im raum dreht,
damit man ringe und streifen auf den schnittflächen sieht, dann bekommt man nen Holzkörper.

Verfasst: 17.02.2008 16:56
von Xaby
Würdest du einen kleinen Code dazu posten? :)

Bei Poser hat man auch so einen Material-Editor.

Da kann man Rauschenhinzufügen, Nebel drüber legen, Störungen, etc.
Wer den Material-Editor von Poser mal ausprobieren möchte, hier gibt's ne Demo: http://www.software3d.de/trials.html

So eine Ding wäre natürlich was.
Muss vielleicht nicht ganz so kemplex sein.
Aber wenn man mit 10 Variablen und 4 Kombinationen ein bisschen spielen kann, wäre echt ne schicke Sache. Vielleicht könnte mann dann eine Textur in 300 Byte Speichern oder so. Da bekommt man locker 16 Texturen in 5kByte unter gebracht. Da hat man selbst mit PNG schon zu kämpfen. Vor allem benötigt man keinen PNG-Dekoder.

Die Frage ist natürlich wie aufwändig so ein Material-Kombinations-Dingli ist.

:?

Bild

Eine andere Möglichkeit für Texturen oder viel mehr gezeichnete Sprites wäre eine Art Vektor-Programm ... bzw. eine Skriptsprache, die Linien zeichnen, Kreise machen kann etc.

:roll:

Verfasst: 17.02.2008 17:03
von Kaeru Gaman
> Würdest du einen kleinen Code dazu posten?

yo kla...

Code: Alles auswählen

#declare DMFWood1 = 
pigment {
    wood
    turbulence 0.04
    octaves 3
    scale <0.05, .05, 1>
    color_map {
        [0.1 rgb <0.60, 0.30, 0.18>]
        [0.9 rgb <0.30, 0.15, 0.09>]
    }
}

...merke:
einen Raytracer bedienen zu können und zu wissen, wie er funktioniert,
bedeutet noch nicht, selber einen schreiben zu können.
;)

Verfasst: 17.02.2008 18:21
von Xaby
http://de.wikibooks.org/wiki/Blender_Do ... e_Texturen

Bild

Wer auch immer dieser Musgrave ist, aber so jemanden möchte ich auch kennen, damit er mir Texturen zaubern kann. Musgarave ist ein Musthave :mrgreen:

Also für Texturen, die Material beschreiben, bzw. darstellen, bräuchte man so ein Teil auf jeden Fall. Dann kann man damit aber auch ne ganze Menge machen. (komisch, dass da alle Spiele heute immer gigaBytes groß werden, wenn Blender selbst nur ein paar MB groß ist)

Stell dir mal vor, wenn Grafikkarten wie die Nvidea Quadro FX solche Texturen onTheFly berechnen kann.

Und stell dir mal vor, wenn Handys das dann können :?

Was würde man aber für 2D Jump'n'Runs benötigen? Wie werden Tile erzeugt? Ich nehme an mit einem Bildbearbeitungsprogramm, wo die Bilder gezeichnet werden.

Da fällt mir Pixtix ein
http://freenet-homepage.de/pixtix/

Ist PureBasic :allright:

Und Pure GraphicShop, im ShowCase leider ohne ScreenShots zu finden.
-Scriptsprache zum Programmieren von Bildern.
-Editor mit Syntaxhighlighting
-Verbindung von Scriptsprache, Zeichnen und Effekten
Wenn man so eine Sprache nutzt, bzw. aus PinselStrichen und Formen ein Code ertzeugt wird, kann man den entweder in Bytes oder Text ablegen.
Eine Art gespeichertes Makro. Und statt einer 15 kByte großen Bilddatei, oder einer weit größeren BMP-Datei, hat man dann nur ein paar Byte, wenn man die Befehle nicht als reinen Text, sondern vielleicht als Werte Speichert.

Meine Ansatzüberlegungen dazu waren:

Code: Alles auswählen

;/ Parser für Zeichenfunktionen
;/ W=ImageWidth, H=ImageHeight, O=Circle, B=Box, R=Rectangle (Box DrawingMode=4), 
;/ . _ L = Point/LineXY, F = For 
;/ S = Sinus, K = Cosinus, ² = Quadrat, ³ = Qubik, ^ = Pow, # = Sqrt,  Q, = ZufallsZahl
;/ ! = Null/Not

;  N = neues #Image, neues Brush, alle Zeichenoperationen 
;  U = UseBrush, D = DrawImage, ] = Ende des Brushes, @ = Zeichenoperationen erfolgen auf Brush, schließen wieder mit ]


; /\<> ()={}[]|?$§&:; Komma und Space werden für menschliche Eingabe verwendet

;/ FVa entspricht For V=0 to 10
;/ ein For endet mit ]


; FV3
;
;
;


;/ E = Ellipse

;/ G = GetPixelColor(X,Y)

;/ V+1 = V>


;/ A = Arc, Winkelfunktionen
;/ V = Variable
;/ I = If Bedingung

;/ IV%4 entspricht If V%4=0 ... If endet mit ]


;/ 

;/ M = Mitte, X=X aus Schleife, Y=Y aus Schleife,


;/ P SetColor from Palette  = FrontColor, C = RGB FrontColor

;/ ^*+/-% bleiben erhalten

                    ;"01234567890123456789012345678901
;/ Zahlen: Debug Len("0123456789abcdefghijklmnopqrstuv")

;/ Zwei Stellen Beispiel: am = 10 * 32 + 22 = 342

;/ Farben als Platte mit P 0..1024 (32^2 oder 36^3 = 46656) oder als RGB mit rot = Cf00 oder mit RGB Cff00a3

;/ 

;/ Beispiel für rote Linie: s="PLM
Das Programm zum Erstellen könnte entweder ein GUI-Editor sein, mit Zeichenwerkzeugen oder man schreibt einfach einen String.

wenn der Interpreter nicht zu Komplex ist, spart das Speicher.
Wenn man als Nutzer die Bilder gut mit einander kombiniert, benötigt man auch weniger Bilder und weniger Befehle.

Viele Sprites aus alten Spielen bestehen aus immer wiederkehrenden Figuren, Formen, Stückchen.

Vielleicht kennt das Spiel einer:
http://www.b3dgs.com/en_lionheart_down.php

Da ist auch ein Editor bei, um die Sprites zu setzen, aus denen eine Welt bestehen kann. Und selbst diese Sprites bestehen aus gleichen Stückchen.

Sicherlich gibt es aufwändige Bilder, wo eine JPEG-Datei oder eine PNG-Datei sinnvoller ist als eine ZeichnenSkripsprache.

Restricted Area ist so ein Beispiel. Wenn man die Sprites vorher mit einem 3D-Renderer erstellt, und sowieso noch andere Daten wie Sound etc. hat, die man nicht kleiner bekommt und der Aufwand der Kompression stärker ist als den Platz zu nutzen, den man auf einer CD zur Verfügung hat ...

/:->

Mein Ansatz sollte auch darauf hinaus laufen, dass man nicht noch:
- Bildbearbeitungsprogramm
- + 3D-Editor
- + externenen Renderer
- + Bildoptimierer

... und das ganze noch mal für Sounds.
- Snythesizer
- Effekt-Generator
- Audio-Editor
- Musik-arangierer
- Musik-Filter + Renderer
- MP3-Kompressor
Sondern eher in Richtung:

>>>

Code: Alles auswählen

SpieleMusikImHintergrund("fghjklzeduhjksehdkuehdk!")
ErstelleBilder("tghbnefkwlejflfkj")
ErstelleAusBildernWelt("wehukenrwknrkjw")

CreateMenuQuatsch()

Repeat
  SpielSteurung()
Until EndeBanane
Naja, nicht ganz so. Etwas komplexer noch.
Aber am Ende bestehen ja alle 3D-Spiele und alle 2D-Spiele aus den gleichen Komponenten.

Vordefinierte Tasten sind meist: WASD-Kreuz + Maus

Und die Geschichte ist flach, die Spiele unterscheiden sich also fast nur von der Grafikpracht. Wieso entwickelt man nicht einfach eine Engine, die alles bereit stellt wie zum Beispiel
http://www.purebasic.fr/german/viewtopi ... ump+engine

Erweitert sie etwas. Und der Nutzer kann Musik und Bilder direkt im Code eingeben.

Wäre für erste Erfolge auf jeden Fall schick.
Und wenn er hübschere Bilder und cooleren Sound haben möchte, darf der ode halt nicht einmal über die Tastatur gestrichen sein, sondern sollte durchdacht und ästhetisch generiert worden sein :mrgreen: [/quote]

Verfasst: 18.02.2008 05:32
von Kaeru Gaman
procedurale textures on-the-fly berechnen ist ne happige angelegenheit,
vielleicht wird sich in den nächsten jahren mit openRT was tun.
zur zeit läuft das noch alles über die CPU.

das beispielbild ist nur ne kugel, der farbverlauf im hintergrund halbwegs simpel.
die textur ist schon etwas komplexer, aber ich schätz mal,
dass das bild mit POV zum rendern nur 40-80sec benötigen würde...

bei komplexeren objekten wird das dann schon länger.
für meine kleinposter-ausgabe (1600x1200) von "Twelwe" hat er über fünf stunden gerechnet...
hier is ne kleinere version:
http://purebasic-lounge.com/album_showp ... ?pic_id=24

Verfasst: 18.02.2008 07:00
von Xaby
Tja, ist die Frage, willst du die 5 Stunden dem Entwickler zumuten oder dem User :D

Dann dauert halt die erste Installation von einem Spiel mehrere Tage, dafür ist es nur ein paar hundert kByte groß :mrgreen:

Ich weiß schon, was du meinst. So ein Gebilde würde man wahrscheinlich als PNG oder JPEG speichern und dann in das Spiel als Hintergund einbauen.

Mir schwebte halt nur etwas vor, was dem Entwickler die Arbeit erleichtert.

Damit meine ich, dass der Programmierer es schafft, Komponist, Musiker, Sound-Effekt-Designer, Level-Designer, Charakter-Designer, Story-Board-Schreiber etc. zu sein ... und sein Spiel für die Erstellung keine zehn Jahre dauert.

Wenn ich ein paar Intro Sequenzen mir anschaue und dann in einem Making off sehe, dass die an den 30 Sekunden mehrere Monate gesessen habe, frage ich mich auch, ob es sich lohnt.

Klar braucht Qualität seine Zeit. Ich denke aber, um erste Resultate begutachten zu können, wären eine Sammlung von Tools, die gute Ergebnisse liefern ne feine Sache.

Wenn ich jedes Mal dran denken müsste, dass wenn ich mit der Programmierung eines Spiels anfange ... für meine Highresulution-Models mit Haaren, Sachen und Falten im Gesicht, fertig texturiert ....
Für die Erstellung schon gut 20 Stunden benötige und das Rendern für jeden Bewegungsablauf sicherlich auch noch mal so lange ...
na dann bin ich ja für ein simples Jump'n'Run schon 3 Monate nur für den Charakter zuständig und habe noch nicht eine Zeile programmiert.

Da kann einem doch schon die Lust vergehen /:->

Wie gesagt, ich denke eine kleine Sammlung von Bildern oder der Möglichkeit, schnell Bilder zu erstellen, wäre eine gute Sache.

Wieso ich auch diese Textur/Bilderstellsache als Contest angedacht habe, war der Grund, dass immer wieder User Code posten, der bestimmte Bilder benötigen, die aber vergessen werden oder halt nicht mitgeschickt werden.

Der Code wird gepostet, aber wie das Bild aussieht, weiß keiner.

Wenn man also mit ein oder zwei Zeilen Code das gesamte Bild erstellen könnte, könnte man die Bilder in den Codes ablegen.

(klar geht das auch im Include Binary, oder DataSection, aber das ist doch recht kompliziert und ist auch zu viel Code)

So wie der Befehl Play("") für Musik, so könnte es doch auch einen Befehl für die Erstellung von Bildern geben ...

http://www.purebasic.fr/german/viewtopi ... r&start=20

Weil wird ja oft verlangt:
http://www.purebasic.fr/german/viewtopi ... light=play

Wieso sollten PureBasic-Programme nicht komplett mit PureBasic Programmen erstellt werden?

Würde auch das ShowCase bereichern.

Und wenn man bei YouTube dann im Video angeben kann:

- Sounds wurden erstellt mit SFX-Maker, programmiert in PureBasic

Und bei den Bildern und Texturen genauso.

Und richtig extrem wird es, wenn die Aufzeichnungssoftware für Maus und ScreenShots, sowie das Videoschnitt-Programm ebenfalls mit PureBasic geschrieben worden sind. :roll:

Icons und Sound:
http://de.youtube.com/watch?v=IS-NYK-8KL0


Erinnert an die AMIGA-Werbung:
http://de.youtube.com/watch?v=EY27PC9FWT0
Ohne Comodore AMIGA wäre dieser Spot nicht möglich gewesen.


Erinnert mich an die MacBook Air Werbung
http://de.youtube.com/watch?v=3OZg3ljsb ... re=related
Haben die sich ja nix neues einfallen lassen.

Spiele bestehen aus Grafik und Sound.
Und alle neuen Computersysteme wie AMIGA oder MACINTOSH haben mit Multimedia geworben. Das sollte man also auch mit PureBasic bieten.

"My mouse is your paintbrush" (aus AMIGA Commercial)
:allright: