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

EDGE-Classic v1.37 (Updated December 2023)

Recommended Posts

1 hour ago, RataUnderground said:

There is one EDGE issue that I find rather uncomfortable, so I thought it was a good idea to expose it here.
(Note in advance that my operating system is Windows).
I play on a setup with multiple screens and often want to switch applications between screens. This on most sourceports is simple, I just press the windows key and then drag the window to the screen I want. However, no key combination seems to work in the case of Edge, neither the windows key nor alt-enter to toggle between window and fullscreen. I have to press ctrl alt del and then I can finally move the cursor out of EDGE.
I think it would be a nice quality of life improvement if this was taken into account.

 

When I press the Windows key, the Start Menu appears and the mouse cursor is disengaged from the program. Alt-Tabbing also works as expected, after which I also can use the mouse freely. Are you saying that you cannot regain mouse control without using Ctrl-Alt-Del?

 

As far as Alt-Enter, we could work on adding some handling for that.

Share this post


Link to post

Well, at any rate, I just pushed Alt+Enter functionality to the repo. It will remember the last windowed and fullscreen modes that were used (there are defaults set on startup so there should always be a "safe" option). If toggling from fullscreen to windowed mode, the mouse cursor will also be released.

 

As far as the Windows key not working, still haven't encountered that yet unfortunately.

 

 

Share this post


Link to post

Realized it's been a bit quiet, but we've been working on some neat stuff for the next release, most recently support for MPEG video playback. Movies can be defined via DDF for title sequences or pre/post level cutscenes, or can even be triggered in-game via RTS actions. Observe a demo that adds a lore-accurate cutscene before E1M1.

 

 

Share this post


Link to post

Question regarding models in EDGE. I understand correctly that each model must have a corresponding sprite? Or maybe it's not? It seems that in the example demo-MD2.wad there are clearly more model frames used than sprites for any monster from doom.

Share this post


Link to post
40 minutes ago, camper said:

Question regarding models in EDGE. I understand correctly that each model must have a corresponding sprite? Or maybe it's not? It seems that in the example demo-MD2.wad there are clearly more model frames used than sprites for any monster from doom.

 

I am not sure what you mean, but there does not have to be any match between the sprite rotations and number of sprites used in a default monster and the frames used when using a model for that monster instead. 

 

The only graphic file that needs to exist is at least one skin for MD2/MD3 models. Quake MDL and voxels have their 'skins' built into the model.

Share this post


Link to post

I also have a misunderstanding, but this is because different ports use different approaches. I'm currently exploring the vavoom approach. But there are some difficulties there and I decided to see how things are in other ports. In particular in EDGE, as in the first one which used md2 models. Sprites all rotations don't seem to need to be displayed, but state sprites do. And the model frames must be associated with decorate code states. There is a special definition file for this. Therefore sprite files must be present.

Spoiler

play_state\spawn (stand)
play_state\spawn\PLAYA1.png

play_state\see (run)
play_state\see\PLAYA1.png
play_state\see\PLAYB1.png
play_state\see\PLAYC1.png
play_state\see\PLAYD1.png

play_state\missile (attack 1)
play_state\missile\PLAYE1.png

play_state\Melee (attack 2)
play_state\Melee\PLAYF1.png

play_state\Pain (Pain)
play_state\Pain\PLAYG1.png

play_state\Death1 (Death)
play_state\Death1\PLAYH0.png
play_state\Death1\PLAYI0.png
play_state\Death1\PLAYJ0.png
play_state\Death1\PLAYK0.png
play_state\Death1\PLAYL0.png
play_state\Death1\PLAYM0.png
play_state\Death1\PLAYN0.png

play_state\XDeath1 (Explosion Death)
play_state\XDeath1\PLAYO0.png
play_state\XDeath1\PLAYP0.png
play_state\XDeath1\PLAYQ0.png
play_state\XDeath1\PLAYR0.png
play_state\XDeath1\PLAYS0.png
play_state\XDeath1\PLAYT0.png
play_state\XDeath1\PLAYU0.png
play_state\XDeath1\PLAYV0.png
play_state\XDeath1\PLAYW0.png

 

In the EDGE example, everything is very different and it seems that the states are greatly changed and expanded compared to the decorate code. It seems EDGE is more flexible in this matter. In EDGE, is at least one object sprite needed in the form of a graphic file, or can only models be used?

Share this post


Link to post
1 hour ago, camper said:

In the EDGE example, everything is very different and it seems that the states are greatly changed and expanded compared to the decorate code. It seems EDGE is more flexible in this matter. In EDGE, is at least one object sprite needed in the form of a graphic file, or can only models be used?

 

No, there are no sprites needed if you are using a model. The DDFTHING definition for a thing defines all that is needed. An example from the MD2 example WAD you mentioned:

STATES(IDLE)=POSS:@1 :7:NORMAL:LOOKOUT,
             POSS:@5 :7:NORMAL:LOOKOUT,
             POSS:@9 :7:NORMAL:LOOKOUT,
             POSS:@13:7:NORMAL:LOOKOUT,
             POSS:@17:7:NORMAL:LOOKOUT,
             POSS:@21:7:NORMAL:LOOKOUT,
             POSS:@25:7:NORMAL:LOOKOUT,
             POSS:@29:7:NORMAL:LOOKOUT,
             POSS:@33:7:NORMAL:LOOKOUT,
             POSS:@37:7:NORMAL:LOOKOUT;

For a WAD, this means that a lump called POSSMD2, POSSMDL, POSSMD3, or POSSVXL (depending on the type of model) needs to be present, as well as a graphic called POSSSKN#, with # being the skin number, for an MD2 or MD3 model. This snippet tells EDGE that the idle state iterates through frames 1,5,9,13,17,21,25,29,33 and 37, with a duration of 7 tics each.

Edited by dasho

Share this post


Link to post

For the ones of EC fans out there, an early Christmas present: EDGE-Classic 1.37 has been released! I'll post a full changelog below, but here are some of the major ones:

 

- Lua is now the default scripting language, with COAL loaded on an as-needed basis for PWADs that still use it. There is a COAL compatibility library so that Lua scripts can be written in a similar fashion to COALHUDs

- MPEG video playback is supported via DDF and RTS

MUSINFO changers will now function within the program, assuming that they use the traditional 14100-14164 range of numbers

- A simple IWAD selection dialog box will appear if multiple valid games are detected but none are specified via parameters

- RTS scripts can now use sector tags or indices as trigger boundaries instead of an actual radius

- (For developers) Support has been added for the Tracy profiling tool

- Option menus will now use grayscaled title images as their backdrop by default in an effort that is shamelessly ripping off Doom Retro

- Default console and option menu fonts have been updated; TrueType font rendering and scaling has been improved across the board

- Reality Adlib Tracker v2 modules are now playable (libVGM has been removed, though)

 

Some screenies:

Spoiler

IWAD Selector:

IWADPicker.PNG.8df8ca6f43fe2929265a1c52e293682a.PNG

 

Grayscale menu backdrops + new default font (Russo One)

shot17.png.0d88eedcf39d4929153e7fa8e0f11e48.png

 

Default font for more fantasy-oriented games (Germania One)

shot18.png.c57665fadce0a5ff200e7a5ffbbd5181.png

 

New console font (Fira Code)

shot19.png.cf15f60525b30d0284c2a29e0e59abf5.png

 

Full changelog:

Spoiler

New Features

------------

- Added support for Lua as the default scripting language

  - Includes a COAL compatibility layer to ease porting

  - Ported DOOM, Heretic, Blasphemer, and Harmony stock scripts to use Lua

  - Script debugging capabilities are included (https://github.com/slembcke/debugger.lua)

  - COAL, for the time being, will still be instantiated if a PWAD or external pack contains a COALHUDS file

- Added support for MPEG video playback

  - Files must use MPEG1 video and MP2 audio for proper decoding

  - New DDF filetype added: DDFMOVIE/MOVIES.DDF

    - MOVIE_DATA = \<LUMP or PACK\>:\<lump or packfile name\>

      - Defines type and location/name of movie file

    - SPECIAL = \<special command list\>

      - MUTE is currently the only special and will suppress audio for the movie

    - SCALING = \<AUTO/NONE/ZOOM/STRETCH\>

      - AUTO: The default option; will fit the movie to the display as much as possible while keeping aspect ratio in mind

      - NONE: Will not adjust the dimensions of the movie at all, even if this causes portions of it to be unviewable

      - ZOOM: Will scale the movie's height to match the height of the display; sides of the movie may be clipped

      - STRETCH: Will match the movie's dimensions to the display without preserving aspect ratio

  - DDFGAME: TITLE_MOVIE=\<movie definition\> command added

    - Movies will always play before any defined TITLE_GRAPHIC entry in the same definition

  - DDFLEVL: PRE.MOVIE=\<movie definition\> and POST.MOVIE=\<movie definition\> commands added

    - Text will always be printed first, followed by movie playback, followed by any defined graphics

      for a DDFLEVL PRE/POST entry

  - RSCRIPT: PLAY_MOVIE \<movie definition\> command added

  - `skip_intros` CVAR added to disable movies that play as part of a title sequence if desired

    - Default is 0 (off)

  - Any playing movie may be skipped by holding a mouse/keyboard/gamepad button for one second

    - A skip progress indicator will be displayed at the bottom of the screen

- Added support for MUSINFO-based music changer things

  - Uses same numbering and methodology as detailed in https://doomwiki.org/wiki/MUSINFO

- Added simple IWAD selection dialog window if multiple valid IWADs are found on startup

  - Previous "best choice" scoring system removed

- RSCRIPT:

  - New sector-based trigger conditions (alternative to using radii)

    - SECTOR_TRIGGER_TAG \<tag\>: Script will trigger once any sector with this tag is entered

    - SECTOR_TRIGGER_INDEX \<index\>: Script will trigger once the sector with this index (as viewable via map editor) is entered

- Added support for Tracy frame profiler (https://github.com/wolfpld/tracy)

  - Added frame metrics for runits, wall/planes, things, and light/glow iterators which can also be displayed with: debug_fps 3

 

General Improvements/Changes

--------------------

- "GMGSx" (Default.sf2) and "microGM" soundfonts removed for licensing/copyright issues

  - "sf_GMbank" soundfont added as the new Default.sf2

  - "16-Bit Game Station" soundfont added as replacement for microGM

- "DMXOPL" instrument bank removed for licensing/copyright issues

  - Replaced with fully free variant from the Freedoom project

- YMFM OPL emulator replaced with Opal from Reality Adlib Tracker

  - RAD-format modules (version 2) are now supported in addition to regular OPL MUS/MIDI/IMF playback

- libVGM removed

  - gzip component of miniz also removed (was only used to decompress VGZ files)

- Alt+Enter will toggle between fullscreen and windowed modes

  - If toggling into windowed mode, the cursor will be released

- Z/R/D/MAPINFO parsing removed in order to focus on better validating UMAPINFO and adherence to its standards

- Updated default console and Options/Load/Save menu fonts

- Improved scaling and sampling quality of TrueType fonts at varying resolutions

- Improved kerning and sizing when drawing console text with TrueType fonts

- Option/Load Game/Save Game menu backgrounds will, by default, be a grayscaled version of the first valid title image

  - DDFSTYLE custom backgrounds for these menus are rendered afterwards to account for tinting or other desired effects

- Removed randomising from IMPACT_OBJECT and EFFECT_OBJECT spawning.

- Doom Builder 2 Configuration files added, courtesy of akaAgar (https://github.com/edge-classic/EDGE-classic/pull/579)

- Formatted EDGE Classic sources to have consistent style and included Clang formatting configuration

- Default Purple and Black splash objects added

- RSCRIPT:

  - START_MAP directive will no longer clear existing scripts for the map in question

  - #CLEAR_MAP \<mapname\> directive added for granular clearing of map scripts

- "Zoom" and "Stretch" choices removed from the "Title/Intermission Scaling" menu option

 

Bugs fixed

----------

- Fixed UMAPINFO entries with no sky defined and past the range of stock levels causing a CTD

- Removed sector fog color check that was causing the HOM debugging texture to appear even with debug_hom set to 0

- Fixed A_CloseShotgun2 frame only playing the DBCLS sound and not calling A_Refire as well

- Fixed custom Dehacked weapons that use the chainsaw attack not playing the SAWFUL sfx when attacking (regardless of hitting a target)

- SKULLFLY attacks that cause zero damage no longer make victim enter painstate

- Fixed Nightmare/Fast Monster state duration reduction for monsters with a value for the 'FAST' parameter

  - Speed in fast mode is now governed by the 'FAST_SPEED' parameter in all cases, instead of using 'FAST' as a multiplier against the base speed

- Fixed calculation of scroller push forces when multiple scrollers affect the same mobj

- Fixed mirror and portal issues with GLES2 renderer

- Fixed most compiler warnings under GCC/Clang

- Fixed custom PLAYPAL/palettes not being applied to the TEXTURE image class

- Fixed the "Reset to Defaults" menu option not properly resetting smoothed or upscaled images

- Fixed IWADs being dragged-and-dropped onto the program executable being treated as PWADs

- Fixed memory leak involving detail slope creation

- Fixed the "Blood Level" gameplay option defaulting to "Extra"

- Fixed inconsistent menu item width when non-default text scaling was used

- Fixed incorrect Boom ANIMATED and SWITCHES lump parsing causing garbage values to be entered into the DDFANIM conversion

- Fixed CHOKE_DAMAGE being applied during extra rendering tics

- Fixed malformed Eureka configuration file

- Fixed "Fill Border" Title/Intermission scaling option not working for all display modes

- Added corrected Blasphemer/Heretic tome and wings graphics to prevent distortion of the spinning "activated" images

 

Grab it HERE

Share this post


Link to post

Quick update: I had to fix the CI build scripts because they omitted the Harmony base EPK. You'll want to re-download the release package now that it's been fixed. Or just not play Harmony, but it's a cool game.

Share this post


Link to post

The Web Player has now been updated to version 1.37 as well; you may need to force-reload (Ctrl+Shift+R) or otherwise clear your cache for that page to ensure you have the latest version loaded.

Share this post


Link to post

I wanted to clarify. Does Edge Classic support split-screen mode for multiplayer?
I run the -splitscreen option but nothing happens.

Share this post


Link to post
14 minutes ago, camper said:

I wanted to clarify. Does Edge Classic support split-screen mode for multiplayer?
I run the -splitscreen option but nothing happens.

 

No, this was a feature of 3DGE/EDGE 2.x and I do not know how thoroughly it had even been implemented.

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
×