Sign in to follow this  
Followers 0

Eternity Engine v3.40.00 "Rebirth"

Get the new 10th anniversary release of the Eternity Engine here!

Please note the following:
This is the first version of Eternity to be released based on the C++-converted codebase!

There are some minor problems with this release of which you might wish to be aware:
  • Portal overlays are *not* quite working fully. We hope to rectify this ASAP.
  • There is no Win9x compatibility in the current release, due to Visual C++ 6.0 throwing a motherloving fit. We would like to release one soon but may have to use a different compiler to produce it.
The first public release of the Eternity Engine, v3.29 Public Beta 1, was released 1/8/2001. Today was Eternity's 10th birthday, and a fitting time to release this newest version of the engine. Thank you all for helping to make Eternity a reality.

Share this post


Link to post

Awesome! Extradata sectors for custom damage/colormap/flat alignment/etc, Extradata translucent/additive lines, and other cool stuff. Oh, right, and C++! Yay :D

Share this post


Link to post
Quasar said:

  • There is no Win9x compatibility in the current release, due to Visual C++ 6.0 throwing a motherloving fit. We would like to release one soon but may have to use a different compiler to produce it.



  • That old piece of garbage doesn't compile your code anymore? Its C++ support truly isn't the best. I can remember that it had major issues with some constructs ZDoom uses.

    What other compilers do you have? If you got VC 2005 there's a small assembly hack you can take from ZDoom. For later compilers I don't think it's possible to let them output Win9x compatible binaries.

    Share this post


    Link to post
    Graf Zahl said:

    That old piece of garbage doesn't compile your code anymore? Its C++ support truly isn't the best. I can remember that it had major issues with some constructs ZDoom uses.

    What other compilers do you have? If you got VC 2005 there's a small assembly hack you can take from ZDoom. For later compilers I don't think it's possible to let them output Win9x compatible binaries.

    The first problem is that it has different overload resolution rules which don't recognize types as being equivalent in the same way. This is a damned-if-you-do, damned-if-you-don't problem, since other compilers will see the methods as ambiguous overloads.

    The other problem is one I cannot understand at ALL. It is complaining about constructs such as:

    static default_t defaults[] =
    {
      { fields, in, here },
      ...
    };
    
    The error given makes it seem that the compiler believes defaults is not in fact an array, but one gigantic default_t. For every initial field in the static initializers, it complains "No conversion from <whatever the first field is> to default_t" - absolute nonsense.

    I can try to acquire 2005, although your mentioning hacks as being necessary is not encouraging >_>

    Share this post


    Link to post
    printz said:

    Portal overlays? How do I use them?

    Via ExtraData flag fields, but I'd seriously hold off on it for the moment, as they have some kind of serious glitch that SoM hasn't been able to figure out yet.

    Once they're working, I will add their documentation to the ExtraData page on the wiki...

    Share this post


    Link to post
    Quasar said:

    The error given makes it seem that the compiler believes defaults is not in fact an array, but one gigantic default_t. For every initial field in the static initializers, it complains "No conversion from <whatever the first field is> to default_t" - absolute nonsense.


    I think ZDoom ran into the same problem as this one. It's clearly a compiler bug and obviously was fixed in MS's next compiler release.

    Quasar said:

    I can try to acquire 2005, although your mentioning hacks as being necessary is not encouraging >_>


    It's not that bad. All the code needs to do is to override one imported function that doesn't exist in Windows95 but is references by the CRT.

    All ZDoom does is adding this .asm file:

    ; The Visual C++ CRT unconditionally links to IsDebuggerPresent.
    ; This function is not available under Windows 95, so here is a
    ; lowlevel replacement for it.
    
    extern __imp__GetModuleHandleA@4
    extern __imp__GetProcAddress@8
    
    	SECTION .data
    
    global __imp__IsDebuggerPresent@0
    __imp__IsDebuggerPresent@0:
    	dd	IsDebuggerPresent_Check
    
    	SECTION	.rdata
    
    StrKERNEL32:
    	db "KERNEL32",0
    
    StrIsDebuggerPresent:
    	db "IsDebuggerPresent",0
    
    	SECTION .text
    
    IsDebuggerPresent_No:
    	xor		eax,eax
    	ret
    
    IsDebuggerPresent_Check:
    	push	StrKERNEL32
    	call	[__imp__GetModuleHandleA@4]
    	push	StrIsDebuggerPresent
    	push	eax
    	call	[__imp__GetProcAddress@8]
    	test	eax,eax
    	jne		near .itis
    	mov		eax,IsDebuggerPresent_No
    .itis:
    	mov		[__imp__IsDebuggerPresent@0],eax
    	jmp		eax
    

    Share this post


    Link to post

    I get this error message when I try to start Eternity 3.40.00.

    This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.


    My operating system is fully updated 32-bit Windows XP Professional with Service Pack 3.

    Share this post


    Link to post

    And here is the first video of Rebirth.... DEATH BFG 2.0 RAAAAGH!

    Share this post


    Link to post
    Quasar said:

    Via ExtraData flag fields, but I'd seriously hold off on it for the moment, as they have some kind of serious glitch that SoM hasn't been able to figure out yet.

    Once they're working, I will add their documentation to the ExtraData page on the wiki...

    Yay. I'm curious how a portal overlay looks.

    Share this post


    Link to post
    printz said:

    Yay. I'm curious how a portal overlay looks.

    Like a translucent line, but on the floor. :P

    Share this post


    Link to post

    Quasar: congratulations on your successful language transition. As I said I'm not entirely convinced it wasn't an overreaction, but I seem to recall you said you wanted to do some stuff with C++ features anyway, so I guess it's all good.

    I'm interested to know what SoM thinks of all this as I don't think I've seen him express an opinion on choice of language.

    Personally I need to find some kind of C++ for C programmers guide because I have only the vaguest idea of what C++ gives you over C...

    Share this post


    Link to post
    RjY said:

    Quasar: congratulations on your successful language transition. As I said I'm not entirely convinced it wasn't an overreaction, but I seem to recall you said you wanted to do some stuff with C++ features anyway, so I guess it's all good.

    I'm interested to know what SoM thinks of all this as I don't think I've seen him express an opinion on choice of language.

    Personally I need to find some kind of C++ for C programmers guide because I have only the vaguest idea of what C++ gives you over C...

    The problem wasn't that C99 limitations couldn't be worked around in the short term, but that working around them in the long term while continuing to develop designs that ran counter to them would probably not be sustainable. And besides that, it was clouding what would otherwise have been elegant implementations with low-level pointer juggling and type casts.

    C++ offers two main things: classes with polymorphic inheritance, and templates for generic programming.

    Classes are just an extension of C's structs, which add the ability to have access control (public/protected/private), inheritance, encapsulation of methods (functions) with the data on which they act (along with a "this" pointer to use inside them that implicitly references the current object), constructors and destructors for (de)initialization, and most importantly, the "virtual" function call mechanism - meaning the method called is selected based on the most-derived type of an object, at runtime, and not the type of the pointer or reference it was called through.

    Templates allow a piece of code (a class or function) to be defined in a type-agnostic manner. For example:

    template<typename T> T addTwo(T &a, T &b) { return a + b; }
    
    You can call that template function on any two objects which implement an operator + that returns T or T &. And that includes fundamental types like int or double. (unary & represents a reference, btw, which is just an opaque pointer which isn't allowed to ever be NULL).

    Share this post


    Link to post
    esselfortium said:

    Like a translucent line, but on the floor. :P

    Could make for some badass gateways to the netherworld (literally).

    Share this post


    Link to post
    esselfortium said:

    Like a translucent line, but on the floor. :P



    So it's just drawing a translucent flat on a portal plane?

    Share this post


    Link to post

    Great timing here -- No need to link all the Hacx guys to an SVN version now. :P

    I brought this up in IRC, but I may as well post it since it's relevant-ish: I've got an example wad that shows off a few compatible features between ZDoom and Eternity, the new ExtraData-based translucency (additive as well ;) being one of them. It's currently using Hacx 2.0 textures, but Doomifying it would be easy enough. Anyone here interested in it?

    Share this post


    Link to post

    Dumb question: What about transitioning to C# now? :)

    Share this post


    Link to post

    Why? C# can't even be compiled into native machine code.

    Share this post


    Link to post
    Doom_user said:

    I get this error message when I try to start Eternity 3.40.00.



    My operating system is fully updated 32-bit Windows XP Professional with Service Pack 3.


    I've done a search and replace of .c by .cpp in my project file and EE compiled successfully and seems to work fine, so I uploaded r1412 to the DRD Team SVN site. It might work better for you because it's compiled with MSVC++ 2005.

    Share this post


    Link to post
    Gez said:

    I've done a search and replace of .c by .cpp in my project file and EE compiled successfully and seems to work fine, so I uploaded r1412 to the DRD Team SVN site. It might work better for you because it's compiled with MSVC++ 2005.


    Thanks. r1412 works perfectly.

    Share this post


    Link to post
    Graf Zahl said:

    So it's just drawing a translucent flat on a portal plane?

    Yeah "just" like it's no kind of highly requested, advanced feature or anything...

    Share this post


    Link to post
    Graf Zahl said:

    The name sounded like it's more... :P

    It gives automated blowjobs too.

    Share this post


    Link to post

    I’m trying to compile EE, ./autogen.sh does not complain, but make does:

    > LANG="C";make
    Making all in source
    make[1]: Entering directory `/somewhere/eternity/ee3.40.00-src/source'
    Making all in Confuse
    make[2]: Entering directory `/somewhere/eternity/ee3.40.00-src/source/Confuse'
    make[2]: *** No rule to make target `confuse.o', needed by `libetconfuse.a'.  Stop.
    make[2]: Leaving directory `/somewhere/eternity/ee3.40.00-src/source/Confuse'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/somewhere/eternity/ee3.40.00-src/source'
    make: *** [all-recursive] Error 1
    
    Did I forget something?

    Share this post


    Link to post
    ducon said:

    I’m trying to compile EE, ./autogen.sh does not complain, but make does:

    > LANG="C";make
    Making all in source
    make[1]: Entering directory `/somewhere/eternity/ee3.40.00-src/source'
    Making all in Confuse
    make[2]: Entering directory `/somewhere/eternity/ee3.40.00-src/source/Confuse'
    make[2]: *** No rule to make target `confuse.o', needed by `libetconfuse.a'.  Stop.
    make[2]: Leaving directory `/somewhere/eternity/ee3.40.00-src/source/Confuse'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/somewhere/eternity/ee3.40.00-src/source'
    make: *** [all-recursive] Error 1
    
    Did I forget something?


    We're using cmake now. it's a lot easier. Mayyybe I should have put that in the news.

    Share this post


    Link to post
    Csonicgo said:

    We're using cmake now. it's a lot easier. Mayyybe I should have put that in the news.

    Oh yeah. I knew I forgot to fix something before release... Basically the automake system hasn't been updated yet. My bad ;)

    Share this post


    Link to post

    So, I may wait for the next release?
    And please change the README too, some old fashioned guys still read this stuff. ;)

    Share this post


    Link to post

    Just noticed this. CMakeLists needs a version number bump

    Index: CMakeLists.txt
    ===================================================================
    --- CMakeLists.txt	(revision 1418)
    +++ CMakeLists.txt	(working copy)
    @@ -48,7 +48,7 @@
     SET (CPACK_PACKAGE_VENDOR "Team Eternity")
     SET (CPACK_PACKAGE_CONTACT "Team Eternity <haelyjd@hotmail.com>")
     SET (CPACK_PACKAGE_VERSION_MAJOR "3")
    -SET (CPACK_PACKAGE_VERSION_MINOR "37")
    +SET (CPACK_PACKAGE_VERSION_MINOR "40")
     SET (CPACK_PACKAGE_VERSION_PATCH "00")
     SET (CPACK_PACKAGE_NAME "Eternity Engine")
     SET (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")

    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
    Sign in to follow this  
    Followers 0