RIP to BT Garner of MindRec.com... He passed away early 2023 from health problems. BT was one of the top PCE homebrew developers and founder of the OG Turbo List, then PCECP.com. Condolences to family and friends.
IMG
IMG
Main Menu

Neutopia 3D ;)

Started by OldRover, 10/05/2012, 11:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

OldRover

This is something I mess around with occasionally in my spare time... whenever that happens. :) Since I have quite the interest in Heretic modding, I figured it might be fun to turn Neutopia into a first-person shooter. Here's a little bit of how it's turned out so far.

/n13d1.png
/n13d2.png
/n13d3.png
/n13d4.png
/n13d5.png
/n13d6.png
/n13d7.png
/n13d8.png
/n13d9.png
/n13d10.png
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

OldRover

I hope the images show up. :)
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

TheClash603

Very cool.  Port it to the Sega Saturn :)

FiftyQuid

That is cool.  How long does something like this take you?  I have zero knowledge on stuff like this.
I'm busy playing pinball, but I still drop by to visit.

OldRover

It's been a few weeks on and off over the course of some months now... this kind of thing is impossible with the original game engine, so this is using the GZDOOM engine with some high-resolution textures and model packs for Heretic, plus some sprites I whipped up myself (mainly decorations and NPCs). Stuff like this takes awhile, especially to do it right, and since this is a lot more advanced than your typical classic first-person shooter, it's taken even longer than usual just to get to this point.

It's required tons of ACS scripting, and almost every object in the game is custom using DECORATE definitions. The "bridge over water" isn't possible in most source ports, so GZDOOM is required for that, plus for the dynamic lights that are used all over the place. In the dungeons, the rooms are rather dark, so I created a dynamic light that follows the player. Boom bombs work differently... you toss them and they explode on impact (they will blow your ass up too so you gotta watch it) but they still blow up walls (this required a LOT of special tricks). They're also considered a weapon here rather than an option. The fire wand works roughly the same as in the base game so far... but I've only added the short-distance fireball attack for now.

I've only added two monsters for now... the slime and the dragon boss. Slimes are more aggressive here than they are in the original game, and the dragon boss isn't so predictable anymore. It still shoots four fireballs at you, but the time isn't finite anymore, and it also has a "low health" attack where it spits tons of fireballs in desperation. I didn't have any other dragon sprite sets so I just reused the sprites from the original game, though its fireballs are from something else.

And then there's the maps... there's 18 of them in total. The Shrine has its own map, then each sphere has a map, then all the houses for each sphere share a map, then each crypt has its own map, and then there's a map for the final battle in the frozen north. The Shrine is the most complete so far... I've not put in the stairways to the other spheres, just the front door. The Land Sphere has about 80% of its geometry mapped so far, but only one "screen" has a moving rock event (where you get the fire wand, of course).

So yeah... plenty left to do. :) It would be years to bring this to completion, and it's very low-priority since I already have other projects with much higher priority (JB and Monolith right now) but this is still a fun distraction when I can't dedicate huge amounts of time to PCE coding.
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

hizaygizirlz

Gypsies did it.

 Got no luv for the krackers only slugs for the krackers!

FiftyQuid

@ Old Rover - You have infinite patience.  I wish I had the time and skill do accomplish something like this.
I'm busy playing pinball, but I still drop by to visit.

OldRover

This isn't too difficult once you get over the initial learning curve... it just becomes an issue of time... so yeah, patience is required. :)

Here's a quick example... the code for the Slime.

ACTOR Slime 10100
{
SpawnID 1
Health 100
Radius 19
Height 30
Mass 100
Speed 2
PainChance 255
Damage 1
RenderStyle Translucent
BloodColor "44 44 99"
Alpha 0.5
Monster
DropItem "TenCoin", 128
DropItem "FiftyCoin", 64
+FLOORCLIP
+QUICKTORETALIATE
+LOOKALLAROUND
+JUSTHIT
Obituary "%o was dissolved by the slime."
States
{
Spawn:
SLIM ABCDEFGH 2 A_Look
Loop
See:
SLIM ABCDEFGH 2 A_Wander
SLIM ABCDEFGH 2 A_Chase
Loop
Melee:
SLIM AB 2 A_FaceTarget
SLIM C 2 A_CustomMeleeAttack(random(1, 8), "slime/attack", "none")
SLIM DEFGH 2 A_FaceTarget
Goto See
Death:
SLIM A 1 A_Burst("HereticImpChunk1")
SLIM A 1 A_NoBlocking
TNT1 A -1
Stop
}
}

Not too complicated and reuses the movement sprites for its attack to simulate the "bump damage" effect of the original game (though it's not perfect). Its movement isn't overly aggressive but it's moreso than the original... I mixed "chase" and "wander" functions to give the effect of "sometimes I'll chase ya and sometimes I'll wander around like a dumbass" like in the original, but it seems like it's more of a chaser here. When you kill it, it explodes into bloody chunks. I haven't added the cherry pickup item yet so it's not yet in the drop list (the original Slimes occasionally drop cherries as well as 10 and 50 coins).

Coding the coins was a bit trickier... the game engine isn't really designed for this kind of game, so I had to utilize a feature which wasn't really being used otherwise... the "scorekeeper".

ACTOR TenCoin : ScoreItem 10410
{
Radius 32
Height 64
RenderStyle Add
Alpha 0.25
Inventory.Amount 10
inventory.pickupmessage "10 gold"
inventory.pickupsound "misc/buyit"
States
{
Spawn:
COIN ABCDEFGHIJKLM 2
Loop
}
}

The ScoreItem class automatically adds Inventory.Amount to APROP_Score, which you can then read using the GetActorProperty function and utilize however you want.

One other fun thing was the crypt key... it's not a normal item, and I can't really utilize the native Key class, so it became a mixture of DECORATE magic and ACS scripting. The DECORATE code goes like so:

Actor CryptKey : FakeInventory 10404
{
Height 32
Radius 10
inventory.pickupmessage "Key to the crypt"
inventory.pickupsound "misc/p_pkup"
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE
States
{
Spawn:
KEY1 A 2 Bright
KEY1 A 2
KEY1 A 2 Bright
KEY1 A 50
Loop
}
}

When the key is placed on the map, it's given a Thing action which calls an ACS script.

script 3(void)
{
// picked up the crypt key!
cryptkey1 = 1;
}

"cryptkey1" is a world global, so it's saved when you move between maps. Of course, there's 7 others. And then there's the boss door... since it's also not bound to a normal Key class, it also requires special scripting, and it does so by way of a linedef Special which calls another ACS function:

script 4(void)
{
// open the door to the boss room
if (cryptkey1 == 1)
{
Door_Open(12,12);
} else {
print(s:"You need the crypt key to open this door");
}
}

Again, pretty straightforward and simple. Of course, all of this takes time to learn and there's a lot of details. :)
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

OldRover

Oh, and I took a video demonstrating walls being blown up...
That was the first real challenge in this whole process... it required creating a custom Actor with a large radius and height that can only be affected by a certain damage type, and placing it into a sector with 0 height... you toss the bomb and it blows up, and it has the correct damage type, so it "kills" the actor, which in turn triggers its special action, which is to immediately raise the ceiling of the affected sector so it gives the appearance of the wall disappearing. Also, the actor's death state generates a whole mess of rock sprites (using A_TossGib with a frame time of 0, so multiples can be generated in the same frame) to give the appearance of the wall being blown to bits. Pretty effective, imo. :)

Oh... and your boom bombs no longer blow you up... same behavior as in the original game. ;)
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

esteban

Quote from: OldRover on 10/07/2012, 04:49 AMPretty effective, imo. :)
Absolutely. It looks very nice! :pcgs:

Anyway, I love this side project you are working on.

PLEASE PLEASE PLEASE work on seabloon next! I'd love to see how you handle seabloon's ascent/descent into the water :pcgs:.

ASIDE: Did you ever read my silly rant about Neutopia's blatant "Octorok Envy"?

Keep up the awesomeness. :pcgs:
IMGIMG IMG  |  IMG  |  IMG IMG

OldRover

Oh, Seabloon will be a cinch. :D I'll add him in next. My next real challenge will be implementing the Rainbow Drop... that's gonna be a real nightmare. It's probably gonna be the single most difficult aspect of this whole idea...although I have a new idea on how to handle it. Right now, water areas are blocked by impassable lines... I might be able to make a modification to the PlayerPawn to prevent the character from walking over ledges that are too tall, and then implement a sprite bridge that is activated with a linedef special action. It's a long shot, but it might be the only shot that works. :) It's either that or try to get all fancy with linedef blocking and 3D floors... which would probably look nicer in the long run but would be vastly more complicated to pull off. Of course, I don't even have to worry about that until I get into sphere 2, and I'm still in sphere 1 right now so no worries for now. :) Mr. Seabloon, you're next. :)
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

Nando

Can't see the images...

esteban

Quote from: Nando on 10/07/2012, 02:33 PMCan't see the images...
Step one: Finish flan.
Step two: Turn off VCR.
Step two-point-five: Launch browser on netbook.
Step three: Hit "refresh" on browser (or use command keys).
Step nine: Enjoy the carnage.



Quote from: OldRover on 10/07/2012, 02:24 PMOh, Seabloon will be a cinch. :D I'll add him in next. My next real challenge will be implementing the Rainbow Drop... that's gonna be a real nightmare. It's probably gonna be the single most difficult aspect of this whole idea...although I have a new idea on how to handle it. Right now, water areas are blocked by impassable lines... I might be able to make a modification to the PlayerPawn to prevent the character from walking over ledges that are too tall, and then implement a sprite bridge that is activated with a linedef special action. It's a long shot, but it might be the only shot that works. :) It's either that or try to get all fancy with linedef blocking and 3D floors... which would probably look nicer in the long run but would be vastly more complicated to pull off. Of course, I don't even have to worry about that until I get into sphere 2, and I'm still in sphere 1 right now so no worries for now. :) Mr. Seabloon, you're next. :)
As Aristotle (and other Greek philosophers) often said, "Rainbow Drop is a bitch." :pcgs:

I'm glad seabloon won't be a challenge for you. I always enjoyed how pissed-off seabloon was--charming for a character design that is constrained to such a tiny sprite size.
IMGIMG IMG  |  IMG  |  IMG IMG

Nando

i can see them on my phone. Go figure.

very cool!

 now to read the rest of the posts.

esteban

Quote from: Nando on 10/07/2012, 03:32 PMi can see them on my phone. Go figure.

very cool!

 now to read the rest of the posts.
:pcgs:
IMGIMG IMG  |  IMG  |  IMG IMG

OldRover

#15
/seabloon.png

I blew the sprite up 4 times its original size and manually smoothed it out a bit, then coded its actor definition. Since there's only one projectile coded in for now, I just gave it that one for the time being, but it'll get a custom one later on. Also, the range is too great for the player to be able to stab it, so it's gonna need the firewand or bombs to kill now.

When testing it, one of them got caught in the crossfire, so they started shooting at each other instead of the player. Oh, and they also started toasting the Slimes. :)
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

OldRover

#16
The normally-sized one wasn't quite large enough so I gave him a 2X scale in the code. Now he looks positively menacing... and he has his Bloonball attack. :)

/seabloons.png

One interesting effect of this right now is that you can use the Slimes as a "shield"... the Bloonball will hit them if they're in the line of fire. This doesn't match the original behavior, so I'll likely tweak some parameters here and there to make it work as par the original.

And with that... I'm gonna put this down for a bit... it's time to get back to PCE coding. :)
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

esteban

Quote from: OldRover on 10/07/2012, 08:09 PMThe normally-sized one wasn't quite large enough so I gave him a 2X scale in the code. Now he looks positively menacing... and he has his Bloonball attack. :)

...

One interesting effect of this right now is that you can use the Slimes as a "shield"... the Bloonball will hit them if they're in the line of fire. This doesn't match the original behavior, so I'll likely tweak some parameters here and there to make it work as par the original.

And with that... I'm gonna put this down for a bit... it's time to get back to PCE coding. :)
Absolutely gorgeous! The fact that you already implemented seabloon's attack makes me smile :pcgs:.
IMGIMG IMG  |  IMG  |  IMG IMG

OldRover

He rises out of the water, spits two balls at ya, then drops back down in the water and moves to a random location on the "screen"... just like in the real thing. :)

ACTOR Seabloon 10103
{
Health 200
Radius 32
Height 64
Mass 100
Speed 2
PainChance 255
Damage 1
Monster
Scale 2
+FLOORCLIP
+QUICKTORETALIATE
+LOOKALLAROUND
+JUSTHIT
+NOINFIGHTING
Obituary "%o was pegged by Seabloon."
States
{
Spawn:
TNT1 A 2 A_Look
Loop
See:
SEAB GFEDCBA 3
SEAB A 5
SEAB H 5
SEAB A 5 A_FaceTarget
SEAB H 5 A_CustomMissile("Bloonball", 100, 0, Random(-8, 8), 0)
SEAB A 5
SEAB H 5
SEAB A 5 A_FaceTarget
SEAB H 5 A_CustomMissile("Bloonball", 100, 0, Random(-8, 8), 0)
SEAB A 5
SEAB H 5
SEAB ABCDEFG 3
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Wander
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Wander
Loop
Death:
TNT1 A 1 A_Burst("HereticImpChunk1")
TNT1 A -1
Stop
}
}

ACTOR Bloonball
{
Radius 3
Height 3
Speed 15
Scale 1
Damage 7
Projectile
+RANDOMIZE
+ROCKETTRAIL
+FORCEXYBILLBOARD
DamageType Magic
Obituary "%o was splattered by a bloonball."
States
{
Spawn:
SEAB X 1 Bright
SEAB X 1
Loop
Death:
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
SEAB X 1 A_FadeOut(0.1)
Stop
}
}

Every screen of the original game is represented by a monster-blocked segment of the map, so enemies can only exist in the "screen" they originally existed on in the real thing... they can never leave the area they're intended to be in. Here's the partially finished map layout for the first sphere that shows what I mean:

/n3dmap1.png

The purple lines indicate the "screen" boundaries... they block monsters as well as sounds, so battle sounds can only be heard within the confines of the segment the player is in (for monsters that also activate on sound rather than sight alone). The green lines are horizon lines... that gives the appearance of the infinite sea. The solid white lines are player and monster blocking lines, but since I tweaked the PlayerPawn actor in preparation for the Rainbow Drop, I can remove the player blocking portion since now the player cannot cross lines that link to sectors with more than 32 units of difference in height.
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

_Paul

I'd like to see it using the original low-res graphics as textures.

Nando

QuoteI'd like to see it using the original low-res graphics as textures.
I want to see it using modified homage cartoony textures. The WindWaker of Neutopia...3D - no S  :D

I betcha we can get geise to do it ;)

jlued686

This is really cool! I always wondered what some of my favorite TG16 games would look like in 3D.

Thanks for sharing!

OldRover

QuoteI'd like to see it using the original low-res graphics as textures.
That might look horrible... :lol:

This is what happens when you use unmodified sprites...

/n3d-deadcows.png

...kinda yuck. :lol:
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

_Paul

Would resizing them to a higher resolution (without interpolation) work?

Arkhan Asylum

just add scanlines!
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

esteban

Quote from: OldRover on 10/09/2012, 01:51 AM
QuoteI'd like to see it using the original low-res graphics as textures.
That might look horrible... :lol:

This is what happens when you use unmodified sprites...

/n3d-deadcows.png

...kinda yuck. :lol:
I hear you...but I'd take those yucky sprites over nothing. :pcgs:
IMGIMG IMG  |  IMG  |  IMG IMG

reno5


wmacmonagle

+1  Cant wait to see how it turns out after all done.
Arcade Line Up: UDOT, Multi-Vector Duel, Tempest Multi, Mini-Galaga, Z-Hyperspin, X360 Blast City, Spiderman Pin, 96 in 1 PacMan

esteban

Quote+1  Cant wait to see how it turns out after all done.
I don't know if ROVER has worked on this, but I, too, am curious about any further developments. EVEN IF IT WERE SIMPLY A GHOSTCLOTH or a SNAKID populating a fitting environment... :pcgs:
IMGIMG IMG  |  IMG  |  IMG IMG

OldRover

I haven't worked on this for some time... other things have priority, and SLADE3 stopped working on my system anyway so even if I wanted to work on it, I'd have to find another pwad editor.
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

Jabberwok

Working on this or not... Respect man  =D> =D> =D>

Xak

I LOVE IT, I LOVE YOU!!!! amazing work! Will it be first person? I'd love it 3rd person kinda like Virtual Hydlide, but hey beggars cant be princes... err i mean choosers
Im a real life Sadler, just take me to the nearest item shop.

I have aspergers, and am a recovering Tonicholic

esteban

Quote from: Xak on 10/27/2013, 12:27 AMI LOVE IT, I LOVE YOU!!!! amazing work! Will it be first person? I'd love it 3rd person kinda like Virtual Hydlide, but hey beggars cant be princes... err i mean choosers
It will be a side quest in the upcoming horizontal shoot-em-up, Lucretia.
IMGIMG IMG  |  IMG  |  IMG IMG

Alt-NintegaKorgull

Zelda Ocarina of Time came out 20 years ago broski. Where have you been? :)

Arkhan Asylum

lol.

definitely nintega.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

OldRover

Holy necropost, Batman... :lol:
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

turboswimbz

Quote from: The Old Rover on 10/26/2017, 03:54 PMHoly necropost, Batman... :lol:
Xak, Nintga, Wmac, this thread has had all the greats!  Miss chattin with you Rove, can't wait for Games 2 and 3.

NW: Hey, I made it on this psycho's Enemies' List, how about that ?? ;)
BT: Look at how the fake SFII' carts instantly sold out and were immediately listed on eBay before the flippers even took possession. Look at Nintendo's overpriced bricks. Look at the typical forum discussions elsewhere. You can't tell most retro gamers anything!