Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Gustavo6046

Zeureka: Eureka fork with ZetaBot pathnode support (ALPHA)

Recommended Posts

image.png.227d389d413b5f9c57fb4efceb1f16e3.png

 

This is a map editor which has ZetaBot path node capabilities. It's kind of like adding path nodes in UnrealEd, but easier (and you don't need to rebuild paths, as those are dynamic!).

 

As many of you may know, Eureka is a map editor that works on Linux, among other platforms. I am not able to make builds for other platforms, currently, but I will try to do so using a Windows Server 2008 virtual machine I have got to run with Visual Stupido.

 

Capabilities:

  • You can use all of the supported navigation types (including relatively internal ones, like NT_TARGET).
  • There is functionality to automatically plop nodes in basic locations (the approximate middle of subsectors, more precisely).

 

Limitations:

  • Unfortunately, you can not preview node paths yet (they're dynamic!).
  • ZetaBot 0.8.1 and earlier: you must copy text from the ZBNODES lump in the saved WAD, and paste inside a CVAR called nodelist when you're playing the map. Then, "summon ZTPromptNodes" to parse the list and plop the nodes for you.

 

Bugs:

  • Deleting existing path nodes, then loading another map, will cause a segmentation fault (aka fatal program error). I dunno why, but it seems to have something to do with the undo history.

 

Despite the bugs, the editor is mostly functional, and is available to the public:

Edited by Gustavo6046

Share this post


Link to post

Mostly fixed. There is a segfault if I delete pathnodes before loading another map. This happens in the routine that clears the undo history. It says "free: invalid pointer". Can anyone (C++ experts in particular) help me figure out what is happening?

Share this post


Link to post
9 hours ago, Gustavo6046 said:

Mostly fixed. There is a segfault if I delete pathnodes before loading another map. This happens in the routine that clears the undo history. It says "free: invalid pointer". Can anyone (C++ experts in particular) help me figure out what is happening?

I had a browse around and didn't see anything obviously wrong.

 

The following line in RawDeletePathNode is kinda odd though:

int *result = (int*) &*(PathNodes.begin() + objnum);

I suggest just doing it like the other structures do: (int *) PathNodes[objnum]

Share this post


Link to post

Oh, I can't disagree. After fixing that misuse of iterators, I managed to vanquish the bug! I will supply a new, fixed version in a second, once I implement aiming path nodes at the mouse cursor as well.

 

EDIT 1 ---

Apparently, saving a map will duplicate every single node... '-'

 

EDIT 2 ---

A temporary fix is set in place. A new version is to be uploaded soon.

 

EDIT 3 ---

2019w36r2 is up there in the first post!

Edited by Gustavo6046

Share this post


Link to post

Is this meant to open maps and add nodes for that specific bot? To existing maps?

Share this post


Link to post
19 hours ago, VGA said:

Is this meant to open maps and add nodes for that specific bot? To existing maps?

 

It is just like any other map editor, except it can add nodes. So it can add nodes to new maps as well!

 

You can try pressing F1 and using the basic plopping functionality, but be careful: it will add a bunch of nodes! (because subsectors)

Share this post


Link to post
1 hour ago, Gustavo6046 said:

I don't know what to add to Zeureka now. Any useful ideas? I'm sure the People have many of them :)

UDMF support would be great.

Share this post


Link to post
12 hours ago, Gustavo6046 said:

I don't know what to add to Zeureka now. Any useful ideas? I'm sure the People have many of them :)

Yeah pk3 and uDMF support are the 2 big things Eureka is missing, of course adding UDMF would probably require rewriting some parts of the editor, like for one thing you would probably need to add a hardware renderer considering that I believe eureka uses a software renderer currently, which while that allows it to run on basically any pc regardless of what gpu it has or whether or not you have admin on the account you are using because you don't need to install a particular version of directx or opengl unlike GZDB, it also means that a lot of the more advanced udmf features aren't available since they need a hardware renderer to work

Share this post


Link to post

I don't think PK3 can store maps, it's wildly different from the structure of a WAD.

As for UDMF, I might take a look at it. I don't know if I will borrow OpenGL code from GZDoom, or write it myself. I'm sure it'll be painful either way :)

Share this post


Link to post

UDMF is a data format, it has nothing to do with OpenGL. I guess the biggest challenge will be fitting its features in the GUI.

Share this post


Link to post

basic UDMF would be easy. but nobody needs *basic* UDMF! ;-) implementing all properties of at least zdoom namespace will require massive improvements in UI (tbh, i don't even know how to do that without either making UI a mess, or making using UDMF properties a PITA; but i universally sux at UI design anyway).

 

also, built-in nodes builder will require fixes for non-integral vertex coords too.

 

also, pk3 support is not maps, it is for resources.

 

and parsing decorate to extract doomed numbers will be great too.

 

p.s.: yeah, this is all in my TODO list... when i'll finish k8vavoom. we know what that means.

Share this post


Link to post
30 minutes ago, ketmar said:

p.s.: yeah, this is all in my TODO list... when i'll finish k8vavoom. we know what that means. 

 

You should know from the history of other ports: The work NEVER ends if your goal is to add new features. ;)

The only ports that could be reasonably completed are those whose sole focus was on preserving backwards compatibility, because you'd eventually reach the point where there's nothing more to do, aside from a little bit of maintenance.

 

Share this post


Link to post
Just now, Graf Zahl said:

You should know from the history of other ports: The work NEVER ends if your goal is to add new features. ;)

that's exactly what i meant. ;-)

Share this post


Link to post

My only goal really was to support adding nodes. A top-down view was all necessary to know where to add them, and subsectors would help to auto-add them otherwise. I have no affairs with the actual Eureka editor, nor will I. It kind of doomed itself by using FLTK and software rendering instead of a proper GUI libary and OpenGL. (Also, .NET can go to the deepest fires of hell.)

 

I do realize OpenGL wants triangles and primitives and bla-bla-bla, while sectors are subtractive space. That's enough to stop me. Thank you very much.

Share this post


Link to post
11 hours ago, Gustavo6046 said:

It kind of doomed itself by using FLTK and software rendering instead of a proper GUI libary and OpenGL.

I'm curious now, why didn't you modify SLADE instead?

 

And what exactly makes FLTK not a proper GUI?

Share this post


Link to post
54 minutes ago, andrewj said:

And what exactly makes FLTK not a proper GUI?

it is not <instert-your-toolikt-of-preference-here>. also, it is small and fast, which is unacceptable for modern gui toolkits.

Share this post


Link to post
18 hours ago, Gustavo6046 said:

It kind of doomed itself by using FLTK and software rendering instead of a proper GUI libary and OpenGL.

You can always replace FLTK and software rendering with better alternatives. I also have an Eureka fork and I want to make it the best editor on Mac, and no FLTK or software rendering is going to stop me.

Share this post


Link to post

Btw it is possible to use OpenGL in FLTK, you could make UI_Canvas be a subclass of Fl_Gl_Window and then draw everything using GL calls.  You'd probably want to use the same canvas widget for both 2D and 3D, plus of course doing a massive task to create an OpenGL renderer (borrowing code from prBoom may help).  If I had any scrap of motivation to work on Eureka, this would be the way forward for a 2.0 version.

Share this post


Link to post
1 hour ago, Gustavo6046 said:

I have no further plans anymore.

Not even making it output a CVAR nodelist you can put into a .cfg file with the "set" command included? :)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×