Jump to content
A 2021 backup has been restored. Forums are closed and work in progress. Join our Discord server for more updates! ×
SoaH City Message Board

Sonic Nexus 2008 Demo is Out


The Taxman

Recommended Posts

I managed to cut off 2 seconds exactly. There are a couple of places you could cut time if you did it differently, but they look far too acrobatic for me.

My time trial at 52.91 seconds (sorry for the various quality issues, it's my first time making and/or uploading a video):

Make sure that you make it a response to the contest's hub video, Kain.

Also, if you guys want some time attack tips, in act 1, the second wall/cliff-run with the half-circle on top are great for skipping over a large part of the terrain. When you just get over the hill, just jump and you should leap right into the red spring. Make sure that you use the third hole earlier to grab the super shoe box, or else the leap won't be that effective.

Also, the person I was referring earlier (50 seconds) was Strong Bad from SSMB. He has gotten his time in act 1 down to 48.87 seconds. I saw it. :o

Link to comment
Share on other sites

This is slightly off topic but I got to say that the Retro Sonic engine is amazing and I am totally envious of you guys getting to use it. Is there ever going to be a public engine release? I would kill to take Time Twisted and port it to Retro Sonic. Also what language does Retro Sonic use for scripting?

It's my own scripting language, which is sort of a novelty mix of BASIC and C style syntax. I don't have a name for it yet, when I think of something I'll let you know ;P

Overbound, the Retro engine is coded entirely in C++. Doubt they'd ever release it.

I should explain that the actual C++ isn't being touched by the Nexus guys either. They're using the RSDK to do the game (although I've been doing most of the scripting so far, but that should change), and if anything needs adding to the engine, I do it.

Retro Sonic had a Dreamcast version, is Nexus going to have one too?

Who knows? ;) Because the game files are platform independent Nexus could run on any platform that Retro-Sonic is compiled for

Link to comment
Share on other sites

I'd say it probably can't find the necessary data files. I tried it and sure enough, it just gives a black screen. I'm not sure why this would matter since it's basically just like any other folder... weird. Runs fine when you open the folder from the quick launch bar as well.

Not sure if you've figured this out yet or not, I haven't read all the pages. But this doesn't just happen with Nexus. I've found it happens with a lot of games. The problem is that it opens the file, but I believe it runs it in a temp folder (the app only you selected) and none of the other files. This happens with all games I've tried that rely on other files and especially in other folders.

Windows is a ___ like that.

By the way, this is by far the best retro game I've seen to date. Let's see how XG runs up against this. Must say though, as far as entertaining, classic games go. This absolutely cuts the mustard. That mustard was sliced right in half.

Edit:

Wow, I was censored.

Link to comment
Share on other sites

Wow! Pretty implessive work, but never, please NEVER put badnics right on the way when you are in running section.

What convinced you that we wanted to make anything completely devoid of challenge?

There are very few instances in the real Sonic games where you have segments completely devoid of enemies, and we are emulating Sonic CD here. Sonic CD doesn't play to the conventions of Sonic 2 and Sonic 3. It's more like Sonic 1, where they'll have a giant slope and then have a roller ball come up from behind you while on the most free-range downward slope ever and stomp your ass when you barely suspect it.

Some enemy placements, sure, I'll agree were rushed and untested. Like the ones that snow you while you want to glide on those parachutes. A couple might need to be moved back a little, like some of the ones that show up right after landing from a potentially loooooong jump. Personally though, I'm not interested in any kind of long strip devoid of playing an actual game instead of just holding right.

Link to comment
Share on other sites

Just a little off-topic here.

So, just how is TaxReceipt? I'm you say it was something like BASIC and C style syntax. So, will this be hard to pick up.

//------------Sonic Nexus Yellow Spring---------------//
//----Scripted by Christian Whitehead "The Taxman"----//

sub Player

	switch Object.PropertyValue
	case 0 //Up Spring

		PlayerObjectCollision(C_BOX,-16,0,16,16)

		PlayerObjectCollision(C_TOUCH,-15,-2,15,4)
		if CheckResult==1
			Object.Value0=8
			Player.State=1
			Player.Gravity=true
			Player.YVelocity=-655360
			Player.Animation=11
		end if

		break
	case 1 //Right Spring

		PlayerObjectCollision(C_BOX,-16,-16,0,16)

		PlayerObjectCollision(C_TOUCH,-4,-15,2,15)
		if CheckResult==1
			Object.Value0=8
			Player.Speed=655360
		end if

		break
	case 2 //Left Spring

		PlayerObjectCollision(C_BOX,0,-16,16,16)

		PlayerObjectCollision(C_TOUCH,-2,-15,4,15)
		if CheckResult==1
			Object.Value0=8
			Player.Speed=-655360
		end if

		break

	case 3 //Down Spring

		PlayerObjectCollision(C_BOX,-16,-16,16,0)

		PlayerObjectCollision(C_TOUCH,-15,-4,15,2)
		if CheckResult==1
			Object.Value0=8
			Player.State=1
			Player.Gravity=true
			Player.YVelocity=655360
		end if

		break

	case 4 //Up Right Diagonal Spring

		PlayerObjectCollision(C_TOUCH,-12,-12,12,12)
		if CheckResult==1
			Object.Value0=8
			Player.State=1
			Player.Gravity=true
			Player.Speed=1048576
			Player.YVelocity=-655360
			Player.Animation=11
		end if

		break

	case 5 //Up Left Diagonal Spring

		PlayerObjectCollision(C_TOUCH,-12,-12,12,12)
		if CheckResult==1
			Object.Value0=8
			Player.State=1
			Player.Gravity=true
			Player.Speed=-655360
			Player.YVelocity=-655360
			Player.Animation=11
		end if

		break

	case 6 //Down Right Diagonal Spring

		PlayerObjectCollision(C_TOUCH,-12,-12,12,12)
		if CheckResult==1
			Object.Value0=8
			Player.State=1
			Player.Gravity=true
			Player.Speed=655360
			Player.YVelocity=655360
		end if

		break

	case 7 //Down Left Diagonal Spring

		PlayerObjectCollision(C_TOUCH,-12,-12,12,12)
		if CheckResult==1
			Object.Value0=8
			Player.State=1
			Player.Gravity=true
			Player.Speed=-655360
			Player.YVelocity=655360
		end if

		break
	end switch

end sub

sub Draw
	if Object.Value0==0
		DrawSprite(Object.PropertyValue)
	else
		Object.Value0--

		switch Object.PropertyValue
		case 0
			DrawSprite(8)
			break
		case 1
			DrawSprite(9)
			break
		case 2
			DrawSprite(10)
			break
		case 3
			DrawSprite(11)
			break
		case 4
			DrawSprite(12)
			DrawSprite(16)
			break
		case 5
			DrawSprite(13)
			DrawSprite(17)
			break
		case 6
			DrawSprite(14)
			DrawSprite(18)
			break
		case 7
			DrawSprite(15)
			DrawSprite(19)
			break
		end switch
	end if
end sub

sub Startup
	LoadSpriteSheet("NexusGlobals/Items.gif")

	//Spring Resting Frames
	SpriteFrame(-16,-16,32,32,84,1)
	SpriteFrame(-16,-16,32,32,84,34)
	SpriteFrame(-16,-16,32,32,84,67)
	SpriteFrame(-16,-16,32,32,84,100)
	SpriteFrame(-16,-16,32,32,84,133)
	SpriteFrame(-16,-16,32,32,84,166)
	SpriteFrame(-16,-16,32,32,84,199)
	SpriteFrame(-16,-16,32,32,84,232)

	//Spring 'Boing' Frames
	SpriteFrame(-16,-16,32,32,150,1)
	SpriteFrame(-16,-16,32,32,150,34)
	SpriteFrame(-16,-16,32,32,150,67)
	SpriteFrame(-16,-16,32,32,150,100)

	SpriteFrame(-16,-10,28,26,117,133)
	SpriteFrame(-13,-10,28,26,117,160)
	SpriteFrame(-16,-16,28,26,146,133)
	SpriteFrame(-13,-16,28,26,146,160)

	SpriteFrame(-6,-20,28,28,198,257)
	SpriteFrame(-22,-20,28,28,198,286)
	SpriteFrame(-6,-8,28,28,227,257)
	SpriteFrame(-22,-8,28,28,227,286)

end sub

sub RSDK
	LoadSpriteSheet("NexusGlobals/Items.gif")
	SetEditorIcon(Icon1,0,-16,-16,32,32,84,1)
end sub

Just for a simple example.

Link to comment
Share on other sites

The first one checks for collision within the object's complete boundary.

The second one checks for collision at the very top, because it's an up spring.

It looks intuitive. My only issue is that it doesn't use braces, but is instead indent-sensitive, which is something I'd definitely have to get used to.

Link to comment
Share on other sites

Well, what you're seeing there is two instances of the same function called slightly differently. The first one is performing a solid "box" collision and the second one is a "touch" collision. There's two because the spring is solid on some sides and bouncy on only 1. DW, that example is also a little out of date now that I added a few things...

Also, the code isn't indent sensitive... but you should indent it anyway for the sake of neatness!

Link to comment
Share on other sites

Just guessing, because I haven't had the oportunity to talk with it with the taxman, but:

The first collision call actually sets the object's bounding box. Throught that call, the player object then check's out if it's inside the bounding box region and gets the player box out of it. tl;dr: performs the collision penetration response with the object.

The second call actually tests a collision without any response, just sets the results to 1 if the boxes happen to be overlapping.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...