-
Posts
90 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Forums
Events
Posts posted by The Taxman
-
-
Oh hey, people talking about me! I'm not involved in Sonic 4 iPhone or otherwise so uh... sorry? I am working on some awesome stuff though, which I can't discuss publicly (NDA) so sorry again?
You should see at least one of the things I'm working on this year though so stay tuned.
-
Either that, or Eggman turned to pushing some mad gear on the streets after "budget cuts"
-
There's also GameSalad http://gamesalad.com/
It's free, so it can't hurt to give it a try.
-
Here's a simple way to do boss collision
if Player's CollisionBox Collides with the Boss' Collision Box:
Player.XSpeed=(Player.XPos-Boss.XPos)*BounceBackStrength
Player.YSpeed=(Player.YPos-Boss.YPos)*BounceBackStrength
end if
BounceBackStrength is usually a fractional value, since the speed would be too great otherwise. Play around with the value to get the optimum bouncing speed.
-
That looks bloody fantastic, Taxman.
(ot: when you guys playing around Melbourne? )
The Polites are playing this friday with The Greasers at Royal Derby Hotel - 446 Brunswick Street actually heh
-
Hey gang, I wasn't going to make this public for a little while, but given SEGA's latest blog post, and their upcoming discussions on wednesday it's time for some guerilla marketing!
Recently, I've been in contact with SEGA in regards to doing an enhanced port of Sonic CD for the iPhone. I put together a proof of concept demo and video demonstrating the game fully functional on Apple's iDevice
http://www.christianwhitehead.com/soniccd/view.html
http://www.youtube.com/watch?v=4teDIp32mXI
The question is, do YOU want it? Let SEGA know. This is more than just one of their crappy emulator ports, we're talking iPhone exclusive enhancements and features (I've got some cool plans)
Discuss
-
Not really, as I'm assuming they're just making Win32 calls to have the OS handle the EXE; there's no "translation" really going on.
The Flash version of MMF, works on my mac though, so there isn't any Windows stuff going on here. Like I said, Clickteam most likely took the engine code of MMF and used alchemy to create a flash implementation of it. Then, they'd just have a template swf file that they could insert your mmf game data via the new swf export option.
-
I'd say they're probably using Flash's Alchemy technology to run MMF inside flash. Alchemy allows C/C++ code to be compiled for the Flash JIT stuff. So instead of saving an exe file, the swf export option would generate a swf with the relevant code for Alchemy.
-
Let your work speak for itself I say
-
It's being done by sumo digital, who also did that superstars tennis game
-
Does this mean your rotating stars rotate in your animation frames? I see 12 frames for most of these. Well, I was using only 6 frames. Maybe if I stretched it out to 12, the animation might look better.
Thank you for the code, Taxman. It gave me some valuable info. I'll get back to work on the invincibility later today.
Nah, the rotation is handled with sin and cos functions:
//Draw the 4th Pair of Stars
TempValue2=Object.Angle2
TempValue2+=116
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos7[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos7[+ArrayPos0]
DrawSpriteXY(Object.Stars4,TempValue0,TempValue1)
TempValue2=Object.Angle2
TempValue2+=372
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos7[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos7[+ArrayPos0]
TempValue2=Object.Stars4
TempValue2+=3
DrawSpriteXY(TempValue2,TempValue0,TempValue1)
//Draw the 3rd Pair of Stars
Cos(TempValue0,Object.Angle2)
Sin(TempValue1,Object.Angle2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos5[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos5[+ArrayPos0]
DrawSpriteXY(Object.Stars3,TempValue0,TempValue1)
TempValue2=Object.Angle2
TempValue2+=256
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos5[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos5[+ArrayPos0]
TempValue2=Object.Stars3
TempValue2+=5
DrawSpriteXY(TempValue2,TempValue0,TempValue1)
//Draw the 2nd Pair of Stars
TempValue2=Object.Angle2
TempValue2+=168
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos3[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos3[+ArrayPos0]
DrawSpriteXY(Object.Stars2,TempValue0,TempValue1)
TempValue2=Object.Angle2
TempValue2+=424
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos3[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos3[+ArrayPos0]
TempValue2=Object.Stars2
TempValue2+=3
DrawSpriteXY(TempValue2,TempValue0,TempValue1)
//Draw the 1st Pair of Stars
Cos(TempValue0,Object.Angle1)
Sin(TempValue1,Object.Angle1)
TempValue0<<=11
TempValue1<<=11
TempValue0+=Player.XPos
TempValue1+=Player.YPos
DrawSpriteXY(Object.Stars1,TempValue0,TempValue1)
TempValue2=Object.Angle1
TempValue2+=256
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
TempValue0+=Player.XPos
TempValue1+=Player.YPos
TempValue2=Object.Stars3
TempValue2+=5
DrawSpriteXY(Object.Stars1,TempValue0,TempValue1)
[/CODE]The radius of the rotation stars is 16 pixels so in mmf it'd look more like this
Star_XPosition = Star_CentreX + ( cos(RotationAngle) * 16 )
Star_YPosition = Star_CentreY + ( sin(RotationAngle) *16 )
Star_CentreX and Star_CentreY are the buffered positions of PlayerX and PlayerY. The older the buffer data, the more delayed the star trailing effect is
-
All I can say is, unless that code works in mmf2's lua object, I doubt it will help much. far too much bulk here.
Bulky? This one was a fairly basic sized script XD
No you wouldn't be able to port that code directly, apart from the fact the script syntax is my own, the Retro Engine works very differently to the object system of MMF. For example, MMF would need each star twinkle to be a separate active object, where as using the manual drawing methods in the Retro Engine, the stars are drawn with one script.
It should still be possible to duplicate the algorithm though. It's just not laid out in an obvious manner, so yeah sorry. I just can't be bothered going into mmf and dealing with it XD
-
Here's the script file for how it's done in Retro-Sonic XG... bear in mind it's using fixed point math instead of floats hence the bit shifting in areas. It might be a little complex though so sorry if it's no help
//---------Retro Sonic XG Invincibility Stars---------//
//----Scripted by Christian Whitehead "The Taxman"----//
//----Player Directions----//
#alias 1 : FACING_LEFT
#alias 0 : FACING_RIGHT
#alias Object.Value0 : Object.Angle1
#alias Object.Value1 : Object.Angle2
#alias Object.Value2 : Object.Stars1
#alias Object.Value3 : Object.Stars2
#alias Object.Value4 : Object.Stars3
#alias Object.Value5 : Object.Stars4
#alias Object.Value0 : StarPos0
#alias Object.Value1 : StarPos1
#alias Object.Value2 : StarPos2
#alias Object.Value3 : StarPos3
#alias Object.Value4 : StarPos4
#alias Object.Value5 : StarPos5
#alias Object.Value6 : StarPos6
#alias Object.Value7 : StarPos7
sub ObjectMain
if Object.State==0
//Set the Star Positions
ArrayPos0=1
StarPos7[+ArrayPos0]=Player.XPos
StarPos6[+ArrayPos0]=Player.XPos
StarPos5[+ArrayPos0]=Player.XPos
StarPos4[+ArrayPos0]=Player.XPos
StarPos3[+ArrayPos0]=Player.XPos
StarPos2[+ArrayPos0]=Player.XPos
StarPos1[+ArrayPos0]=Player.XPos
StarPos0[+ArrayPos0]=Player.XPos
ArrayPos0=2
StarPos7[+ArrayPos0]=Player.YPos
StarPos6[+ArrayPos0]=Player.YPos
StarPos5[+ArrayPos0]=Player.YPos
StarPos4[+ArrayPos0]=Player.YPos
StarPos3[+ArrayPos0]=Player.YPos
StarPos2[+ArrayPos0]=Player.YPos
StarPos1[+ArrayPos0]=Player.YPos
StarPos0[+ArrayPos0]=Player.YPos
Object.Angle1=180
Object.Angle2=0
Object.Stars4=20
Object.Stars3=0
Object.Stars2=32
Object.Stars1=44
Object.State=1
end if
end sub
sub ObjectDraw
//Update the Star Frames
Object.Stars4++
if Object.Stars4==26
Object.Stars4=20
end if
Object.Stars3++
if Object.Stars3==10
Object.Stars3=0
end if
Object.Stars2++
if Object.Stars2==38
Object.Stars2=32
end if
Object.Stars1++
if Object.Stars1==56
Object.Stars1=44
end if
//Update the Star Positions
ArrayPos0=1
StarPos7[+ArrayPos0]=StarPos6[+ArrayPos0]
StarPos6[+ArrayPos0]=StarPos5[+ArrayPos0]
StarPos5[+ArrayPos0]=StarPos4[+ArrayPos0]
StarPos4[+ArrayPos0]=StarPos3[+ArrayPos0]
StarPos3[+ArrayPos0]=StarPos2[+ArrayPos0]
StarPos2[+ArrayPos0]=StarPos1[+ArrayPos0]
StarPos1[+ArrayPos0]=StarPos0[+ArrayPos0]
StarPos0[+ArrayPos0]=Player.XPos
ArrayPos0=2
StarPos7[+ArrayPos0]=StarPos6[+ArrayPos0]
StarPos6[+ArrayPos0]=StarPos5[+ArrayPos0]
StarPos5[+ArrayPos0]=StarPos4[+ArrayPos0]
StarPos4[+ArrayPos0]=StarPos3[+ArrayPos0]
StarPos3[+ArrayPos0]=StarPos2[+ArrayPos0]
StarPos2[+ArrayPos0]=StarPos1[+ArrayPos0]
StarPos1[+ArrayPos0]=StarPos0[+ArrayPos0]
StarPos0[+ArrayPos0]=Player.YPos
if Player.Direction==FACING_RIGHT
Object.Angle1+=144
if Object.Angle1>511
Object.Angle1-=512
end if
Object.Angle2+=16
if Object.Angle2>511
Object.Angle2-=512
end if
else
Object.Angle1-=144
if Object.Angle1<0
Object.Angle1+=512
end if
Object.Angle2-=16
if Object.Angle2<0
Object.Angle2+=512
end if
end if
//Draw the 4th Pair of Stars
TempValue2=Object.Angle2
TempValue2+=116
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos7[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos7[+ArrayPos0]
DrawSpriteXY(Object.Stars4,TempValue0,TempValue1)
TempValue2=Object.Angle2
TempValue2+=372
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos7[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos7[+ArrayPos0]
TempValue2=Object.Stars4
TempValue2+=3
DrawSpriteXY(TempValue2,TempValue0,TempValue1)
//Draw the 3rd Pair of Stars
Cos(TempValue0,Object.Angle2)
Sin(TempValue1,Object.Angle2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos5[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos5[+ArrayPos0]
DrawSpriteXY(Object.Stars3,TempValue0,TempValue1)
TempValue2=Object.Angle2
TempValue2+=256
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos5[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos5[+ArrayPos0]
TempValue2=Object.Stars3
TempValue2+=5
DrawSpriteXY(TempValue2,TempValue0,TempValue1)
//Draw the 2nd Pair of Stars
TempValue2=Object.Angle2
TempValue2+=168
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos3[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos3[+ArrayPos0]
DrawSpriteXY(Object.Stars2,TempValue0,TempValue1)
TempValue2=Object.Angle2
TempValue2+=424
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
ArrayPos0=1
TempValue0+=StarPos3[+ArrayPos0]
ArrayPos0=2
TempValue1+=StarPos3[+ArrayPos0]
TempValue2=Object.Stars2
TempValue2+=3
DrawSpriteXY(TempValue2,TempValue0,TempValue1)
//Draw the 1st Pair of Stars
Cos(TempValue0,Object.Angle1)
Sin(TempValue1,Object.Angle1)
TempValue0<<=11
TempValue1<<=11
TempValue0+=Player.XPos
TempValue1+=Player.YPos
DrawSpriteXY(Object.Stars1,TempValue0,TempValue1)
TempValue2=Object.Angle1
TempValue2+=256
Cos(TempValue0,TempValue2)
Sin(TempValue1,TempValue2)
TempValue0<<=11
TempValue1<<=11
TempValue0+=Player.XPos
TempValue1+=Player.YPos
TempValue2=Object.Stars3
TempValue2+=5
DrawSpriteXY(Object.Stars1,TempValue0,TempValue1)
end sub
sub ObjectStartup
LoadSpriteSheet("Global/Items.gif")
//Invincibility Star Frames
SpriteFrame(0,0,1,1,118,304)
SpriteFrame(-1,-1,3,3,117,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-15,-15,31,31,143,332)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-1,-1,3,3,117,303)
SpriteFrame(0,0,1,1,118,304)
SpriteFrame(-1,-1,3,3,117,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-15,-15,31,31,143,332)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-1,-1,3,3,117,303)
//Frame 20
SpriteFrame(0,0,1,1,118,304)
SpriteFrame(-1,-1,3,3,117,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-1,-1,3,3,117,303)
SpriteFrame(0,0,1,1,118,304)
SpriteFrame(-1,-1,3,3,117,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-1,-1,3,3,117,303)
//Frame 32
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-15,-15,31,31,143,332)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-15,-15,31,31,143,332)
SpriteFrame(-10,-10,21,21,117,319)
SpriteFrame(-7,-7,15,15,125,303)
//Frame 44
SpriteFrame(-15,-15,31,31,143,332)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-15,-15,31,31,143,332)
SpriteFrame(-3,-3,7,7,117,307)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-7,-7,15,15,125,303)
SpriteFrame(-3,-3,7,7,117,307)
end sub
sub RSDK
LoadSpriteSheet("Global/Items.gif")
SetEditorIcon(Icon0,SingleIcon,-15,-15,31,31,143,332)
end sub
[/CODE] -
Actually, the trailing effect is achieved by having a buffer of x,y positions for the centre of the rotating circle of stars. Each frame, the x and y position of the player is copied to the next buffer position.
Retro Sonic XG has the Sonic2/3 invincibility stars, I could post my script file for it, but you might have trouble reinterpreting it for mmf
-
No, using 16x16 tiles is the wrong freakin' answer. It'll cause you nothing but grief and lag in the end.
I'd disagree, but then I realized we're talking about MMF2 here
I'd say go for larger tiles for the most part, and use a light sprinking of small ones where it's really needed
-
Not going to happen sorry, the DS is a whole different kettle of fish. It'd require massive reworking to fit within how the DS does tiled modes etc, and I have no intention of doing that.
-
It's funny, I play like that all time. I think it comes from testing stuff in my own games. Moving around, marveling at what's achieved on the screen type deal. Of course, it's usually after I've beaten a game for the first time
Sonic Unleashed for example, I pretty much rushed to get the bare minimum of coins to complete the game, and now I find it's enjoyable just to pick any daytime level or hub even and just cruise around for novelty.
- 1
-
Ok, for all the Dreamcast fans/nuts out there, I've decided to go ahead with a DC port for RSXG. It won't be out the same time as the PC/Mac/Wii version though since it requires more tweaking than a Vanilla port.
As with the previous DC port, I have to retool the graphics to use hardware rendering instead of my own software library in order to get the full 60fps speed, and there will probably be minor graphics differences as a result. But hey think of it like Earthworm Jim 2, the graphics for that game looked different between Megadrive/Snes/Saturn etc.
- 1
-
No worries, your screens look nice so far, I'm looking forward to see what you do with the Special Stage too!
-
Hey mate, do you mind using a different lamppost sprite? Because that's the XG one and it was made specifically for our game.
-
Ah, I got confused with this merge, I thought Retro Sonic and RSXB were still too separate games. So I haven't kept up with the news, are levels from Retro Sonic going to be RSXG, in that case?
This is kind of off-topic, but you don't have a Non-Self Booting copy of Retro Sonic for the Dreamcast laying around do you? I can only find the SB ones and I well wanted to make a SBI (Self Boot Inducer) out of the Non-Self Booting one.
Out of the original Retro-Sonic, 3 and a half levels have made the merge. The 'half' is because Dust Hill zone is somewhat similar to XG's Desert Dash. The Retro-Sonic levels have been completely redesigned for XG though.
As for the old Dreamcast demo, I don't have it on hand since I've just recently upgraded my desktop and only copied over stuff I wanted. I'd have to look on the old one to see if it's there. You can just use the files from the existing image though can't you?
-
Yeah ok I may as well spill the beans... Retro Sonic is coming to the ColecoVision!
-
I'm guessing then at the moment that RSXG is taking priority over just the basic Retro-Sonic then?
That's cool. But we need moar Dreamcast ports. *Runs*
What exactly do you mean by 'the basic Retro-Sonic'? If you're talking about the game it got merged with XG, they're one and the same now. If you're talking about the engine, It's always priority one, since I'm using it to make the game
Don't you worry about ports though... way ahead of you. Although dreamcast is becoming less feasible, I'm pushing the capabilities of my software rendering library harder now, and since the DC is too slow to do software rendering at 60fps I'd have to go the hardware rendering route as I did with the last port. However, I don't want to compromise the neato effects that are in RSXG... so I think you'll most likely be playing it on a certain remote swingin' system
-
Man, I heard this same exact answer not too long ago and it ends there. Is there a reason at all? It was being touted around forever, even saying there would be a Dreamcast port. It seemed pretty much set that it'd become an eventual public tool rather than just something that a couple of people that approached him would be able to use.
Does Taxman come here at all? I don't want to sound like I'm begging here as there is the Mettrix engine anyways so it's not a huge issue...but considering it was being promised and then suddenly we only hear about it through other peoples projects now, I think it'd be fair to at least let people know what happened to the tool itself. Considering he even named the scripting or whatever as TaxReciept, it seems odd to give stuff names when it's only gonna be kept to yourself...
Don't consider me pissed, just at a loss on what happened. As it stands, I get the impression the only people that will ever get to use this program will be anyone who messages Taxman and proposes a port of their game to his engine, if it's "worthy" enough(which XG most certainly is .
Yeah, I wouldn't expect to see the RSDK around for a while. My focus is on RSXG, since I'm the leading man behind it now. Euan has actually stepped out, since he's too busy to work on it anymore (so it's actually the merger that saved XG from cancellation in a way ;P). Not that he hasn't already done his share already, with all the zone art that came with the merger.
Also, there's no written documentation with the RSDK at this point. The Nexus gang have learnt it pretty much direct contact with me. Their testing has also given me feedback as to how I could make additions/improvements along the way. If I had to do the same with anyone that wanted to use it, I'd have no time whatsoever. So yeah, perhaps later on... but don't hold your breath for it just yet.
Post your screenshots thread
in Game Project Showcase
Posted
Ok, someone pointed this topic out to me, and I checked every single point of contact I have. No messages from you ever mate.
FYI : I designed Desert Dazzle and Final Fever during the Sonic CD (2011)'s development. That particular screenshot is property of SEGA as it was included in the final product.
I will not give permission to use this, just as SEGA never gives you permission to use other graphics. Whether you choose to ignore intellectual property rights is your call. It would be a shame to have my work recognized by an inferior copy though. (less than half of the artwork is even visible to you, nor the actual level design).
Why not spend some extra time and come up with your own desert level?