Author Topic: Neutopia 3D ;)  (Read 953 times)

nodtveidt

  • Guest
Neutopia 3D ;)
« on: October 05, 2012, 04:35:52 PM »
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.











nodtveidt

  • Guest
Re: Neutopia 3D ;)
« Reply #1 on: October 05, 2012, 04:38:54 PM »
I hope the images show up. :)

TheClash603

  • Hero Member
  • *****
  • Posts: 4054
Re: Neutopia 3D ;)
« Reply #2 on: October 05, 2012, 05:40:19 PM »
Very cool.  Port it to the Sega Saturn :)

FiftyQuid

  • Hero Member
  • *****
  • Posts: 1881
Re: Neutopia 3D ;)
« Reply #3 on: October 05, 2012, 05:50:01 PM »
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.

nodtveidt

  • Guest
Re: Neutopia 3D ;)
« Reply #4 on: October 05, 2012, 06:21:16 PM »
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.

hizaygizirlz

  • Sr. Member
  • ****
  • Posts: 376
Re: Neutopia 3D ;)
« Reply #5 on: October 06, 2012, 12:39:40 PM »
Very cool.
Gypsies did it.

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

FiftyQuid

  • Hero Member
  • *****
  • Posts: 1881
Re: Neutopia 3D ;)
« Reply #6 on: October 06, 2012, 04:15:33 PM »
@ 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.

nodtveidt

  • Guest
Re: Neutopia 3D ;)
« Reply #7 on: October 06, 2012, 07:34:36 PM »
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.

Code: [Select]
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".

Code: [Select]
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:

Code: [Select]
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.

Code: [Select]
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:

Code: [Select]
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. :)

nodtveidt

  • Guest
Re: Neutopia 3D ;)
« Reply #8 on: October 06, 2012, 09:49:07 PM »
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. ;)

esteban

  • Hero Member
  • *****
  • Posts: 24013
Re: Neutopia 3D ;)
« Reply #9 on: October 07, 2012, 04:51:04 AM »

Pretty effective, imo. :)



Absolutely. It looks very nice!

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 .

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

Keep up the awesomeness.
  |    | 

nodtveidt

  • Guest
Re: Neutopia 3D ;)
« Reply #10 on: October 07, 2012, 07:24:03 AM »
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. :)

Nando

  • Hero Member
  • *****
  • Posts: 3193
Re: Neutopia 3D ;)
« Reply #11 on: October 07, 2012, 07:33:57 AM »
Can't see the images...

esteban

  • Hero Member
  • *****
  • Posts: 24013
Re: Neutopia 3D ;)
« Reply #12 on: October 07, 2012, 08:24:28 AM »
Can'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.



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. :)


As Aristotle (and other Greek philosophers) often said, "Rainbow Drop is a bitch."

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.

  |    | 

Nando

  • Hero Member
  • *****
  • Posts: 3193
Re: Neutopia 3D ;)
« Reply #13 on: October 07, 2012, 08:32:57 AM »
i can see them on my phone. Go figure.

very cool!

 now to read the rest of the posts.

esteban

  • Hero Member
  • *****
  • Posts: 24013
Re: Neutopia 3D ;)
« Reply #14 on: October 07, 2012, 09:32:18 AM »
i can see them on my phone. Go figure.

very cool!

 now to read the rest of the posts.




  |    |