Register an account now to get access to all board features. After you've registered and logged in, you'll be able to create topics, post replies, send and receive private messages, disable the viewing of ads and more!

I made load from savegam%.tek files, but with one hack for animateptr
Somebody can tell me, why (int) value of sectortype array is equals 14703168 and (int) of wall array - 14046272?
Can I calc this value in Java? it's not like the length of the struct array

There are a bunch of bugs that plague the main game in case you are interested on fixing those:
- You generally lose all your weapons on map changes
- Sector -1 (really easy to clip in to) crashes the game. (major)
>One easy instance is to get crushed in the train doors.
- Mouse strafing allows you to move super fast
- New game function is kinda broken and doesn't reset things properly

There are some more minor ones such as music track resetting on save load but that crash bug is the most major one.
I can think of like 3 places where I can perform it easily because Jake Cardigan moves like the wind.

Also one thing to note with music, there are multiple audio card variants on some tunes which change slightly.
Stage2 (Dallas Di Marco) has a completely different tune if you use adlib instead of GM.
Oh yeah, game has some special handling if it fails save loads, it will put you in a dummy map with a single carpet and brick walls, something to take in to account.

I made load from savegam%.tek files, but with one hack for animateptr
Somebody can tell me, why (int) value of sectortype array is equals 14703168 and (int) of wall array - 14046272?
Can I calc this value in Java? it's not like the length of the struct array

You're casting a pointer to an integer, so the value is going to be an unsigned memory address that won't have any meaning to you.

Thanks for your question, but it's not true, because as I understood (int)sector gave constant value and it works fine with 14703168 .
There is a code from load save-file method (see my example in next post)

This ptr points to walltype structure (at first I don't why it points to walltype and not to sectortype)
some manipulations I managed to get wallid and coordinates of wall. I get this with by adding the bytes of animateptr with 14703168

So, one example...read(fil,animateptr,MAXANIMATES<<2);
We read first animateptr variable and got -656932. This is INT variable (4bytes)...
We know in advance that it is a pointer to the coordinates of the wall, therefore we need to subtract wall pointer variable....this is a 14046272 and after this we need to add sector poiniter variable - 14703168
So, we have-656932 - 14046272 + 14703168 = -36
And now we got 36....struct of walltype is equals 32, therefore int wallid = 36 / 32...we got wallid = 1;
int offset = 36 % 32 ...we got 4, this is a Y coordinate (0 - 3 bytes - X coord, 4 - 7 bytes - Y coord)

And so, we have pointer to Y coordinate of Wallid = 1

Thats all....but I still want to know why array of walltype is equals 14046272 and array of sectortype is 14703168...this is a constant values which newer changes...but I want to calc it by myself, and dont want to define this values as digits

If you need extra testing on PC, let me know.
I used to speedrun this game and I can easily complete it in under 20min without that mouse movement glitch as needed.

Pretty much know the game inside-out even though it's been like 2 years since I actively played this.

That is excellent Btw I never finished Tekwar, but I remember that I like to play it when I was 12 years old Therefore I need your experience
Im using old version of Libgdx, which has bug with mouse, therefore I think the first release will be without mouse support and maybe without music.

No worries, It's basically "red herring - the game" when it comes to progression. I recall that it took me over 6hrs on the first try, did a race against a friend and we both were really experienced with older FPS games.
My guess is that JF probably didn't have interest in the game as it's one of the worst build games in many ways and very unfriendly to beginners.

However it did pioneer a lot of concepts and was very ambitious. Which is why I'd love to do some simple map tweaks and removing some of those red herrings / adding actual sense of progression aside from screaming in joy when you find that blue keycard after going between submaps for hours and killing every NPC in sight.

I mean, the game had NPCs with unique AI personalities, police, kinda interesting gun concepts, non-linear progression where some extra keycard could give you a shortcut to the TekLord's lair later, underwater bases and everything but instead of having actual diving, they simply teleported you underwater and no difference in visuals or physics
Too bad that almost none of those are fully implemented and another 6 months of polish on the game could have made it very different I say.

Are you porting this to a newer build engine version as well? Would be interesting to have slopes to mess around with, this version still has that groudraw.

Also I used to play this without a mouse for a long time (WSAD + arrows) due to the poor mouse code so it's no biggie.

Don't worry, i'm an author of BloodCM It's will be not too hard to replace my BloodCM to my Build Engine
I just saw PolymerNG topic, that's your project? If you using shaders, your renderer works on GL20?

Don't worry, i'm an author of BloodCM It's will be not too hard to replace my BloodCM to my Build Engine

BloodCM is great project, and I was not aware that you are the author of that project. Maybe you will get it all done and not have nasty legacy hanging over your head . I kinda feel my point still stands though. You leveraged a lot of work that the eduke32 team spent a lot of time developing, and you will have to code all of that yourself. I just think, a better approach would be using LLVM and Enscripten to compile EDuke32 to Javascript.

M210, on 29 June 2016 - 07:53 AM, said:

I just saw PolymerNG topic, that's your project? If you using shaders, your renderer works on GL20?

PolymerNG is my project and is Direct3D 11.1. It uses shaders, there is no fixed function nastiness in PolymerNG. Looking back at a video I did with PolymerNG and BloodCM running on the Xbox One, I guess I did notice you were the author but for some reason in this topic I didn't put two and two together . I probably should have asked you before using BloodCM in a PolymerNG XB1 vid, but it would be awesome if you would help move BloodCM over to PolymerNG. Blood and TekWar would look fantastic with the new deferred lighting system I have in place.

D3D 11 also using VBO as GL20...I just don't know how to separate dynamic sectors from static sectors....because if you will moving any dynamic sectors, therefore in static sector will open a hole and for close a hole it will need to use tesselator and rebuild a mesh of static sector....there is a my main problem and I don't risk to write GL20 renderer I just know, that GLUTesselator takes a long time to transform sector to mesh (about 100ms)

D3D 11 also using VBO as GL20...I just don't know how to separate dynamic sectors from static sectors....because if you will moving any dynamic sectors, therefore in static sector will open a hole and for close a hole it will need to use tesselator and rebuild a mesh of static sector....there is a my main problem and I don't risk to write GL20 renderer I just know, that GLUTesselator takes a long time to transform sector to mesh (about 100ms)

There is no dynamic and static sectors from the designers point of view. That is based on old information. The engine treats all sectors as static sectors until they move, then the engine handles those sectors slightly differently, but as a content developer you don't have to worry about that. The only thing I've asked content developers to do is not have a lot of moving sectors in view at once. The tesselation code I'm using which is heavily based on Polymer(and does use GLUtesselation) doesn't take long to execute at all so I'm not sure were you got 100ms from. So yes PolymerNG makes heavy use of VBO's, and performance wise that part runs great(less then 1ms in BloodCM, and less then 7ms in clcoast). What I've found is using dynamic index buffers to render the scene instead of using a shit of draw calls also speeds things up.

The sector should only have to get retesselated when another point gets added to the sector, which should only happen in the editor

But what's need to do, if another point is moving?
The first thing you can think of - it's run loop through the array of VBO array and change the coordinates of the moving point...but it will be very slow, or use a tesselator......or may be I don't know something?

Or second hint - don't make holes under dynamic sectors, but it can make other bugs with up/down elevators...so I still thinking)

But what's need to do, if another point is moving?
The first thing you can think of - it's run loop through the array of VBO array and change the coordinates of the moving point...but it will be very slow, or use a tesselator......or may be I don't know something?

Or second hint - don't make holes under dynamic sectors, but it can make other bugs with up/down elevators...so I still thinking)

I actually took that out of my original post because that was incorrect. If you want to see how it works, you can check out my Build3D.cpp which in the public repository is slightly out of date, but shows how this part works. Build3D in PolymerNG is a combination of Polymer and some Polymost map -> triangle conversion code that is Rendering API agnostic. It's a very self contained module. So you should be able to use it as a base for your java work.

icecoldduke, thanks I will try it But I willl works o renderer after first beta release I completed load/saves state now and working on sounds (i think its almost done too)
After that I want to make musics and fix main menu smacker bug (it's seems wrong picture offset for byte array)