Page 1 of 1

Thunder&Lightning Needs You!

PostPosted: 07 Nov 2015, 09:56
by indyjo
Hi everybody!

"Thunder&Lightning Needs You!", this is the title of a recent post on the game's web site.

As TnL's original author, I would like to ask for your help in getting TnL up and running again. It really makes me feel bad to admit that currently, I don't even have a playable version at hand.

Wo what can be done? I wouldn like to get TnL to run on something. But I first need to know if anybody was successful at that recently. Do the Windows versions still work? Do the Linux binaries still work? Are there Linux distributions with TnL? Did anybody succeed in compiling TnL on a recent OS?

There is also a poll on the web site about this, so if you don't have time to answer this post, this would be a quick way to give me some feedback.

Jonas

Re: Thunder&Lightning Needs You!

PostPosted: 07 Nov 2015, 13:11
by charlie
Hrm, autopackage... shame that died as a project. Old opensuse packages won't work on Mint 17 so I'm not even going to try those.

Re: Thunder&Lightning Needs You!

PostPosted: 07 Nov 2015, 14:39
by indyjo
It really is a shame. I put a lot of effort in making sure TnL ran on different Linux distros. It was very difficult and every now and then, someone would come around and report that things still wouldn't work with this or that distro. I wish distributions would do this on their own. I personally failed trying to get TnL's dependencies (read: http://iolanguage.org) into Debian. It was simply too much work. Have things gotten better?

Re: Thunder&Lightning Needs You!

PostPosted: 07 Nov 2015, 16:08
by Akien
I had a quick go at compiling TnL, but its dependency iolanguage requires DrawStuff to build (even though I don't see any instructions about this in the README), which seems to be an ODE API but for some reason it's not happy with my currently installed ODE 0.13.1, so I did not try further. IoLanguage does not seem to be packaged in any distro actually: http://pkgs.org/search/iolanguage

TnL also depends on CEGUI 0.7.x which some distros already deprecated in favour of 0.8.x, though it's still available in Mageia (for The Secret Chronicles of Dr. M, the new fork of Super Maryo Chronicles) and still in Debian too due to its well-known inertia.

So it doesn't look like an easy job - but it should still be doable if a couple contributors have a deeper look at it. Maybe the GUI could be ported to CEGUI 0.8.x, and iolanguage could be bundled as an external lib in the TnL source since no distribution seem to provide it. Then there's the question of this DrawStuff dependency to sort out.

Re: Thunder&Lightning Needs You!

PostPosted: 08 Nov 2015, 11:56
by indyjo
Akien {l Wrote}:I had a quick go at compiling TnL, but its dependency iolanguage requires DrawStuff to build (even though I don't see any instructions about this in the README), which seems to be an ODE API but for some reason it's not happy with my currently installed ODE 0.13.1, so I did not try further.


My guess is that you can simply ignore that add-on. Most of Io's add-ons are pretty useless for TnL. Without being 100% sure, you probably only need these:
  • Random
  • Range
  • User
Hope that helps!

Re: Thunder&Lightning Needs You!

PostPosted: 08 Nov 2015, 22:41
by indyjo
Update: After several hours, today I got TnL to compile on my Mac. Yes, "compile". No, not "link". Linking fails due to a chaos of 32/64 bit versions of the dependencies TnL uses. Enough for today.

Re: Thunder&Lightning Needs You!

PostPosted: 12 Nov 2015, 00:30
by charlie
Unfortunately it is probably just going to be one of those hard slogs where you have to keep putting one foot in front of the other until you eventually get to see light at the end of the tunnel. You'll probably have to update a few libraries (such as CEGUI) in order to make it easier to build and deal with the coding consequences of that, as well as cut a few of the more obscure ones and deal with covering whatever features they provided.

Re: Thunder&Lightning Needs You!

PostPosted: 05 Dec 2015, 23:09
by indyjo
After a couple of (horrible) weekends fighting obscure dependency problems and hidden memory corruption bugs, I can finally report a breakthrough: Thunder&Lightning is running again, at least on my Mac! :)

I had to put a lot of effort into Io (the scripting language) and into CEGUI. Fixed a nasty memory corruption bug in the former and managed to compile a minimal version of the latter. Version 0.7 mind you, I really don't want to be forced to upgrade before I really have to. Incredible how bits rot in a couple of years, though.

Bildschirmfoto 2015-12-05 um 22.51.28.jpg
This tank isn't the only one receiving a blast from the past

Re: Thunder&Lightning Needs You!

PostPosted: 06 Dec 2015, 01:09
by charlie
Congratulations on getting it running again. Any chance this'll work on Linux?

Re: Thunder&Lightning Needs You!

PostPosted: 06 Dec 2015, 19:47
by indyjo
A good chance, I'd say! If it's true what you said, that distros are keeping CEGUI 0.7.9 around, then the only challenges are Io (not as bad as it was, thanks to CMake) and OpenAL. I have no clue if that's still in good shape on Linux.

I don't have a Linux PC around anymore, and I don't think running TnL in a VM is an option. But the changes I made are on GitHub now and I will support everybody who decides to give it a try.

Maybe there are people with experience in providing game binaries among your readers?

Re: Thunder&Lightning Needs You!

PostPosted: 06 Dec 2015, 22:24
by Akien
indyjo {l Wrote}:A good chance, I'd say! If it's true what you said, that distros are keeping CEGUI 0.7.9 around, then the only challenges are Io (not as bad as it was, thanks to CMake) and OpenAL. I have no clue if that's still in good shape on Linux.

Well don't count too much on CEGUI 0.7.9 staying around for long either; for Mageia I'm only keeping it for The Secret Chronicles of Dr. M, and they are working on moving to a new system, so I'll drop cegui 0.7.9 as soon as I have the possibility.

Debian has CEGUI 0.8.x in its testing repos, so it will also end up in stable in the long run. So working on upgrading CEGUI should likely stay high on the todo list, though it's not the most critical part right now as you noticed.

Re: Thunder&Lightning Needs You!

PostPosted: 06 Dec 2015, 22:57
by charlie

Oooo I didn't know about this, good that Secret Maryo didn't just die, but got forked. (Sorry, a bit off-topic.)

Re: Thunder&Lightning Needs You!

PostPosted: 29 Dec 2015, 16:28
by indyjo
Ok friends, I am proud to semi-officially present the result of my work:
Thunder&Lightning 2015-12-29.dmg

As you can tell by the name, it's Mac only, but I guess some of you guys switched to that side, too?
I fixed some performance problems and there is even a new mission to enjoy!

There is lots of legacy software involved here, so a couple of things might not work. I already know that full-screen doesn't work, due to libSDL 1.2.

Anyway, love to hear feedback!
Jonas

Re: Thunder&Lightning Needs You!

PostPosted: 30 Dec 2015, 17:13
by charlie
I suspect the number of Mac users is very small. I could test on Windows or Linux, but not Mac unfortunately.

Re: Thunder&Lightning Needs You!

PostPosted: 30 Dec 2015, 19:47
by indyjo
Anyway, it's officially out now and I hope that we can tackle a Linux and Windows release in 2016. My goal is having TnL in the distros one day, so that it can survive some time while I'm busy with my life. Oh, time wasn't such a scarce resource when I was still a student...

PS: I hereby state that when I'm rich and old, or whichever comes first, I will continue making Thunder&Lightning into what I had in mind for it ;-)

Re: Thunder&Lightning Needs You!

PostPosted: 31 Dec 2015, 08:56
by Julius
Remaking it based on a better maintained platform (Torque3D? Godot?) would make it more likely to succeed though. Or you could join these guys:
viewtopic.php?f=22&t=6344 and make it a sci-fi mod ;)

Re: Thunder&Lightning Needs You!

PostPosted: 25 Feb 2016, 20:45
by wirser
Hi,
I am new to Tnl but ran across it a couple of years ago and recently found an old bookmark and just revisited.

Anyways I pulled source fro Git and tried to compile on Unbuntu 14.04 x86-64

First autotools complained about README not in source directory - I
"touch README"
got around this

Next concerns IO
1 - configure does not report IO missing
2 - even after many attempts to install IO ( deb pkg , git source compile and installion)
A- IoObject.h did not get installed using "sudo make install" but is present in IO source tree
B - even trying "./configure --with-io-libs=/{path_to_IO-source)/io/build/_build/headers/IoObject.h
make complained about not finding IoObject.h

As time and computer availability allow I will try to track down, but trying to contact IO devs without facebook is yet not possible

Any suggestions are welcome

Re: Thunder&Lightning Needs You!

PostPosted: 01 Mar 2016, 19:27
by indyjo
Hi wirser,

thanks for taking on the daring endeavor of compiling TnL :-)

Yeah, the README file has been moved and configure complains about that. Noted (actually, this is part of this issue.

Unfortunately, Io (TnL's scripting language) doesn't install its header files on "make install", thats why I chose to reference it's source folder. Back in the days, Io didn't have a CMake-based build system, so things might look a little different by now.

The configure script accept a parameter "--with-io-dir=..." which has an effect equivalent to
--with-io-cflags="-I$IO_DIR/_build/headers"
--with-io-libs="-L$IO_DIR/_build/dll -liovmall"

You should be able to play around with these a little to get equivalent results.

That's about how far I can help you right now without a proper Linux installation at hand. It would be great if you could post your result on success. Otherways, don't hesitate to ask further, I can dig in deeper given some time.

Re: Thunder&Lightning Needs You!

PostPosted: 03 Mar 2016, 18:22
by wirser
well I was able to finish compile but not linking
to compile I did the following

CEGUI includes needed to be changed
from
#include <CEGUIBase/CEGUI.h>
to
#include <CEGUI/CEGUI.h>

in files - ./Thunder-Lightning/TnL-source/src/CEGUIEventFilter.cc
./Thunder-Lightning/TnL-source/src/game.cc
./Thunder-Lightning/TnL-source/src/modules/ui/MainGUI.cc
./Thunder-Lightning/TnL-source/src/modules/ui/MainMenu.cc
./Thunder-Lightning/TnL-source/src/modules/ui/MissionSelector.cc
./Thunder-Lightning/TnL-source/src/modules/ui/SettingsDlg.h
./Thunder-Lightning/TnL-source/src/TnlCeguiLogger.h


from
#include<CEGUIBase/CEGUIBase.h>
to
#include<CEGUI/CEGUIBase.h>


in files
./Thunder-Lightning/TnL-source/src/game.cc
./Thunder-Lightning/TnL-source/src/modules/ui/MainGUI.h
./Thunder-Lightning/TnL-source/src/modules/ui/MainMenu.h
./Thunder-Lightning/TnL-source/src/modules/ui/MissionSelector.h
./Thunder-Lightning/TnL-source/src/modules/ui/SettingsDlg.h


from
#include <CEGUIBase/CEGUILogger.h>
to
#include <CEGUI/CEGUILogger.h>
in file
./Thunder-Lightning/TnL-source/src/TnlCeguiLogger.h


from
#include <CEGUIOpenGLRenderer/CEGUIOpenGLRenderer.h>
to
#include <RendererModules/OpenGL/CEGUIOpenGLRenderer.h>
in file
./Thunder-Lightning-mod/TnL-source/src/game.cc

during compile in file

sound.cc: In function ‘void check(ALCdevice*)’:
sound.cc:333:56: warning: invalid conversion from ‘const ALCchar* {aka const char*}’ to ‘const ALbyte* {aka const signed char*}’ [--]
const ALbyte * errtxt = alcGetString(NULL,error);
^
sound.cc: In constructor ‘ALSoundMan::ALSoundMan(Ptr<IConfig>)’:
sound.cc:355:54: warning: invalid conversion from ‘const ALCchar* {aka const char*}’ to ‘const ALCbyte* {aka const signed char*}’ [- ]
alcGetString(device, ALC_DEVICE_SPECIFIER);

temporary solution was to add -fpermissive to cxxflags in Thunder-Lightning/TnL-source/src/Makefile

__________________________________IO woes below______________________________

in Thunder-Lightning-mod/TnL-source/config.h.in I came up with this to be able to properly pass IO variables on configure command line

from [IO_DIR="$withval"])

to [IO_DIR="$withval"]
IO_CFLAGS="-I$IO_DIR/_build/headers")

and removing

if [[ "$IO_DIR" ]]; then
if [[ -d $IO_DIR/libs/basekit ]]; then
dnl New-style Io distribution
IO_CFLAGS="-I$IO_DIR/_build/headers"
IO_LIBS="-L$IO_DIR/_build/dll -liovmall"
else
dnl Old-style Io distribution
IO_CFLAGS="-I$IO_DIR/vm/_include -I$IO_DIR/vm/_include/base"
IO_LIBS="$IO_DIR/vm/_libs/libIoVM.a"
fi
fi

this allowed me to attempt to try different combinations attempting to get Tnl to compile without IO errors
for some reason even after getting IO include errors cleared and running
./configure as follows

./configure --with-io-cflags=-I/usr/include/io --with-opengl-cflags=-I/usr/include/GL --with-openal-cflags=-I/usr/include/AL --with-io-libs=-L/usr/local/lib/libiovmall.so,-L/usr/local/lib/libbasekit.so,-L/usr/local/lib/libcoroutine.so,-L/usr/local/lib/libgarbagecollector.so LIBS=-lCEGUIBase

I still get errors during linking such as

/Thunder-Lightning-mod/TnL-source/src/modules/scripting/NMatrixMapping.cc:183: undefined reference to `IoState_error_
Thunder-Lightning-mod/TnL-source/src/game.cc:161: undefined reference to `IoState_doFile_

I am starting to believe IO source from git needs a severe attitude adjustment 8^0
Note: configure line shown is only my latest attempt along with a small example of my linking errors

when time allows I'll try a bigger 2x4 on IO

Re: Thunder&Lightning Needs You!

PostPosted: 14 Mar 2016, 18:23
by palrogg
I Jonas,

I tried the Mac build on Yosemite yesterday. It took me some time, but I had a lot of fun!

Here is my feedback:

First I choosed the AI demo, which ran fine. Then I tried Carrier Defense. Actually I didn't understand what the weapon range is, but I took down some enemies :-)

The gameplay got difficult when I tried the Tutorial. The "I" key, which is supposed to skip explanations, actually ended the whole mission.

On my european keyboard, keys doesn't match. I changed to a US keyboard layout but it didn't solve the problem. I could't control the throttle with the 1-9 keys, so I continuously turned the autopilot to on and off to avoid a crash.

Then I tried to set "key down" and "key down" for "decrease throttle" and "increase throttle" in the preferences. But maybe these keys are hardcoded? It kept controlling the plane pitch. When I set 9 and 0 for increase/decrease throttle, it worked.

Finally, I downloaded the sources and opened the project in XCode, but all frameworks have this relative path: ../../../../../../jonas/Library/Frameworks. I must admit I wasn't patient enough to correct all paths ;-)

Small hint: I found it difficult to play with 250 ammo when there is multiple enemies (e.g. tank mission). And on my computer, nothing happened when I tried the "Resume game" button (also a problem with absolute / relative paths?). I took screenshots of all this, in case it is helpful.

Edit: I mixed up two words :)

Re: Thunder&Lightning Needs You!

PostPosted: 19 Mar 2016, 19:28
by wirser
Update
using git io source from 02-23-2016
I've compiled and installed using build.sh --linkinstall
note using sudo make install doesn't install headers for :basekit, coroutine, garbagecollector, iovm

anyways I've tried ro compile Tnl as follows
./configure --with-io-cflags=-I/home/none/build/io/build/_build/headers --with-opengl-cflags=-I/usr/include/GL --with-openal-cflags=-I/usr/include/AL --with-io-libs=-L/home/none/build/io/build/_build/dll/ LIBS=-lCEGUIBase
make >> ./make.out 2>&1
with the following results

first error
build/Thunder-Lightning-mod/TnL-source/src/game.cc:1092: undefined reference to `IoState_symbolWithCString_'

used grep
grep -r "IoState_symbolWithCString_" ~/build/io/build/_build/headers/

which returned
/home/none/build/io/build/build/headers/IoState_symbols.h:IOVM_API IoSymbol *IoState_symbolWithCString(IoState self, const char *s);
/home/none/build/io/build/build/headers/IoState_symbols.h:IOVM_API IoSymbol *IoState_symbolWithCString_length(IoState *self, const char *s, size_t length);
/home/none/build/io/build/build/headers/IoSeq.h:#define IOSYMBOL(s) IoState_symbolWithCString((IoState)IOSTATE, (char *)(s))
/home/none/build/io/build/build/headers/IoState_inline.h:#define SIOSYMBOL(stringConstant) IoState_symbolWithCString(self, stringConstant)

in /src/game.cc added
#include
no change: changed to
#include
no change: changed to
#include

ERROR CHANGED TO
In file included from game.cc:49:0:
/home/none/build/io/build/_build/headers/IoState_inline.h: In function ‘IoObject* IOTRUE(IoObject)’:
/home/none/build/io/build/_build/headers/IoState_inline.h:41:20: error: redefinition of ‘IoObject IOTRUE(IoObject)’
IOINLINE IoObject *IOTRUE(IoObject *self)
^
In file included from /home/none/build/io/build/_build/headers/IoState.h:209:0,
from /home/none/build/io/build/_build/headers/IoObject_inline.h:12,
from /home/none/build/io/build/_build/headers/IoObject.h:243,
from ./interfaces/IActor.h:4,
from ./modules/collide/Collidable.h:5,
from ./modules/collide/CollisionManager.h:11,
from game.cc:25:
/home/none/build/io/build/_build/headers/IoState_inline.h:41:20: error: ‘IoObject IOTRUE(IoObject*)’ previously defined here
IOINLINE IoObject *IOTRUE(IoObject *self)

posting to io forum

I will post as news is avai;able

Re: Thunder&Lightning Needs You!

PostPosted: 25 Mar 2016, 18:27
by wirser
I started a new topic on Tnl contributors to con tune the compilation insanity

maybe the moderator can transfer my long postings to the new thread