|
kevin
|
 |
« Reply #30 on: July 27, 2007, 06:48:09 PM » |
|
Thesius XIII Forest Blast - Download Decided to release source code as is. Basically it's the game frame work, without a real level to play  . I've decided to release it now as it's been some 3/4 weeks since I touched it and given that i'm currently bogged down updating old the demo/media packs. This could have easily fallen by the way side. So here it is. The code was written in PlayBasic 1.62/1.63. Feature wise it only uses a handful of PB effects, namely pixel perfect collision, variable and alpha 50 blend modes (sprites and box) and Alpha colour addition for sprite flashes. If you removed the 'linked list' controls in the particle library, it'd compile and run really old version of PB also. I.e. PBv1.40 possibly as low as probably V1.30. This demo was largely created from cut-pasted tidbits from the PlayBasic example packs. Most notably from the AXIS demo, which is what the whole thing is based upon. The art work is a combination of stock PB artwork like Blink's forest backdrop, combined with Pincho Paxton's Trillion art (Ship/buildings), combined with some elements from TheMaskedCoder's and various tidbit that were sitting in my GFX folder. I've no idea where they're from.. Have fun working it out  . Download Download Thesius XIII Forest Blast (Source Code only) (2.4meg)
|
|
|
|
« Last Edit: July 27, 2007, 07:06:18 PM by kevin »
|
Logged
|
|
|
|
Rembrandt Q Einstein
Member
Newbie
Offline
Posts: 35
|
 |
« Reply #31 on: July 29, 2007, 05:30:07 AM » |
|
Amazing work Kevin. The effects are phenomenal. I had never considered a shoot 'em up where the ship goes above and below water, but not only does it look great, but I'm sure it would allow interesting possibilities for enemy design and gameplay. Looking at your code I thought you might have some secret functions to keep the framerate high, but saw the same inkmodes and spritedrawmodes that we all use. What was the reasoning behind not using either sine shapes or a water image instead of the box command for the water? Would framerate have suffered too much? "This example was written coincide with the Blaster Blaster competition. " means that it's not an entrant I'm guessing? I'm sure it would rack up some programming points (but might suffer on sound  ).
|
|
|
|
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #32 on: July 29, 2007, 01:36:46 PM » |
|
Amazing work Kevin. The effects are phenomenal. I had never considered a shoot 'em up where the ship goes above and below water, but not only does it look great, but I'm sure it would allow interesting possibilities for enemy design and gameplay. Looking at your code I thought you might have some secret functions to keep the framerate high, but saw the same inkmodes and spritedrawmodes that we all use. If only I had $1 for every time i heard that.  What was the reasoning behind not using either sine shapes or a water image instead of the box command for the water? Originally i just cut and pasted the sine water height demo into the axis demo. And that was it for a while. I didn't like the way it looked with a perspective scene. Mainly since the viewer can stand above the water line, so you can see over it. Which breaks the illusion. You could project a triangle mesh, then then you'd need clip the triangles against various building planes. Doable, but a bit messier. Would framerate have suffered too much? There'd be a slight overhead in rasterization, but after that, they use the rendering code. It's a little difficult to see now, but the blending level of the water changes the deeper you get. "This example was written coincide with the Blaster Blaster competition. " means that it's not an entrant I'm guessing? I'm sure it would rack up some programming points (but might suffer on sound ). ahh, If only I wasn't judging the competition
|
|
|
|
« Last Edit: July 29, 2007, 01:38:29 PM by kevin »
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #33 on: November 19, 2007, 10:16:55 AM » |
|
Code Update - Changes If you've tried running the Thesius XIII source/demo in PlayBasic V1.7x revisions, you've no doubt run into an odd sprite doesn't exist problem. I'd assumed this was from some difference with how the sprite list is traversed in PB1.7x, but it turned out that older editions of the PB (1.63 and bellow) let you to attempt to detect impacts against sprites that didn't exist without raising an error. This is not the case in PB1.7x editions however. Anyway, So in order to get this demo running in newer editions of PB you'll need to replace the UpdatePlayerBullets() function (found in the Player source Tab) with one provided bellow. Effectively what was happening was when a bullet left the screen, it was being deleted but rather than continuing the loop, it was falling through and hitting the SpriteHit command. There was another logic error which would occur when bullet hit an alien. Rather than grabbing the Next Sprite in the list prior to subtracting damage from the hit alien, it was doing it after it. This is no problem when the alien wasn't destroyed, by if it was, the code would end up reading a none existent sprite and popping a runtime error. Moreover, the original source code used the SpriteImageRGB command which is obsolete in PB1.7x revisions. While it's not actually used in the demo, it's present within the source code, so you can just delete or comment out any such instances from the source and it should compile and run. When I get some time, i'll build a version of the source that will work in both editions, Which is just a matter of adding optional compilation tags. Function UpdatePLayerBullets() For Bullet=0 To GetArrayElements(PlayerBullets().tPLayerBullet,1) If PlayerBullets(Bullet).status
x# =playerbullets(bullet).x# y# =playerbullets(bullet).Y# Spr =PlayerBullets(bullet).sprite
Select PlayerBullets(Bullet).Brain Case PlayerBullet_Directional Angle#=PlayerBUllets(Bullet).angle# x#=CosNewValue(x#,angle#,10) y#=SinNewValue(y#,angle#,10)
EndSelect playerbullets(bullet).x#=x# playerbullets(bullet).y#=y# PositionSprite spr,x#,y#
If SpriteInCamera(spr,Screen.camera)=False Delete_PlayerBullet(Bullet) continue EndIf
KillBullet=False CheckSprite=GetFirstSprite() Repeat
HitAlienSprite=SpriteHit(spr,CheckSprite,CollisionClass_Alien)
If HitALienSprite>0
CheckSprite=GetNextSprite(HitALienSprite)
SpriteDrawMode HitALienSprite,2+4096 SpriteAlphaAddColour HitAlienSprite,RndRGB()
CreateExplosionAnim(ExplosionAnim_Small,x#,y#,z#,rnd(360),rnd#(5),rndRange#(0.5,1.5))
if GetSpriteCollisionClass(HitAlienSprite)=CollisionClass_Alien
; handle Damnage on alien LAST.. ; get the player that fired this shot player=PlayerBullets(bullet).player
; handle damage alien and return score (if any) Score=HandleAlienDamageFromSprite(HitAlienSprite,1)
if Score Players(player).score=Players(player).score+score Players(player).ScoreRefresh=true endif endif
KillBullet=True EndIf Until HitAlienSprite<1
If KillBullet DeleteArrayObject(PlayerBullets().tplayerbullet,Bullet) else Inc NumberOfPlayerBullets EndIf
EndIf // end of Status check Next
// The Number Activate PLayers bullets this update Game.Stats.ActivePlayerBullets=NumberOfPlayerBullets
EndFunction
|
|
|
|
« Last Edit: November 19, 2007, 10:59:12 AM by kevin »
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #34 on: January 31, 2008, 03:52:52 PM » |
|
It's back again It's been a long time between drinks for Thesius XIII, while this demo wasnever intended to be 'complete' game, I'm in the process of adding a few more nick knacks so that this can be used as feature game in the upcoming re-release of the PlayBasic Demo. Thesius XIII is of course a bit of shout out to a shooter I wrote some 15 years ago on the Amiga. How time flies! Object Manager So far, I'm just tinkering around with adding an dynamic object trigger/management layer. This object manager controls the activation of dynamic objects throughout the world. In other words the engine stores all the objects in a list definitions or triggers if you will, these objects are effectively sitting in hiatus when in this state. When the player reaches a particular point, the object manager triggers (adds) this object class to the scene, with the required properties (position, scale whatever) and hey presto the character appears where-ever you've defined in with the world space. The level definitions looks like this. So far the parser only supports the Mine trigger, but it's all seems to be working ok. There's only 4 or 5 objects (all the GFX i've got) anyway <Triggers>
Mine=1100.0,200.0,400.0 Mine=1200.0,300.0,400.0 Mine=1300.0,500.0,400.0
Mine= 700.0,000.0,400.0 Mine= 800.0,000.0,400.0 Mine= 900.0,000.0,400.0
Mine=5300.0,500.0,400.0,0.0,0.0,0.0
</Triggers>
|
|
|
|
|
Logged
|
|
|
|
|
thaaks
|
 |
« Reply #35 on: February 01, 2008, 05:53:55 AM » |
|
Do you use UFF for the definition file or something else?
BTW: Is there some XML parser for PlayBasic flying around?
I will look at this game tonight - I completely missed it during my year of PB absence but it looks great!
Cheers, Tommy
|
|
|
|
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #36 on: February 02, 2008, 09:10:55 AM » |
|
Do you use UFF for the definition file or something else? See the source. BTW: Is there some XML parser for PlayBasic flying around? not that i know of.
|
|
|
|
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #37 on: February 02, 2008, 02:24:25 PM » |
|
Thesius XIII V0.16 - Bunker Objects Slowly picking through this in my spare time. Adding a new object class bunkers and some more triggers, so that objects that are already implemented can be positioned in the level. To save design time ( even I find that funny  ), objects can be triggered in two ways. Individually or via random batches. Obviously individually is where you trigger each object at a particular spot (ie. tedious), while random batches allows you to create an invisible objects that randomly spawns objects into the scene for a certain time. Anyway, here's another piccy.
|
|
|
« Last Edit: February 02, 2008, 02:31:34 PM by kevin »
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #38 on: March 07, 2008, 10:47:31 AM » |
|
Thesius XIII V0.20 Finally got back to working on this after various interruptions. First thing on the agenda has been to change how the game engine deals with the world & screen space. The previous editions the game engine had various ways with dealing the objects. Some objects worked in world space coordinates others worked in screen space. This was causing a few issues with syncing the camera movement as well interactions with the player. Which was largely due to the hacked together origins of the demo. Ie. Cut and paste While such changes aren't slap in the face obvious (but you can notice while playing) it now means everything (hopefully) uses the same system. This means the player can now stop/speed up etc and game engine manages objects better. The picture bellow is another fairly samey picture. It's simply showing a couple of new ship object types I've managed to scrounge up. So far they have no behaviors, but they're likely to be pattern based (See Here). Basically canon fodder. Also implementing some fragment explosions in static mines (more cut and paste  ). Got a few other ideas but don't want to get two far ahead of myself.. Can always implement them later.
|
|
|
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #39 on: March 07, 2008, 11:50:32 PM » |
|
Thesius XIII V0.21 - Fragments
Been tinkering with adding fragments the past couple of hours. These are particle type that generate a temp 'burnt' image when an explosion occurs. The piccy bellow is overkill, stress test if you like. It won't be used at this level in the actual demo. Anyway, it's simple but effective
|
|
|
« Last Edit: March 08, 2008, 04:37:53 AM by kevin »
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #40 on: March 10, 2008, 11:21:10 AM » |
|
Thesius XIII V0.21 - Demo Since the last session I've implemented most of the object types. All that really remains now is the boring level layout stuff. Since current there's no real fixed level to play, so most of it's random.. One of the new alien controllers is generic path follower (It uses this code - surprise surprise ). ATM the falcon V ships (the sorta wedge looking ones) use it. But they all use the same (odd ball) path from random spawn points. If there's time i'd like to set up the objects to run sets of paths. So you can make longer paths from smaller fragments. A bit like lego. Which is an idea from my original Thesius XII game (Amiga). In T12 the path/animation engine had controls to make random choices, even comparisons, animations triggers and loops. This enabled objects to move through common junction points at will. The idea was to give the fixed behaviors a more dynamic feel. Anyway, I've attached a demo for you tinker with. Have fun! Controls Mouse = Control PLayer F1 = Trigger random spin mines F2 = Trigger random crabs F3 = Trigger random path based falcons. F5 = Slow down F6 = Speed up F8 = Add bullets to player Space = Trigger Homers Enter = Show Stat's ESC = QUIT Download Thesius XIII V0.21 Built with PlayBasic V1.63v
|
|
|
|
|
Logged
|
|
|
|
|
monkeybot
|
 |
« Reply #41 on: March 10, 2008, 01:06:08 PM » |
|
mmm thats nice,very smooth
|
|
|
|
|
Logged
|
|
|
|
|
ATLUS
|
 |
« Reply #42 on: March 11, 2008, 05:21:52 AM » |
|
Cool!!!!its good game and good demonstration for playbasic!!!!!!!!!!!!!!!!
|
|
|
|
|
Logged
|
come back in summer 2011...
|
|
|
|
kevin
|
 |
« Reply #43 on: March 20, 2008, 10:34:26 AM » |
|
Thesius XIII - Pattern Editor Yep back working on the Thesius XIII tech demo, so I figured I might as well throw together a bit of pattern editor. Those with a keen eye will no doubt notice that it looks a lot like this Path Movement combined with this BackDrop. That's because it is  All i've added to this version is a camera so I can move outside of the 'game' viewport. This allows paths to be defined that start and end off the screen.
|
|
|
|
Logged
|
|
|
|
|
kevin
|
 |
« Reply #44 on: March 20, 2008, 12:56:31 PM » |
|
ThesiusXIII V0.25 This version setup to play a real (well thrown together) level now. So objects are spawned through the trigger list, paths etc etc.. It's funny how much of a difference that makes, as all of sudden it's starting to feel like a real game. All be it, a very one side game at the aliens are much stronger than the player.. but ya get that Anyway, here's a few more pic's
|
|
|
« Last Edit: March 20, 2008, 12:59:03 PM by kevin »
|
Logged
|
|
|
|
|