Heretic on an 83+ to 84+SE

Got a brilliant program idea? Let us know!

Moderator: MaxCoderz Staff

That_One_Guy
New Member
Posts: 65
Joined: Sun 03 Apr, 2005 7:55 pm
Location: The seventh circle of Hell.
Contact:

Heretic on an 83+ to 84+SE

Post by That_One_Guy »

I think it'd be awesome if someone could do Heretic(an old DOS game) on the 83+ line of calculators. It might be a bit too much to do all the features, so maybe only include the elven wand, ethereal crossbow, the phoenix rod, and the hellstaff.
Truly great madness cannot be achieved without significant intelligence.

http://www.xanga.com/jakku_kun, rants by me.
User avatar
Shadow Phoenix
Calc Guru
Posts: 835
Joined: Mon 03 Jan, 2005 7:54 pm
Location: out there. seriosly.

Post by Shadow Phoenix »

weapons are not the problem, the engine is.
Life is getting better.
User avatar
Dwedit
Maxcoderz Staff
Posts: 579
Joined: Wed 15 Dec, 2004 6:06 am
Location: Chicago!
Contact:

Post by Dwedit »

Gemini?
You know your hexadecimal output routine is broken when it displays the character 'G'.
DarkAuron
Maxcoderz Staff
Posts: 1349
Joined: Sat 18 Dec, 2004 6:53 pm

Post by DarkAuron »

As far as I know, a variable-height raycaster in assembly hasn't been done for a calc yet, and heretic wouldn't be heretic without such. Also most of the enemies in heretic fire slow moving projectiles, which can be maddeningly slow on a calc ontop the raycasting. I don't see it happening unless it was made for 15mhz only.
[Gridwars Score] - E: 1860037 M: 716641 H: 261194
coelurus
Calc Wizard
Posts: 585
Joined: Sun 19 Dec, 2004 9:02 pm
Location: Sweden
Contact:

Post by coelurus »

I'm _still_ waiting for somebody to pick up my variable-height wall routine right here and port it to assembler :) No texturing, but that only makes it hard to see things.

I wonder where the misconception that projectiles and such are so slow to implement was born, it's nearly the easiest and least resource-hogging thing possible. You loop through all objects, test their visibility, update their locations and look for any hits, done.

Collision detection for projectiles is not a huge problem either (mid-size maybe). Create a map-sized buffer that will hold information about what objects reside in each tile. Every time an object moves out of a tile, clear the old tile and setup the new one, unless the tile is already occupied. For 32x32-maps, this will give rather coarse resolution of object occupation, so 'containers' can be allocated from a fixed set when an object is visible. Now, if an object walks into an occupied tile, it will check how big that container is. If there are more than, say, 3 objects in that tile, the object will not enter that tile. Otherwise, it will check its old container and remove itself from it. If the old container is no empty, the container is deleted and the tile is 'nulled'. For the collision-part, simply check what tile a projectile crosses and loop through the container to see what objects could be hit. That is at worst a 3-step loop per projectile and if there are up to 8 projectiles whizzing by, you'd have ~24 tests. That's really cheap in a raycaster which eats hundreds of tests and since there should be no texturing, this game will probably run lots faster than Gemini.

This is getting too fun, I shouldn't get involved in this :wink:
merthsoft
Extreme Poster
Posts: 496
Joined: Tue 21 Dec, 2004 6:49 am
Location: WI

Post by merthsoft »

You should do it, coelurus
Shaun
coelurus
Calc Wizard
Posts: 585
Joined: Sun 19 Dec, 2004 9:02 pm
Location: Sweden
Contact:

Post by coelurus »

I'd love to, but currently, I have two extensive exams and during summer, I wanna concentrate on writing plugins for Sledge. Feels a whole lot more productive.
Besides, even if I'd get some time to pick up some z80-coding, I'd have big troubles choosing between a nice set of ideas I've had going.

Where's the spirit of actually coding one of the coolest 3d-games yet? Stairs, high ledges, fireballs flying around, ugly enemies chasing you... Has the response for developing such a game declined a lot around here, or am I just one of the old guys feeling alone? :)
User avatar
Madskillz
Calc Wizard
Posts: 745
Joined: Fri 17 Dec, 2004 10:22 pm
Location: Wandering around in the Jungle...
Contact:

Post by Madskillz »

no...your not alone Coelurus. I would love to see all that stuff too. :wink: Time is the problem.
The Revolution is here...
Duck
Sir Posts-A-Lot
Posts: 231
Joined: Sat 18 Dec, 2004 3:38 am

Post by Duck »

Sledge? Wasnt your 3d engine called Hades, so have you changed its name? I'm curious how the project is evolving, is there anything new to tell? Your website doesnt give much information unfortunatly.
coelurus
Calc Wizard
Posts: 585
Joined: Sun 19 Dec, 2004 9:02 pm
Location: Sweden
Contact:

Post by coelurus »

I bet some around would love to see a Heretic-style game, but I meant that there are not a lot of people who wanna get their hands dirty :) I'd love to, but as you said, time has become precious, especially now that I've had to 'grow up'...

--- off topic
My plugin-engine is called Sledge now, there were other projects called Hades around so I switched to get around any potential issues with names. Not much has happened lately, been working on plugins for streaming image data to textures in vidmem (should reduce pretty much all hickups at runtime when running around some huge environment with high-rez textures and the only loading time at startup should be minimal). A few minor things left to solve, I'll have to have a few more plugins ready to settle for the proper 'interfacing'. I have to finish off the renderer and everything related to that plus some 'pipeline' from Blender to Sledge (gotta learn Python then :P ) and I should pretty much be able to show things. Sounds easier than it is, gaining motivation for this can be hard :)
---
merthsoft
Extreme Poster
Posts: 496
Joined: Tue 21 Dec, 2004 6:49 am
Location: WI

Post by merthsoft »

So, what does this "Sledge" do? (Doesn't really care that it's off topic right now, if this conversation gets to in depth, jsut make a new topic for it)...
Shaun
Duck
Sir Posts-A-Lot
Posts: 231
Joined: Sat 18 Dec, 2004 3:38 am

Post by Duck »

From what I heard from Coelurus and read from this website, it is a game engine uniquely based on the idea of plugins. These plugins, carrying changes in game behaviour like graphics, shaders, AI, or anything else can be loaded in real-time, which minimizes load times. Sounds great, and I'm curious how this works in practice.
merthsoft
Extreme Poster
Posts: 496
Joined: Tue 21 Dec, 2004 6:49 am
Location: WI

Post by merthsoft »

Wow, I never thought of looking at his site... That looks neat...
Wait, you made Gemini, I never realised that... Wow, I should have though, that's not the first time I've been to that site...
Shaun
coelurus
Calc Wizard
Posts: 585
Joined: Sun 19 Dec, 2004 9:02 pm
Location: Sweden
Contact:

Post by coelurus »

Neat site maybe, but it's practically impossible to look at it using the computers in the university here. Ugly garbage machines we physicists got and that's one of the main reasons I thought of making a less resource-hogging site :)

Anyway, Sledge is a very small DLL (in Linux, it'd be an SO) with a few very basic features (allocating and keeping track of memory and function calls, reading files, logging messages etc) that records a bunch of plugin DLLs that the main app can use. The main idea is to make everything as separated and independent as possible (within reasonable bounds of course, but they can be stretched a lot).

For instance, if I figure that the memory management in Sledge is too crude (it's a simple and very old thing; a paged linked-list pool-allocator, whatever that is :P ), I'd just update the memory management code in the Sledge DLL and *boom*, all plugins and the main app will use the new memory management system. That sounds simple for a hardcoded application, but let's say I've made 4 games. Going through rock-hard specialized code 4 times to figure out how the memory manager has been used can be rather boring. Also, if things go really well and other people use Sledge, they'll have to touch nothing to get the updated memory management, not even recompile a single bit of code!
Imagine that all Unreal Warfare-based games (like 100 games?) could get a performance-upgrade via just one patch.

Image
Golfing stoat for a break.

For a more spectacular scenario, think of a rather graphically intensive game 1-2 years ago. That game will forever look like that unless the developers feel like rewriting the renderer. The nice thing with Sledge here is its plugin design, which will reduce the tendency of things getting too 'far down' and hardcoded. Sledge won't automatically make good renderers, but seeing how things act together with plugins helps a lot in writing a very independent renderer. The current one would be able to be written with the capabilities of computers two years ago and by simply updating the shader-library (a shader in my renderer is a very small 'program' that is run to setup the graphics card to render a bunch surfaces in a specified way, like "diffuse bumpy brickwalls by setting up bumpmapping, some textures and lighting" would be one shader), we'd see all the newest features. Just the same thing as with the memory manager, no game will have to be touched by anybody.

Of course, there is one problem; game data. In order to keep up to date there, one will have to fetch totally new assets (more detailed maps, higher-rez textures etc), but atleast the source code is very manageable. Using parametric data (high-order surface ala nurbs, bezier patches etc) and procedural details (fractal displacement of surfaces, procedurally generated vegetation and cities/villages) can help games from aging too quickly. Plus all this might create less static and nonlinear games

Of course, what really matters in the end is that games are _fun_, but making them look good ain't bad either :)

EDIT: Dear lord, I could've written half of the raycaster discussed earlier instead of posting this...
merthsoft
Extreme Poster
Posts: 496
Joined: Tue 21 Dec, 2004 6:49 am
Location: WI

Post by merthsoft »

Haha, that's a cool pic, and a cool engine idea...
Shaun
Post Reply