Ich dachte, das wäre in HTML5 klar definiert? Naja, OGG sollte in jedem Falle dabei sein und würde mir reichenKevin hat geschrieben:Sound kommt mit dem nächsten Release!
das Problem ist nur das jeder Browser andere Formate unterstützt...
PBtoHTML5 Compiler [pre-alpha]
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: PBtoHTML5 Compiler
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: PBtoHTML5 Compiler
Sprechen wir von HTML5?
Der Trick hierbei ist, mehrere Formate anzubieten, sodass jeder Browser bekommt, was er benötigt:
Längerfristig wird sich aber wohl (hoffentlich) das OGG-Format durchsetzen.
Der Trick hierbei ist, mehrere Formate anzubieten, sodass jeder Browser bekommt, was er benötigt:
Code: Alles auswählen
<audio>
<source src="music.mp3" type="audio/mpeg" />
<source src="music.ogg" type="audio/ogg" />
</audio>"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: PBtoHTML5 Compiler
ts-soft hat geschrieben:Ich dachte, das wäre in HTML5 klar definiert? Naja, OGG sollte in jedem Falle dabei sein und würde mir reichenKevin hat geschrieben:Sound kommt mit dem nächsten Release!
das Problem ist nur das jeder Browser andere Formate unterstützt...
hab mich belesen und um PB kompatibel zu bleiben werde ich es dem Programmiere überlasen zu überprüfen welches Format funktioniert und welches nichtc4s hat geschrieben:Sprechen wir von HTML5?
Der Trick hierbei ist, mehrere Formate anzubieten, sodass jeder Browser bekommt, was er benötigt:Längerfristig wird sich aber wohl (hoffentlich) das OGG-Format durchsetzen.Code: Alles auswählen
<audio> <source src="music.mp3" type="audio/mpeg" /> <source src="music.ogg" type="audio/ogg" /> </audio>
also zb so:
Code: Alles auswählen
if LoadSound(#sound,"X.ogg")=#false
if LoadSound(#sound,"X.mp3")=#false
...
endif
endifmfg kevin
Re: PBtoHTML5 Compiler
Hi,
Hat etwas länger gedauert aber jetzt gibt's die neue Version
Download (118 KB)
Hat etwas länger gedauert aber jetzt gibt's die neue Version
Download (118 KB)
mfg Kevinchangelog hat geschrieben:[r53] 19:12 18.09.2012
R viele bugs
+ output ist jetzt kleiner
[r52] 16:23 15.09.2012
+ Binär-Zahlen z.B. %111110100
+ MouseWheel()
+ LoadFont() nur normal,Bold&Italic
+ DrawingFont()
+ FreeFont()
+ IsFont()
[r51] 23:44 14.09.2012
R \r \R repariert
+ SoundLib ohne channel unterstützung!
+ InitSound()/UseFLACSoundDecoder()/UseOGGSoundDecoder()
+ FreeSound(ID)
+ IsSound(ID)
+ LoadSound(ID,path$ [,flag])
+ PlaySound(ID,[Flag]) gibt immer 'true' zurück
+ SoundPan(ID,Pan)
+ SoundVolume(ID,Volume)
+ StopSound(ID)
Re: PBtoHTML5 Compiler
ich muss nochmals nachhaken wegen der Commandline-Unterstützung.
ich habe im Editor folgendes als Startparameter eingefügt:
was mache ich denn hier noch falsch ?
Als Testreferenz für die Sprites&Sound habe ich mir mal 'Waponez'
vorgenommen.
Nachdem ich die Joystick befehle, den Delay und den CHR() rausgeschmissen habe,
wird auf alle fälle schon mal ohne Fehler kompiliert.
dann kommt beim html erstellen allerdings Fehler:
ich habe im Editor folgendes als Startparameter eingefügt:
trotzdem werde ich noch 'Nachgefragt' ob ich die html überschreiben möchte."%File" %executable.html /c /q /r
was mache ich denn hier noch falsch ?
Als Testreferenz für die Sprites&Sound habe ich mir mal 'Waponez'
vorgenommen.
Nachdem ich die Joystick befehle, den Delay und den CHR() rausgeschmissen habe,
wird auf alle fälle schon mal ohne Fehler kompiliert.
dann kommt beim html erstellen allerdings Fehler:
JSL unknow 0 check
Rings hat geschrieben:ziert sich nich beim zitieren
Re: PBtoHTML5 Compiler
compiliert und überschreibt ohne Nachfrage%File %Executable.html /R /c
Das automatische Ausführen bekomme ich auch nicht hin
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: PBtoHTML5 Compiler
Download (122 KB) mit dieser Version sollte \R \q funktionieren (\r fragt nach, \R fragt nicht nach)Rings hat geschrieben:ich muss nochmals nachhaken wegen der Commandline-Unterstützung.
ich habe im Editor folgendes als Startparameter eingefügt:trotzdem werde ich noch 'Nachgefragt' ob ich die html überschreiben möchte."%File" %executable.html /c /q /r
was mache ich denn hier noch falsch ?
Als Testreferenz für die Sprites&Sound habe ich mir mal 'Waponez'
vorgenommen.
Nachdem ich die Joystick befehle, den Delay und den CHR() rausgeschmissen habe,
wird auf alle fälle schon mal ohne Fehler kompiliert.
dann kommt beim html erstellen allerdings Fehler:
JSL unknow 0 check
Es ist jetzt auch noch ein neues Beispiel dabei "testgame_sound.pb" man muss aber erst die beiden Sounds von Waponez (Lazer.wav/Explosion.wav) in den "examples" Ordner kopieren...
liegt am Gosub/Return da der Compiler die Direktiven nicht kennt sind es Variablen für in und bei "Gosub label" ist dann ein nicht erwartetes Zeichen da statt einem Leerzeichen ein +=-* oder so sein sollte...JSL unknow 0 check
ja ich hab leider nur das "nicht fragen" getestet und nicht ob alles insgesamt funktioniert...bobobo hat geschrieben:compiliert und überschreibt ohne Nachfrage%File %Executable.html /R /c
Das automatische Ausführen bekomme ich auch nicht hin
mfg kevin
Re: PBtoHTML5 Compiler
Commandline geht nun genauso wie ich es brauche, thx.
Normalerweise müsste dann ein 'SYNTAX ERROR' oder so kommen .....
Nützliche infos zu java findet man auch hier:
http://www.mcmanis.com/chuck/java/index.html
Ein Ziel sollte sein das man Waponez compilieren kann, des wäre ein Meilenstein.
Ich habe die Gosub/returns rausgeschmissen, kommt immer noch besagter obiger JSL unknown Check:
komischer parser hast du , keine Whitespace erkennung ?Kevin hat geschrieben:liegt am Gosub/Return da der Compiler die Direktiven nicht kennt sind es Variablen für in und bei "Gosub label" ist dann ein nicht erwartetes Zeichen da statt einem Leerzeichen ein +=-* oder so sein sollte...JSL unknow 0 check
mfg kevin
Normalerweise müsste dann ein 'SYNTAX ERROR' oder so kommen .....
Nützliche infos zu java findet man auch hier:
http://www.mcmanis.com/chuck/java/index.html
Ein Ziel sollte sein das man Waponez compilieren kann, des wäre ein Meilenstein.
Ich habe die Gosub/returns rausgeschmissen, kommt immer noch besagter obiger JSL unknown Check:
Code: Alles auswählen
;
; **************
; *
; Waponez II **********************************************
; *
; Origninal Waponez is from NC Gamez ! Check it on Aminet... *
; *
; *****************************************************************
;
; NOTE: This file doesn't compile with the demo version !
;
;
; Initialization of all the used ressources
;
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
If InitSound() = 0
MessageRequester("Error", "Can't open DirectX 7 Or Sound Card is not present", 0)
End
EndIf
; If InitJoystick()
; EnableJoystick = 1
; EndIf
;
; Our bullet structure, which will be used by the linkedlist Bullet()
;
Structure Bullet
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
Global NewList Bullet.Bullet()
Structure Explosion
x.w
y.w
State.w
Delay.w
EndStructure
Global NewList Explosion.Explosion()
Structure Alien
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure
Global NewList Aliens.Alien()
Procedure AddBullet(Sprite, x, y, SpeedX, SpeedY)
AddElement(Bullet())
Bullet()\x = x
Bullet()\y = y
Bullet()\Width = SpriteWidth(Sprite)
Bullet()\Height = SpriteHeight(Sprite)
Bullet()\Image = Sprite
Bullet()\SpeedX = SpeedX
Bullet()\SpeedY = SpeedY
EndProcedure
MessageRequester("Welcome !", "It's the first game done with PureBasic x86 !"+"Use the Arrows + Space To blast them all !!"+"Enjoy :-) !", 0)
;
; Now, open a 640*480 - 16 bits colours screen
;
Path$ = "Data\"
; SetRefreshRate(60)
If OpenScreen(640, 480, 16, "Waponez II")
PlayerSpeedX = 6
PlayerSpeedY = 6
BulletSpeed = 10
;
; Load the sound effects
;
LoadSound(0, Path$+"Lazer.wav")
LoadSound(2, Path$+"Explosion.wav")
;
; Load the 3 player sprites
;
LoadSprite(3, Path$+"Player_1.bmp", 0)
LoadSprite(0, Path$+"Player_2.bmp", 0)
LoadSprite(2, Path$+"Player_3.bmp", 0)
;
; Load the bullets
;
LoadSprite( 4, Path$+"Bullet_1.bmp", 0)
LoadSprite( 6, Path$+"Bullet_Right.bmp", 0)
LoadSprite( 7, Path$+"Bullet_Left.bmp", 0)
LoadSprite( 8, Path$+"Bullet_Diag1.bmp", 0)
LoadSprite( 9, Path$+"Bullet_Diag2.bmp", 0)
LoadSprite(55, Path$+"Bullet_Bottom.bmp", 0)
;
; Sprite 10 to 15 reserved for the rotating animated alien..
;
For k=0 To 5
LoadSprite(k+10, Path$+"Ennemy_3_"+Str(k+1)+".bmp", 0)
Next
;
; Sprite 20 to 30 reserved for the explosions...
;
For k=0 To 7
LoadSprite(k+20, Path$+"Explosion_"+Str(k+1)+".bmp", 0)
Next
;
; Load the background sprite
;
LoadSprite(20, Path$+"Back_3.bmp", 0)
;
PlayerWidth = SpriteWidth(3)
PlayerHeight = SpriteHeight(3)
PlayerX = 300
PlayerY = 400
Repeat
FlipBuffers() ; This should be always in the loop, the events are handle by this functions
If IsScreenActive() ; Check if is active or not (ALT+TAB symptom :)
db = 1-db
; Draw the background (an unified one...)
For BackX=0 To 640 Step 32
For BackY=-32 To 480 Step 32
DisplaySprite(20, BackX, BackY+ScrollY)
Next
Next
;Gosub CheckCollisions
;CheckCollisions:
ResetList(Aliens())
While NextElement(Aliens())
ResetList(Bullet())
While NextElement(Bullet())
If SpritePixelCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\Armor-1
DeleteElement(Bullet())
EndIf
Wend
If DeadDelay = 0 ; No more invincible...
If SpritePixelCollision(PlayerImage, PlayerX, PlayerY, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Dead = 1
DeadDelay = 300
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
DeleteElement(Aliens())
EndIf
EndIf
Wend
;Return
; Gosub MovePlayers
; MovePlayers:
Fire = 0
PlayerImage = 3 ; Non-moving player image
; If EnableJoystick
; If ExamineJoystick(0)
;
; PlayerX+JoystickAxisX(0)*PlayerSpeedX
; PlayerY+JoystickAxisY(0)*PlayerSpeedY
;
; If JoystickAxisX(0) = 1
; PlayerImage = 0
; EndIf
;
; If JoystickAxisX(0) = -1
; PlayerImage = 2
; EndIf
;
; ; All buttons works to fire the aLiEnZ !
; ;
; If JoystickButton(0, 1) Or JoystickButton(0, 2) Or JoystickButton(0, 3) Or JoystickButton(0, 4)
; Fire = 1
; EndIf
;
; EndIf
; EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
PlayerX-PlayerSpeedX
PlayerImage = 2 ; Left moving player image
EndIf
If KeyboardPushed(#PB_Key_Right)
PlayerX+PlayerSpeedX
PlayerImage = 0 ; Right moving player image
EndIf
If KeyboardPushed(#PB_Key_Up)
PlayerY-PlayerSpeedY
EndIf
If KeyboardPushed(#PB_Key_Down)
PlayerY+PlayerSpeedY
EndIf
If PlayerX < 0 : PlayerX = 0 : EndIf
If PlayerY < 0 : PlayerY = 0 : EndIf
If PlayerX > 640-PlayerWidth : PlayerX = 640-PlayerWidth : EndIf
If PlayerY > 480-PlayerHeight : PlayerY = 480-PlayerHeight : EndIf
If Dead = 1
AddElement(Explosion())
Explosion()\x = PlayerX
Explosion()\y = PlayerY
Dead = 0
Else
If DeadDelay>0
DeadDelay-1
If db=1
If DeadDelay < 200
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
Else
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
If KeyboardPushed(#PB_Key_Space) Or Fire
If BulletDelay = 0
If DeadDelay < 100
BulletDelay = 10
; AddBullet() syntax: (#Sprite, x, y, SpeedX, SpeedY)
;
AddBullet(4, PlayerX+5 , PlayerY-10, 0 , -BulletSpeed) ; Front bullet (Double bullet sprite)
AddBullet(6, PlayerX+45, PlayerY+6 , BulletSpeed, 0) ; Right side bullet
AddBullet(7, PlayerX-11, PlayerY+6 , -BulletSpeed, 0) ; Left side bullet
AddBullet(8, PlayerX+45, PlayerY-6 , BulletSpeed, -BulletSpeed) ; Front-Right bullet
AddBullet(9, PlayerX-11, PlayerY-6 , -BulletSpeed, -BulletSpeed) ; Front-Left bullet
AddBullet(55,PlayerX+20, PlayerY+45, 0 , BulletSpeed) ; Rear bullet
PlaySound(0, 0) ; Play the 'pffffiiiouuu' lazer like sound
EndIf
EndIf
EndIf
;Return
; Gosub DisplayBullets
; DisplayBullets:
ResetList(Bullet())
While NextElement(Bullet()) ; Process all the bullet actualy displayed on the screen
If Bullet()\y < 0 ; If a bullet is now out of the screen, simply delete it..
DeleteElement(Bullet())
Else
If Bullet()\x < 0 ; If a bullet is now out of the screen, simply delete it..
DeleteElement(Bullet())
Else
If Bullet()\x > 640-Bullet()\Width
DeleteElement(Bullet())
Else
If Bullet()\y > 480
DeleteElement(Bullet())
Else
DisplayTransparentSprite(Bullet()\Image, Bullet()\x, Bullet()\y) ; Display the bullet..
Bullet()\y + Bullet()\SpeedY
Bullet()\x + Bullet()\SpeedX
EndIf
EndIf
EndIf
EndIf
Wend
;Return
; Gosub NewAlienWave
;NewAlienWave:
If AlienDelay = 0
AddElement(Aliens())
If Boss = 1
Aliens()\x = 100
Aliens()\y = -16
Aliens()\Width = SpriteWidth(50)
Aliens()\Height = SpriteHeight(50)
Aliens()\Speed = 2
Aliens()\StartImage = 50
Aliens()\EndImage = 50
Aliens()\ImageDelay = 1
Aliens()\NextImageDelay = 1
Aliens()\ActualImage = 50
Aliens()\Armor = 20
AlienDelay = 80
Else
Aliens()\x = Random(600)
Aliens()\y = -32
Aliens()\Width = SpriteWidth(10)
Aliens()\Height = SpriteHeight(10)
Aliens()\Speed = 3
Aliens()\StartImage = 10
Aliens()\EndImage = 15
Aliens()\ImageDelay = 4
Aliens()\NextImageDelay = Aliens()\ImageDelay
Aliens()\ActualImage = 10
Aliens()\Armor = 5
AlienDelay = Random(20)
EndIf
Else
AlienDelay-1
EndIf
;Return
;Gosub DisplayAliens
;DisplayAliens:
ResetList(Aliens())
While NextElement(Aliens())
DisplayTransparentSprite(Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\y + Aliens()\Speed
If Aliens()\NextImageDelay = 0
Aliens()\ActualImage+1
If Aliens()\ActualImage > Aliens()\EndImage
Aliens()\ActualImage = Aliens()\StartImage
EndIf
Aliens()\NextImageDelay = Aliens()\ImageDelay
Else
Aliens()\NextImageDelay-1
EndIf
If Aliens()\Armor <= 0
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
Score+20
DeleteElement(Aliens())
Else
If Aliens()\y > 480
DeleteElement(Aliens())
EndIf
EndIf
Wend
;Return
; Gosub DisplayExplosions
; DisplayExplosion:
; -----------------
;
; Once an explosion has been declared (an aliens has been destroyed or the player...), it will be
; displayed inside this routine. The object remains until the end of the explosion (all the pictures
; have been displayed). Then the object is removed with DeleteElement().
;
;DisplayExplosions:
ResetList(Explosion())
While NextElement(Explosion()) ; Take the explosions objects, one by one.
; For each object, display the current explosion image (called state here)
DisplayTransparentSprite(Explosion()\State+20, Explosion()\x, Explosion()\y)
If Explosion()\Delay = 0
If Explosion()\State = 0 ; Play the sound only at the explosion start.
PlaySound(2, 0)
EndIf
If Explosion()\State < 7
Explosion()\State+1
Explosion()\Delay = 3
Else
DeleteElement(Explosion())
EndIf
Else
Explosion()\Delay-1
EndIf
Wend
;Return
If BulletDelay > 0
BulletDelay-1
EndIf
If ScrollDelay = 0
ScrollY+1
ScrollDelay = 0
Else
ScrollDelay-1
EndIf
If ScrollY>31
ScrollY = 0
EndIf
Else
; The screen is no more active but our game multitask friendly, so we stop the sounds and
; add a delay to not eat the whole CPU. Smart hey ? :)
StopSound(-1)
; Delay(20)
EndIf
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Waponez II", "Can't open a 640*480 8 bit screen !", 0)
EndIf
End
Rings hat geschrieben:ziert sich nich beim zitieren
Re: PBtoHTML5 Compiler
@Rings
Es wird in Javascript nicht Java umgewandelt...
Danke für das Beispiel und die Fehlermeldungen hab alles behoben siehe changelog
Damit die Bilder im Browser Transparent sind hab ich ein Tool mitgeliefert "Alpha+PNG.exe" damit man einen Alpha-Kanal zu den Bildern Hinzufügen kann...
einfach die Bild-Dateien (auch mehrere) auf die Verknüpfung ziehen um einen Alpha-Kanal hinzuzufügen damit Bilder mit TransparentSpriteColor(rgb(0,0,0)) in PB und im Browser Transparent sind... (Und vorab sry für die vielen Klicks auf Ja und Ok)
Download (143 KB)
Es wird in Javascript nicht Java umgewandelt...
Danke für das Beispiel und die Fehlermeldungen hab alles behoben siehe changelog
Damit die Bilder im Browser Transparent sind hab ich ein Tool mitgeliefert "Alpha+PNG.exe" damit man einen Alpha-Kanal zu den Bildern Hinzufügen kann...
einfach die Bild-Dateien (auch mehrere) auf die Verknüpfung ziehen um einen Alpha-Kanal hinzuzufügen damit Bilder mit TransparentSpriteColor(rgb(0,0,0)) in PB und im Browser Transparent sind... (Und vorab sry für die vielen Klicks auf Ja und Ok)
Download (143 KB)
changelog hat geschrieben:[r54] 15:38 21.09.2012
R \R schon wieder
R "\" in strings werden zu "\\"
R => / =< fehler
R fehler bei Leerzeichen vor </>/=
Re: PBtoHTML5 Compiler
danke für die parameter

pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.