-
Posts
1.098 -
Joined
-
Last visited
-
Days Won
3
Everything posted by hyperion
-
Thanks for the long answer. That has some issues with macOS and its sdk If you want to build on an old mac what is the issue with installing a more recent compiler? Just treat it like any other dep. I'd like to help with that. Seemed a bit annoying with premake The manifest is an xml file, guess there should be a fancy gui on windows to generate it. Then you simply include it in the rc file and the resource compiler will do the right thing. Is somewhat orthogonal to what you do with your patch. https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests in the rc file add: IDR_RT_MANIFEST1 RT_MANIFEST "pyrogenesis.exe.manifest" done. The minimalist one I use for mingw to replicate what I call the linker hack: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> But there is a lot that can be set like dpi awareness etc, then people don't have to set properties to work around green stripes I suspect A lot of maintainers are annoyed that. 10 years later still stuck with premake ...
-
Some time passed and I thought I post an update on the status, haven't given up just got sidetracked: Fixed the user.cfg issue mentioned earlier but found one with replays (can't rewind to start of line). Fixed spidermonkey for mingw64-runtime >= 9.0.0 Found out where the debug info got lost. Premake has a very hidden feature to add -s to the linker options unless you explicitly enable debugging within the premake script! Got fed up with premake enough to write a cmake script. Can even package mods . Probably only works for Linux right now. Most of wdbg restored. Missing stackwalker might not be easily fixable due to dwarf vs pdb? Anyway low priority. wseh might be doable as mingw 64 bit unlike 32 bit actually uses seh, have to investigate further. collada only used during caching/building mods (lack of nvtt prevented me from even trying) and so I only noticed during cmake porting that some more work might be needed than originally thought. To conclude, a 64 bit port seems quite doable, the issues I ran into are mostly due to using mingw instead of msvc. Next steps: use cmake with mingw try building atlas find out what's wrong with replays Current wishlist for A26: Drop nvtt for something else rather earlier than later, not gonna fix it, I have no clue what an appropriate replacement could be. Seems to be not that much work once you know the replacement and are somewhat familiar with texture conversion in 0ad. Only use <thread> instead of pthread and win threads. 80% of the work seems updating mongoose. use std:filesystem instead of custom implementation and sometimes boost. Use a proper pyrogenesis.exe.manifest instead of those code and linker tricks which seem to tell windows to run in win98 compat mode. Might fix some issues users see currently.
-
Batch Training (The Good, The Bad and The Ugly)
hyperion replied to Micfild's topic in Gameplay Discussion
0.2s is indeed so little that you could say it's effectively the same thing. Still it's a penalty nonetheless, and if needed, could be adjusted. -
Batch Training (The Good, The Bad and The Ugly)
hyperion replied to Micfild's topic in Gameplay Discussion
No, batches take the same time to train but there is a pause of one turn before autotrain adds a new batch to the effective queue. If you manually add batches they go directly to the effective queue and so the 0.2s gap doesn't happen. -
Nice, anyway, in maps there are often a clump of school of fish, how would that look?
-
Choice of Programming Languange
hyperion replied to Faizan Khalid Mohsin's topic in General Discussion
20 years ago C++ was the only reasonable choice for the engine, I'd still pick it today. As for scripting for mods, lua might have been an option but I guess javascript was a decent choice as well, even more in hindsight. As for writing the whole game in python, besides not being as widespread or mature at that time, search for GIL. There is no "database", just the filesystem. -
Another update: If I disable the optimizer in gcc the game actually runs, just played a game in wine. The only issue I noticed 0ad refuses to write a user.cfg. Also packaged tinygettext from upstream and using it as external dep. libsdl2 and rust got an update and no longer need any changes to be usable. So the current status is: Mostly runs with all optional stuff except for lobby disabled. Nothing from ./libraries, nor premake nor tinygettext from 0ad are used. Only spidermonkey and 0ad need patching. Fcollada needs a minor fix wrt pkg-config file. The rest is vanilla (Gentoo patches only if there are any). No wseh nor wdbg in 0ad, I'm gonna leave that out. Slowly getting there.
-
With 768 min height x1.4 fits into 1080, x2.8 fits into 2160. So those two are probably the most meaningful options. x1.5 may lead to broken UI with a FullHD display.
-
It's getting off topic. For a project like 0ad the only way I see it to be finished is when it is dead. So I hope it will never be finished but be maintained and worked on for years to come. LibreOffice or the Linux kernel aren't finished either but provide an api which they promise to not break if at all possible. If needed the API will be marked deprecated and use of will possibly spit out warnings for quite a while before being removed. There is no reason 0ad couldn't do the same if it wanted. But supporting >= without a stable api makes no sense what so ever. A modder should only ever use >= if he is exclusively using such an stable yet till now and for the foreseeable future inexistent api. PS: You could also have the mods installed into a versioned directory like replays, which could alleviate the issue of broken installs to some degree.
-
if a mod only uses what is marked as stable/public api then it should be guaranteed to work with future releases. As 0ad doesn't have an such an api for modders there is no point in supporting the >= specification in the first place (It's always a lie). You could just treat >= as = for backward compat and issue a warning for the mod developers that >= is gone. This would prevent lot of "can't start new release" issues at little to no cost.
-
Documented and stable.
-
It might make sense to not allow >= at all but a list of = only unless you start maintaining a proper api which I doubt will ever happen
-
Some small updates: I have a static pyrogenesis.exe. It runs till after reading configuration but then fails with a pagefault (outside legal mem range). Running gdb within wine seems tricky. By default the backtrace is only framepointers and if I try dwarf-2 symbols which is apparently supported winedbg crashes. So I put debugging it aside for now. I started cleaning up my patches, only over 60 left of more than 150. I also packaged premake-5.0.0_alpha16 and rdb's fcollada and use them as external tool respectively lib; they work both fine it seems Building nvtt on mingw-w64 is completely broken I found out.
-
How to correctly implement new civs to the game?
hyperion replied to PyrrhicVictoryGuy's topic in Tutorials & Guides
Oh, thanks. At least it makes it valid json ... -
How to correctly implement new civs to the game?
hyperion replied to PyrrhicVictoryGuy's topic in Tutorials & Guides
"Buddhist Evangelism" isn't a { key : value } pair, so no braces around it, like for genericName. -
In reality it's hard to spot fish. So job well done. Maybe a hotkey to select all gaia in a selection rectangle, like observers can is all that's needed. Wouldn't be limited to fish either. There are other things hard to spot which is a given if it has to be realistic and look beautiful. Anyway, any of the make ugly but functional visual changes for competitive play belong into mods.
-
Goldfish, they are colourful, so you easily see them.
-
Arguably yes, but it shouldn't crash with the integrated gpu either.
-
There is but that's a poor man choice. Premake will reject --cc=icc (cc option used to set toolset analog to os option ), so will default to probably gcc. if cc == nil then filter { "toolset:clang" } cc = "clang" filter { "toolset:gcc" } cc = "gcc" filter { "option:icc" } cc = "icc" filter {} end So the above only works because we put icc last. Often that doesn't work, if we could use toolset:icc the premake5.lua could be written a lot cleaner.
-
Agreed, just that premake terminology is rather awful. I pass in --os=windows --cc=mingw (for better or worse), so os.istarget("windows") and os.ishost("linux") become true. Then there is the premake command system { id } which I believe sets --os=id and results in os.istarget(id) to become true. Hard to not be confused at this point. Anyway I can't take the current os.istarget("windows") path here for cross-compilation. I could rename CHOST to target_triple thou that wont change the logic.
-
Was wondering why my wdbg_stub didn't get picked up, turns out due to a bug I introduced into premake5.lua the windows-only cpp files got omitted during compilation So, some time later that stuff is fixed and builds as well. Came across a curious thing static_assert((void*)intptr_t(-1)) in wmman, gcc barfs on the reinterpret_cast here, but even if not I don't see the purpose of this assert. May someone enlighten me? So, more serious business, I started to look into how to properly implement the changes into premake5.lua. Some googling makes me feel I'm among the first to ever cross-compile with premake. Many issues to address. premake-core has no icc support (--cc=icc is invalid) (optional, highly desirable) premake-core does not respect RC respectively RESCOMP (required, some symlink with PATH hacking might work) So how to handle this? Patching the copy in tree seems beyond ugly. windres doesn't support -isystem, only -I for includes So no sysincludedirs permitted. Don't use them? Build rc as a standalone static project? Does VS have something like whole-archive? Simply drop the error_dialog? Below a patch to set cc and arch usable for cross-compilation, anyone sees a setup this might break? premake-cc-and-arch.patch
