Looking for some Dev

The development of the game itself or new resources for it. Any new stuff you're working on would go here, as well as the discussion of in-development stuff.

Moderator: Developers

egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

So a subdirectory

Code: Select all

<root>/external/mac
too?

What do you think in general about that project structure.
User avatar
penguinflyer5234
Sheep (Developer)
Sheep (Developer)
Posts: 3025
Joined: Wed Jul 23, 2008 1:39 am
Location: Best Southwest

Re: Looking for some Dev

Post by penguinflyer5234 »

Should work.

(if you want, I'm on IRC, freenode#egoboo)
...
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

You propably can switch your build system to C++. cartman, egolib and game should compile now as C++.

This physics bug. It can't be that this was in a release version.
Is there a non-broken version of Egoboo?
User avatar
penguinflyer5234
Sheep (Developer)
Sheep (Developer)
Posts: 3025
Joined: Wed Jul 23, 2008 1:39 am
Location: Best Southwest

Re: Looking for some Dev

Post by penguinflyer5234 »

The general consensus was 2.6.8. It's based off of somewhere in the 2.6.x branch. Each version since then has basically a few bugs that the next version fixed but added more :?
Spoiler: C error with gnu99
[code]In file included from egolib/src/egolib/file_formats/spawn_file.c:34:
In file included from osx/../game/src/game/char.h:34:
osx/../game/src/game/script.h:188:5: error: expected ';' at end of declaration list
PROFILE_DECLARE_STRUCT;
^
In file included from egolib/src/egolib/file_formats/spawn_file.c:34:
In file included from osx/../game/src/game/char.h:31:
In file included from osx/../game/src/game/graphic.h:34:
In file included from osx/../game/src/game/egoboo.h:33:
osx/../egolib/src/egolib/clock.h:55:62: note: expanded from macro 'PROFILE_DECLARE_STRUCT'
#define PROFILE_DECLARE_STRUCT ClockState_t * _clkstate = NULL; double _clkcount; double _clktime
^[/code]
Spoiler: C++ error (is easily fixed though)
[code]egolib/src/egolib/network_file.c:404:13: error: no matching function for call to 'enet_packet_readUint32'
enet_packet_readUint32( &enet_pkt, &fileSize );
^~~~~~~~~~~~~~~~~~~~~~
In file included from egolib/src/egolib/network_file.c:5:
osx/../egolib/src/egolib/network.h:276:15: note: candidate function not viable: no known conversion from 'size_t *' (aka 'unsigned long *') to 'Uint32 *' (aka 'unsigned int *') for 2nd argument
C_BOOLEAN enet_packet_readUint32( enet_packet_t * ptr, Uint32 * pval );
^[/code]

Also, not valid MSVC89, whee.
What should I be using? C++ or C99 or MSVC89 or what?

One frame in elf.mod with the menu open:
(total and avg being times in µs)
Spoiler: elf.mod
[code]GL Function Calls Total Avg GL% App%
glBegin 88139 696937 7.91 68.12 3.30
glPopClientAttrib 33969 100082 2.95 9.78 0.47
glPopAttrib 25150 56695 2.25 5.54 0.27
glDeleteTextures 156 28897 185.24 2.82 0.14
glPushAttrib 25150 19657 0.78 1.92 0.09
glArrayElement 135252 17839 0.13 1.74 0.08
glPushClientAttrib 33969 14829 0.44 1.45 0.07
glVertex3fv 196990 10496 0.05 1.03 0.05
glEnd 88138 10382 0.12 1.01 0.05
glTexParameteri 96820 8206 0.08 0.80 0.04
glEnableClientState 101439 6441 0.06 0.63 0.03
glBindTexture 24205 5176 0.21 0.51 0.02
glTexCoord2fv 196990 5162 0.03 0.50 0.02
glColor4fv 184030 5061 0.03 0.49 0.02
CGLFlushDrawable 40 4539 113.49 0.44 0.02
glIsEnabled 29421 4027 0.14 0.39 0.02
glEnable 59406 3164 0.05 0.31 0.01
glNormal3fv 126222 3040 0.02 0.30 0.01
glVertexPointer 33813 2840 0.08 0.28 0.01
glTexImage2D 1638 2651 1.62 0.26 0.01
glTexCoordPointer 33813 2434 0.07 0.24 0.01
glShadeModel 46165 2208 0.05 0.22 0.01
glColorPointer 33813 2059 0.06 0.20 0.01
glGetIntegerv 7115 1381 0.19 0.14 0.01
glBlendFunc 18829 1172 0.06 0.11 0.01
glVertex2f 10228 1142 0.11 0.11 0.01
glDisable 14172 1099 0.08 0.11 0.01
glFrontFace 15352 827 0.05 0.08 0.00
glDepthFunc 14424 683 0.05 0.07 0.00
glDepthMask 14503 647 0.04 0.06 0.00
glGetTexLevelParameteriv 156 633 4.06 0.06 0.00
glCullFace 15352 477 0.03 0.05 0.00
glMultMatrixf 2240 326 0.15 0.03 0.00
glMatrixMode 7993 321 0.04 0.03 0.00
glAlphaFunc 5798 293 0.05 0.03 0.00
glTexCoord2f 9604 279 0.03 0.03 0.00
glPopMatrix 2838 232 0.08 0.02 0.00
glPushMatrix 2757 190 0.07 0.02 0.00
glClear 78 119 1.53 0.01 0.00
glGetFloatv 680 111 0.16 0.01 0.00
glPixelStorei 1560 87 0.06 0.01 0.00
glViewport 158 37 0.24 0.00 0.00
glColor4f 780 30 0.04 0.00 0.00
glLoadMatrixf 318 30 0.10 0.00 0.00
glLoadIdentity 278 30 0.11 0.00 0.00
glGenTextures 156 27 0.18 0.00 0.00
glOrtho 119 17 0.15 0.00 0.00
glScissor 39 16 0.42 0.00 0.00
glColor3f 156 12 0.08 0.00 0.00
CGLGetParameter 156 0 0.00 0.00 0.00[/code]
...
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

Come to IRC its easier:)
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

Big x-mas update. For testing: I have played the game a bit.
Cartman should be checked once (in particular the mesh operations) once.
Moving on to BSPs now.
User avatar
penguinflyer5234
Sheep (Developer)
Sheep (Developer)
Posts: 3025
Joined: Wed Jul 23, 2008 1:39 am
Location: Best Southwest

Re: Looking for some Dev

Post by penguinflyer5234 »

Spoiler: hotseat!!!
Image
(don't do this)
...
freegamer
Grub Bug (Rookie)
Grub Bug (Rookie)
Posts: 54
Joined: Sun Aug 10, 2008 1:21 am

Re: Looking for some Dev

Post by freegamer »

Great to see somebody working on it. :)
Free Gamer - open source games resource
FreeGameDev - free software game community
User avatar
bitnapper
Tome Mimic (Module Baker)
Tome Mimic (Module Baker)
Posts: 135
Joined: Fri Jan 30, 2009 3:33 pm
Location: Somewhere near the alps
Contact:

Re: Looking for some Dev

Post by bitnapper »

Seconded :D

I once worked on another editor than cartman which at the moment can be used as a Map-Viewer (found in 'branches/bitnapper'). Maybe it could be usable.
If the work on egoboo is restarted, it may be worth to restart the work on it.

BTW: Working on Linux here with Anjuta.
Two beer or not two beer... rather a malt whisky
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

Hi bitnapper.
we are developing on https://github.com/egoboo/egoboo.
Fork it and if you have something to commit issue a pull request. Eventually we can attract more devs on GitHub than on SF.
I am going to provide a roadmap as soon as possible.

Currently, we fix bugs, convert the source code to C++ (it compiles with C++ compilers but is far from being C++ code) and try to improve the documentation. Regarding the editors: I think penguinflyer5234 has Qt-based model viewer, so it seems like we should integrate all the different mapping, viewing, ... tools into a single Qt-based editor. This is a long term goal but if you can work towards it, go for it. Furthermore a CMake-based build system is on the list as well as unit tests and Travis-CI support.
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

Re: Looking for some Dev

Post by Zefz »

Porting to SDL2 and preferably C++11 would be major steps towards making this project more maintainable.

A long standing problem with the Egoboo codebase has been that it is a complete spaghetti mess. And a lot of hacks for optimizations or portability.... A lot of code cleanup is severely needed to make the code more readable.
The previous two active developers (me and bbirdsey) were only using Windows (visual studio) which also made support for Linux and osx lacking.
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

Zefz wrote:Porting to SDL2 and preferably C++11 would be major steps towards making this project more maintainable.

A long standing problem with the Egoboo codebase has been that it is a complete spaghetti mess. And a lot of hacks for optimizations or portability.... A lot of code cleanup is severely needed to make the code more readable.
The previous two active developers (me and bbirdsey) were only using Windows (visual studio) which also made support for Linux and osx lacking.
Full ack. This is part of the roadmap. SDL2 is crucial because SDL (in particular the image/sound libraries) reached the end of their lifecycles. C++ is kinda a no-brainer, it is/will be supported on all major systems/compilers. I suppose that the code base will shrink dramatically (50% or more). Check the progress on GitHub. FYI, we based our changes on the 2.8.x branch. I consider this less as a problem (needs a bit of experience and time, but in the end it will simply work out), i.e. i can do that in a one-man show (though help is always welcome) but you guys just don't have to bother with it.

My major concerns are: One are simply bugs, in particular numeric overflows/underflows, divide-by-zero and documentation(!).
We have a lot of file formats here, they MUST be documented. Other thing is an unacceptable low frame rate on some systems - eventually the reasons will become apparent by the time the source code becomes more modular. penguinflyer is currently sweeping the source for those NaN/Inf bugs and anything he can fix, I think he'd appreciate some help. Those bugs also slow down C++ conversion.
Other thing are those terrible patterns in which values assigned to struct elements indicate if an object is constructed (i.e. a sphere with radius -1.0f indicates that it is not valid). However, the worst problem is the broken physics system; I can barely play/play test because simply hitting/targeting doesn't work. Movement is sluggish. It got a bit better as a side effect of some fixes but is still not the Egoboo I remember. A crisp, fun hit/targeting/movement physics system is mandatory. Input and or help is appreciated in that field.

Another issue is the broken website, this does not look good. Furthermore, even if we work on GitHub, we should sync the GitHub and SourceForge repos somehow. Releases should be put on SF and linked from the Egoboo site. In the end, the website, this forum are Egoboo somehow. I'd appreciate if someone can take care of that: In particular fix broken links and make a notice that development continues - we need that because we need for example artists/asset/content creators and maintainers.

Artists/asset/content creators and maintainers: The original artists are gone I think. We somehow need to cope with the problem of maintaining/streamlining/creating artwork and/or other assets. In particular, the MD2 files need to be converted to some more modern file formats at some point. A big question will be which? Eventually Collada together with a "baking" tool which takes Collada files as input and creates efficient binary (for production) and textual (for development) representations which can be used by the game. We currently have lore and ideas scattered (there are dev docs in OpenOffice format, there is a Wiki, ...). This needs consolidation, too.

There's nothing that can't be solved; however, a vision for the gameplay and artwork are essential: We need to kinda push Egoboo to 2015 but keep its unique charm: It doesn't take itself too seriously, it knows that it can't be an AAA title (problem of many Open Source games - they just don't know) - keep it small and fun, use the facilities we have text/story, exploit modern effects (shaders, for instance cell shaders might be nice). Eventually, multiplayer and mobile devices should also receive some attention (I saw a Wii port on GitHub somewhere, could be great).

Just some thoughts. Discuss! By the way, nice that some of the old devs show up - welcome back.
User avatar
Zefz
Squirrel Knight (Administrator)
Squirrel Knight (Administrator)
Posts: 3820
Joined: Wed Jul 23, 2008 1:27 am
Location: Norway
Contact:

Re: Looking for some Dev

Post by Zefz »

I have looked at your progress and it's looking good. Still much to do though :) Simplifying and cleaning up code is fun imo, but often difficult without breaking some intended logic hidden inside the unreadable code.

Egoboo should standarize all datafiles into XML or JSON (I prefer XML for c++, tinyxml library is a good choice), this would remove a lot of silly code and all those custom colon parsers currently used.

Sluggish movement and particle effects not hitting their targets are all part of the Physics engine bugs currently in the code somewhere. Many data structures can also be replaced by standard library versions (vectors, lists, hashmaps etc.) now that the std libs of C++ are available.

Currently the Enet network code bloats a lot of the code (and does not even work). I would say remove it and replace it by RakNet or something similar if you are ever serious about adding networked multiplayer (although game networking is *very* difficult to do properly!)

If you haven't already, I would recommend you look into std::shared_ptr instead of using "new" and "delete" which will make memory management MUCH easier!
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

Agree on enet vs. others and yes its hard (but are we here for boring standard tasks?). But i don't have the intention to do that myself at the moment. I want the source to be ready for other developers.

Regarding the JSON/XML I have to say I have objections there; let me elaborate: first of all we should move away from textual representations in releases; I vote for the "bake"-tool approach translating the textural representation into optimized binary representations for loading speed. If the textural representions are JSON/XML or something else does not matter, we're simply about download size and speed here.

However: For the script languages and spec files is suggest a standard lexical, syntactical, semantical checker (i.e. the front-end of a compiler so to say). Reason: If we integrate editing of those files into the editor, we want high-quality errors/warnings and simply speaking: JSON/XML error output usually never beats the quality of even a standard compiler-based solution. They are easy to create:
Consider Lua and just take the lexer and parser and you are left with two files and that is C. JSON/XML is also slower than those solutions. The strongest argument is: We can provide more intuitive and less verbose languages for content creators.

I know that developers are afraid of that work sometimes, however Egoboo builds on basically hand-written parsers (although ... the implementations are not great) and they work for humans very well. This is what I want to keep at all costs - centered around content creators/humans not programmers. I have some (well quite some) background in compiler-construction/formal languages and I can write the specifications for the languages, so this is a standard task for me. The design of those languages should be discussed by all developers though, the implementation is something I can do easily (technically a typical lexer/parser as Egoboo strives to implement takes me one day, no big deal).

I'd like to work less on graphics/sound if possible though. If one wants a custom scripting languages like Lua or something OOP-ish, this is manageable (the runtime environments required are more complex though), but in the end very entertaining and fulfilling to me.
egofoo
Acid Blob (New member)
Acid Blob (New member)
Posts: 28
Joined: Fri Nov 28, 2014 8:23 am

Re: Looking for some Dev

Post by egofoo »

The game logic can indeed be broken easily. We test a lot but in general: Can the old developers check the gameplay once in a while or browse the source code. So far, we have no such issues AS FAR AS WE CAN TELL. Eventually, try to take note how things *should* work and if you feel like something goes wrong, file a bug immediately. For some game logic parts, eventually just thinking about how things are fun to the players is eventually a solution, too.
Post Reply