Coder Social home page Coder Social logo

ioan-chera / eureka-editor Goto Github PK

View Code? Open in Web Editor NEW
65.0 10.0 13.0 24.51 MB

Eureka is a cross-platform map editor for the DOOM engine games.

Home Page: http://eureka-editor.sourceforge.net/

Roff 0.10% Shell 0.08% CSS 0.22% Objective-C 0.03% Objective-C++ 0.15% C 19.69% C++ 54.95% Lua 0.21% CMake 0.44% Python 0.25% Vim Script 0.03% HTML 23.86%
idtech1 doom editor map level

eureka-editor's Introduction

Eureka README
=============


INTRODUCTION

Eureka is a map editor for the classic DOOM games, and a few related
games such as Heretic, Hexen and Strife.  The supported operating systems are
Linux (and other Unix-likes), Windows and macOS.


WEB SITE

http://eureka-editor.sourceforge.net/


FEATURES

-  Undo/Redo (multiple levels)
-  3D view with good lighting emulation
-  Editable panels for things, linedefs, sectors (etc)
-  Browser for textures, flats, things (etc)
-  Key binding system
-  Built-in nodes builder


SUPPORTED GAMES

-  DOOM
-  DOOM 2
-  Final Doom
-  FreeDoom
-  HacX
-  Heretic
-  Hexen


REQUIREMENTS

-  128 MB of computer memory
-  1024x720 or higher screen resolution
-  3D accelerated graphics card
-  a keyboard and a two-button mouse
-  the data (iwad) file from a supported game


COMPILATION

See the INSTALL.txt document (in source code)


RUNNING


Command line:

You can run Eureka from the command line, or it can be run from
the desktop menu (on Linux: if your OS handles .desktop files as per the
XDG specs).  Eureka will need to be able to find an IWAD to run,
if it cannot find any then the "Manage Wads" dialog will open up,
allowing you to "Find" one (which is remembered for next time).

You can open a PWAD file using the File/Open menu command, or start
a new map with File/New command.

You can also specify the PWAD to edit on the command line, either
on its own or with the -file option:

   eureka -file masterpiece.wad

If that PWAD contains multiple maps, you may need to specify which
one to edit using the -warp option:

   eureka -file masterpiece.wad -warp 14

For a summary of useful command line options, type:

   eureka --help



KEYBOARD AND MOUSE CONTROLS

All Modes
---------

LMB
* select an object, drag to move the object(s)
* click in empty area to clear the selection
* click + drag in empty area to select a group of objects

RMB
* begin/continue line drawing (in vertex mode)
* merge sectors (in sectors mode)
* with CTRL pressed: bring up operation menu

MMB
* scroll the map around (by dragging)

wheel : zoom in or out

cursor keys : scroll the map

F1 : operation menu

TAB : toggle the 3D preview on or off
ESC : cancel the current operation

t : enter Thing mode
l : enter Linedef mode
s : enter Sector mode
v : enter Vertex mode

b : toggle the Browser on or off

1..9 : select the grid size (smallest to largest)

CTRL-Z : undo (can be used multiple times)
CTRL-Y : redo (i.e. undo the previous undo)

CTRL-A : select all
CTRL-I : invert the selection
CTRL-U : unselect all
` (backquote) : unselect all

HOME : zoom 2D viewport to show the whole map
END  : move 2D viewport to camera location
' (quote) : move 3D camera to position of mouse pointer

f : toggle free mode vs grid snapping
g : toggle grid on / off

N : open next map in the current wad
P : open previous map in the current wad

j : jump to object (by its numeric id)
J : toggle object number display

o : copy and paste the selected objects
c : copy properties from selected --> highlighted object
C : copy properties from highlighted --> selected objects

H : mirror objects horizontally
V : mirror objects vertically
R : rotate objects 90 degrees clockwise
W : rotate objects 90 degrees anti-clockwise

a : scroll map with the mouse
r : scale selected objects with the mouse
R : scale selected objects, allow stretching
CTRL-R : rotate the selected objects (with the mouse)
K : skew (shear) the selected objects

\ : toggle the RECENT category in the Browser

u  : popup menu to set ratio lock
z  : popup menu to set current scale
B  : popup menu to set browser mode
F8 : popup menu to set sector rendering mode

; : make the next key pressed META

META-N : load next file in given list
META-P : load previous file in given list

META-F : apply a fresh tag to the current objects
META-L : apply the last (highest) tag to the current objects


Things Mode
-----------

SPACE : add a new thing

d : disconnect things at the same location
m : move selected things to occupy the same location

w : rotate things 45 degrees anti-clockwise
x : rotate things 45 degrees clockwise


Vertex Mode
-----------

SPACE
* begin/continue line drawing
* with SHIFT key: always continue line drawing
* with CTRL key: inhibit creation of sectors

d : disconnect all linedefs at the selected vertices
m : merge selected vertices into a single one
u : unlock any current ratio lock

I : reshape selected vertices into a line
O : reshape selected vertices into a circle
D : reshape selected vertices into a half-circle
C : reshape selected vertices into a 120-degree arc
Q : reshape selected vertices into a 240-degree arc


Linedef Mode
------------

e : select a chain of linedefs
E : select a chain of linedefs with same textures

w : flip linedefs
k : split linedefs in two
A : auto-align offsets on all selected linedefs

d : disconnect selected linedefs from the rest
m : merge two one-sided linedefs into a two-sided linedef


Sector Mode
-----------

SPACE
* add a new sector to area around the mouse pointer
* if a sector is selected, copy that sector instead of using defaults

d : disconnect sector(s) from their neighbors
m : merge all selected sectors into a single one

w : swap floor and ceiling textures
i : increase light level
I : decrease light level

e : select sectors with same floor height
E : select sectors with same floor texture
D : select sectors with same ceiling texture

, and < : lower floor heights
. and > : raise floor heights
[ and { : lower ceiling heights
] and } : raise ceiling heights


3D View
-------

(cursor keys will move forward and back, turn left and right)
(the WASD keys can also be used to move the camera)

LMB : select walls, floors or ceilings
MMB : turn or move the camera (by dragging the mouse)

wheel : move camera forwards or backwards

PGUP and PGDN : move camera up and down

g : toggle gravity (i.e. as if the player was on the ground)
e : popup menu to set edit mode
o : toggle objects on or off

META-v : drop to the ground
META-l : toggle lighting on or off
META-t : toggle texturing on or off

F11 : increase brightness (gamma)

r : adjust offsets on highlighted wall (with the mouse)
c : clear offsets on highlighted wall

x : align X offset with wall to the left
y : align Y offset with wall to the left
z : align both X + Y offsets

X : align X offset with wall to the right
Y : align Y offset with wall to the right
Z : align both X + Y offsets



COPYRIGHT and LICENSE

  Eureka DOOM Editor

  Copyright (C) 2014-2024 Ioan Chera
  Copyright (C) 2001-2020 Andrew Apted, et al
  Copyright (C) 1997-2003 Andre Majorel et al

  Eureka is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 2 of the License,
  or (at your option) any later version.

  Eureka is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

eureka-editor's People

Contributors

andwj avatar chewi avatar fabiangreffrath avatar iccolon818 avatar ioan-chera avatar pmjdebruijn avatar sink666 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eureka-editor's Issues

Manage project > map type changes only per map, not project

I started a project in Doom format, made many maps in a single wad. Switched to Hexen format (hit a voodoo doll snag, solved with scripting). It only changed the format for that individual map. All other maps were still in Doom format. Manually iterated through each map, changed format, saved map. Would like a blanket option or rename "Manage project" to "Manage map".

Fix CMake to work on Mac and replace Xcode

Stuff needed to do:

  • Prepare CMake for macOS with guaranteed FLTK download
  • Make sure it can produce signed releases
  • Make sure the deployment target is as before
  • Make sure the same warnings are shown as on the manual Xcode project, or more.
  • Remove Xcode project
  • Make sure it still works on Linux

Cancelling "Delete Map" deletes the map

Expected:
Going to File->Delete Map and pressing Cancel on the question should just bring me back to the map I was editing.

Actual:
Pressing File->Delete Map->Cancel deletes the map anyway. (deleted map no longer accessible from "Open Map", next one is opened)

Accidentally lost a whole map I was working because of this. (not a big deal as I can make it anew but not super convenient)

Tested it on Archlinux, Eureka built from b5f1b50

2021-02-28-071059_626x202_scrot

Fix the "Edit text lump" functionality

It seems to always require Hexen format and says that "adding SCRIPTS lump" is only available for it, which is nonsense if user opts for another lump.

Alternatively delete it if it's the job of SLADE.

Study the Meson build system

I need a programmatic build system like CMake or others if I want to effectively create multiple unit test programs which don't link to the entire Eureka. This task is to see whether Meson makes a better option than CMake.

Compilation error on Linux

Here is the error when I try to build this on Linux:
~/Applications/eureka-editor> make
make: fltk-config: No such file or directory
g++ -O2 -g -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -std=c++17 -fno-strict-aliasing -fwrapv -o obj_linux/Document.o -c src/Document.cc
In file included from src/ui_window.h:27,
from src/e_checks.h:31,
from src/Document.h:23,
from src/Document.cc:19:
src/ui_canvas.h:25:10: fatal error: FL/Fl_Gl_Window.H: No such file or directory
25 | #include <FL/Fl_Gl_Window.H>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:136: obj_linux/Document.o] Error 1

Broken lines

Expected:
Lines on the arrow indicating your position appear like lines - ie consecutive rows of pixels of same colour that create an illusion of looking at lines.

Actual:
It looks as if parts of the line were "erased".

Tested on Archlinux. Built at b5f1b50

2021-02-28-073146_544x494_scrot

Cannot create a fresh map

Expected:
Going to File -> Fresh map should bring up a dialog box which should allow creating another map in the wad.

Actual:
A dialog does open but it only has one input box. Changing the text string in it and pressing enter doesn't do anything.
There's no "OK" button anywhere on the interface.

New-map-related options behave very similarly (dialog only has a text input box) so perhaps the other options are affected the same way:

  • Fresh Map (already mentioned)
  • Copy Map
  • Rename Map

2021-01-21-162616_489x457_scrot
Everything else in the editor seems to be working fine.

Using Eureka 1.27b
Tested it on Archlinux with the rapoison window manager.

A workaround I'm using is creating new map lumps in another program and then editing the new maps in the wad in Eureka (it works) but that's not very convenient.

It doesn't seem to output any errors to STDOUT or STDERR when this happens.

Possible solutions:

  • I could maybe try an older version and try to pinpoint which commit introduced this problem
  • the editor works fine other than this and so does every dialog box in it but there's an off chance that the ratpoison window manager is somehow doing this so I could try it on a different WM

Pressing "Save" on dialog doesn't do anything

May be related to #28

Expected:
You make a modification. You press Ctrl+T. It asks you if you want to save changes before previewing the map in the game. You click "Save" .....and then the editor either just saves and that's it, or it saves and the game runs the saved wad/map with the modifications you just made.

Actual:
You make a modification. You press Ctrl+T. It asks you if you want to save changes before previewing the map in the game. You click "Save" ....nothing happens

You have to press Ctrl+S and press Ctrl+T and then it previews it as expected.

Tested on Archlinux b5f1b50

2021-02-28-083525_1104x499_scrot

Compilation Error on Linux.

When compiling Eureka, I get an error, as shown in the attached photo. Can this compilation error be fixed, if possible? I am compiling on Arch Linux.
eureka-error

texture offset crashes in 3d mode

Steps to reproduce the crash:

  1. Load or create a new map
  2. press l for linedef (or e w)
  3. hover with the mouse over a wall (don't click)
  4. hold down the r key and move the mouse, keep moving your mouse cursor outside the boundaries of the wall rectangle (no crash)
  5. click once on the wall so that the lines turn from yellow to orange around the rectangle
  6. press and hold r and move around the mouse cursor again - as soon as you move the mouse cursor outside of the rectangle - Eureka will crash

Tested with 61a308b built on Archlinux

Placing new vertex doesn't update the texture in 2d view

Expected:
Placing a new vertex should make the texture in 2d view adjust to the new shape of the sector.

Actual:
The texture seems to look as if nothing was changed.

Steps:
Create a new wad archive.
Press v for vertices.
Place a point inside the rectangle.

Tested on Archlinux, built from b5f1b50
2021-02-28-082444_702x634_scrot

ZDiHF: hover over teleport lines does not highlight respective tagged sectors/things/lines

Eureka is hard coded to highlight the sector tag in Doom Format, but in ZDoom in Hexen format, the action structure was shuffled to use 5 parameters. The Teleport Destination tag can be any one of the 5 parameters. It can also be a ThingID or lineID, depending on the action that triggered it. Eureka should know how to display the Destination for each particular action.

https://zdoom.org/wiki/Category:Teleport_specials

77:TeleportGroup (tid, source, destination, movesource, fog)
215:Teleport_Line (thisid, destid, flip)
71:Teleport_NoFog (tid, useangle, tag, keepheight)
154:Teleport_NoStop (tid, sectortag, nofog)
76:TeleportOther (tid, destination_tid, fog)
78:TeleportInSector (tag, source_tid, dest_tid, fog, group_tid)
39:Teleport_ZombieChanger (tid, tag)

error when building from source

I cloned the git repo and after checking to make sure I had all the required packages I ran make and got this error:

g++ -O2 -g -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -std=c++17 -fno-strict-aliasing -fwrapv -I/usr/include/freetype2 -fstack-clash-protection -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -pipe -g -fvisibility-inlines-hidden -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -o obj_linux/Document.o -c src/Document.cc
In file included from src/e_basis.h:31,
from src/Document.h:22,
from src/Document.cc:19:
src/m_strings.h: In member function 'bool SString::noCaseStartsWith(const char*, int) const':
src/m_strings.h:95:58: error: 'strlen' was not declared in this scope
95 | return !y_strnicmp(data.c_str() + pos, c ? c : "", c ? strlen(c) : 0);
| ^~~~~~
src/m_strings.h:29:1: note: 'strlen' is defined in header ''; did you forget to '#include '?
28 | #include
+++ |+#include
29 |
src/m_strings.h: In member function 'bool SString::startsWith(const char*) const':
src/m_strings.h:109:49: error: 'strlen' was not declared in this scope
109 | return !strncmp(data.c_str(), c ? c : "", c ? strlen(c) : 0);
| ^~~~~~
src/m_strings.h:109:49: note: 'strlen' is defined in header ''; did you forget to '#include '?
src/m_strings.h:109:11: error: 'strncmp' was not declared in this scope
109 | return !strncmp(data.c_str(), c ? c : "", c ? strlen(c) : 0);
| ^~~~~~~
src/m_strings.h:109:11: note: 'strncmp' is defined in header ''; did you forget to '#include '?
make: *** [Makefile:137: obj_linux/Document.o] Error 1

Anyone know what's going on? I'm running void linux btw.

Don't error quit if project setup dialog has invalid resources

At least two cases identified so far:

  1. Invalid resource files (other than ugh)
  2. Ugh files with syntax errors

Instead of suddenly terminating Eureka, they should calmly inform the user and (depending on user experience) either request correction or skip them and close the dialog anyway.

Blocked by

  • #23 because we need a more robust wad system.
  • #97 because we need to easily handle lifetimes of failed objects
  • Scenario: create new project, prepare to overwrite another file. Give it a junk resource file. The operation will fail, but the old file will still be forever lost.

View > Toggle tags

Would like to see sector tags labelled in 2D view. Bonus if sector hover displays lines to associated linedefs.

Mode: Line visibility

Would like to see separate modes for invisible, mapped, and secret tagged linedefs. Useful for optimizing in-game map display.

Maximize coverage of unit tests

In order to make development safe and also to catch any still-ongoing bugs or wrong behaviour, let's write tests for as much of Eureka as possible before continuing feature development.

the make command rebuilds everything

Expected:
When I do git pull and then make -C build only the parts that changed get compiled (usually very quick with other projects I do this with)

Actual:
Everything seems to be rebuilt as a whole from scratch every time - even when the change is minor. It takes a good few minutes to compile everything.

Tested on Archlinux 95fae49

I may be doing something wrong. Do I need to pass some argument to only build parts that changed?

First thing placed is always a health bonus

Expected:
When you press the t key and then click a thing, then try to place it - it places that thing you chose.

Actual:
The first thing placed is always a health bonus. It has to be then changed to the actual thing you meant to place in first place.

Not a big deal and one can get used to it but it's somewhat counter-intuitive. Tested on Archlinux, built from b5f1b50

Unify saving and nodebuilding

If not even integrate the nodebuilder into the same executable, to simplify stuff and reduce interprocess point of failure.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.