sfttech / openage Goto Github PK
View Code? Open in Web Editor NEWFree (as in freedom) open source clone of the Age of Empires II engine :rocket:
Home Page: http://openage.dev
License: Other
Free (as in freedom) open source clone of the Age of Empires II engine :rocket:
Home Page: http://openage.dev
License: Other
Any luck getting it built on Ubuntu 14.10 ?
I keep getting this :
(I have all the libraries installed, just don't know how to communicate that to the build system)
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
(Required is at least version "3.3")
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindPythonLibs.cmake:208 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
cpp/CMakeLists.txt:74 (find_package)
Hi,
I've had the same dream like this project and started coding back then. Here's the link to genieutils, a library that is able to read .dat files (and partly other formats)
https://github.com/Tapsa/genieutils
and also a lib to read the language.dll files:
Basically a large second screen minimap with more detail. Perhaps showing unit icons instead of just colored pixels.
The Battlefield version is done using a web interface (not sure if connected to local game or central server). For openage it could be done in any variety of options.
I bring this up since I've been doing some basic research into this before I discovered openage. My plan was to either intercept network traffic (like voobly does for observer proxy) or read the record game file as it is being written (assuming it dumps fairly often).
There is some code out there to parse the starting point of recorded games and stats and what not, which voobly uses on their site, but not a lot of info on the meat of the file. Does openage support recorded game files? As such I imagine I could look there.
I would be interested in creating this if it sounds feasible, although my plan was do it as a local webservice. If there is information on recorded game format perhaps it would be better to create it standalone so it works for AoC, HD, and openage. Thoughts?
Currently, each screenshot is put to /tmp/openage_00.png
.
This should be updated to ~/.openage/screenshots/openage_xxxx.png
, where xxxx
is incremented automatically (start counting at 0
!).
For debugging purposes, the game version described in #27 should be included on the screenshots when it's not disabled by the user.
The convert script should detect the present version of the original game and provide the matching file actions. This allows us to support different patch levels as 1.0c and better AOE:HD support.
@zuntrax started implementing the ideas which need to be adapted to the new codebase.
nyan is the future data storage format for openage.
It's designed for moddability and human-readability.
Development takes place here:
https://github.com/SFTtech/nyan
Tasks:
Finding Python with cmake will not work on OS X if python3 is installed via homebrew.
See the cmake issue, the homebrew issue and #16 . There has not been any activity regarding the cmake issue since April.
An alternative solution is this cmake module. It's licensed under BSD. Details regarding licensing can be found here.
For a temporary fix when using homebrewed python3, use the following to configure the project *you might need to adjust the version):
--raw-cmake-args \
-DPYTHON_INCLUDE_DIR=/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/include/python3.4m/ \
-DPYTHON_LIBRARY=/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/libpython3.4.dylib \
-DPython_FRAMEWORKS=/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework
In addition to test cases, we should have some kind of static code analysis integrated into the buildsystem.
It would be great to have simple SDL rendering without OpenGL for old & troubled video chips, that has no hardware acceleration for 3D & OpenGL.
Neighbouring non-water tiles should be replaced by beach tiles when placing water tiles.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The log reads this:
DBG0 inserting new chunk at (00,00)
DBG0 neighbor 0 not found.
DBG0 neighbor 1 not found.
DBG0 neighbor 2 not found.
DBG0 neighbor 3 not found.
DBG0 neighbor 4 not found.
DBG0 neighbor 5 not found.
DBG0 neighbor 6 not found.
DBG0 neighbor 7 not found.
It usually happens to me on a cold boot. It fixes by itself, I don't know what's the cause. When it fixes for the first time, it keeps working afterwards.
I'm on Arch Linux x86_64, currently running GNOME3.
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
Hi,
when trying to flattr this really nice project via the button in the readme I get:
Sorry, content not supported
Unfortunately we can't support flattring this content. We couldn't find an owner for it and thus can't flattr it - sorry for that.
If you think we should've been able to find an owner, then contact our support. If you want to find something else to flattr, then visit our catalog.
Maybe a problem with the button, maybe something temporary - just wanted to let you know :)
Best regards
Niklas
I would like to point out that identifiers like "_CALLBACKS_H_
" and "_ENGINE_TERRAIN_H_
" do not fit to the expected naming convention of the C++ language standard.
Would you like to adjust your selection for unique names?
The sound playback when planting buildings does not work. The selection of the creation sound happens in the temporary game loading routines, which seems to fail to associate the correct sound ids.
We need support for displaying any text in the game.
This allows us to e.g. display debug messages for current coordinates of objects which would otherwise spam the console.
The first step would be creating a new logging function, which gets the display coordinates as first input.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
I got an issue trying to install it on fedora. I replace each debian package described in the installation instructions to the packages found in fedora repository (which the command would be sudo yum install cmake python3-devel SDL2-devel ftgl-devel SDL2_image-devel opus-tools glew-devel freeglut-devel libpng-devel freetype-devel opusfile-devel mingw32-fontconfig
, after it is working we can even add in the documentation). The problem is with the FONTCONFIG_LIBS
variable (the output message claims, the whole output is here), which I think it would need to be defined but I don't know to where exactly, any guess? Thank you guys in advance
sys.path
AGE2DIR
(env variable at first)openage.convert.__main__.main()
openage
needs random map generation.
For that we probably need two approaches:
The important part is the configurable RMS generator.
Just tried to build on Mac OS X 10.10 and always getting this:
CMake Error at /usr/local/Cellar/cmake/3.0.0/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
Could NOT find PythonLibs: Found unsuitable version "2.7.6", but required
is at least "3.3" (found
/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/libpython3.4.dylib)
Call Stack (most recent call first):
/usr/local/Cellar/cmake/3.0.0/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:341 (_FPHSA_FAILURE_MESSAGE)
/usr/local/Cellar/cmake/3.0.0/share/cmake/Modules/FindPythonLibs.cmake:276 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
cpp/CMakeLists.txt:74 (find_package)
The cmake from brew (3.0.2) didn't work. I've installed 3.0.0 from https://raw.githubusercontent.com/NikolausDemmel/homebrew-devel/master/cmake.rb (with some sha1 manipulation), still no results.
Will be thankful for any support, and will be glad to help with Mac testings.
The hotspot of buildings sprites may be offset. The placement algorithm probably needs to be fixed, the calculation is done in the terrain_object class. This algorithm needs to be improved, the hotspot is not correctly aligned with the terrain grid.
Seems a bit silly to have a 1.0 and 2.0, 2.1, 2.2 releases before the game is even playable. Perhaps reroll tags as 0.1, 0.2, 0.3, ... Unless there is something depending on them. Obviously, the best to change tags, but it just seems strange to start first usable release on 3.x or even higher.
Also got the high version number feedback when submitting to distro official games repository as well.
Either way http://semver.org/ seems like the generally good practice going forward.
After the game loads fully (took a while)
The map is shown with some holes on terrain. I don't know if it's caused by a difference in age2HD media content or by other bug related with the open driver (radeonSI)
Here are some additional info:
glxinfo:
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB,
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD ARUBA
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.1
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile}
lspci|grep VGA:
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Trinity [Radeon HD 7520G]
I can also provide the output from the terminal while running openage. Where can I post the file?
Adding
set(Python_ADDITIONAL_VERSIONS 3.4)
to the beginning of cpp/CMakeLists.txt corrects this issue.
Alternatively, CMake 3 could be a (more clearly specified) requirement.
The asset loading may take some time, especially it's currently dumb and just loads everything instead of accessing on demand.
There should be some "progress bar", "spinner" or at least on-screen hint that assets are being loaded. Probably related to #70, a black screen is likely to be seen when waiting for the asset loading.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Players choose the proprietary game instead of our freedom-respecting alternative.
Implement an asset loader that overlays multiple asset source directories. For an installed game, this should be /usr/share/openage
(installed by the package) and ~/.openage
(the user-writable "userasset" folder).
You can also specify further paths to look for packs.
The userasset folder is used for storing files that are created by the user (e.g.: datapacks (converted game assets)), savegames, screenshots, etc.
The "asset locating mode" may be specified via --assets={dev, installed}
. If not specified, it's auto-determined from the files in the folder where the executable lies (does openage_version
exist?). dev
=> look in ./assets.
Performance optimization feature: Support packing folders in (tar) archives.
The AssetLoader takes an asset path (such as termcolors.docx
) and an optional "on-modification" callback function (think inotify, manual "reload-assets" instruction) and returns a file-like object for reading (or raise an Exception).
All code in openage should rely on the AssetLocator instead of directly opening files.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
They seem hard to fix... any ideas? Here's an example.
The preprocessor hackery has to be replaced by the new openage.codegen
python generation.
This should create the necessary headers and should end the pain of the current C preprocessing implementation.
The implementation is located in libopenage/coord
.
Some parameters (like "${BUILDSYSTEM_DIR}/modules/" and "${GLOBAL_ASSET_DIR}") are passed to CMake commands in your build scripts without enclosing them by quotation marks. I see that these places will result in build difficulties if the contents of the used variables will contain special characters like semicolons.
I would recommend to apply advices from a wiki article.
Very related to the conversion targets (#79) and the version detection (#61) is the support of converting media and game files from setup disk images. The Python module openage.cabextract
provides cab extraction features needed by the .cab
files on the disc.
fslike
abstraction to mount all archives on disk.The invocation should originate from openage/convert/driver.py
.
On Debian testing (with python3.3 and 3.4 interpereters installed, but only python3.4 headers), the build system attempts to use 3.3 headers that do not exist. Inspection of the CMake cache suggests it's attempting to use the 3.3 interpreter with the 3.4 headers; PYTHON_EXECUTABLE
is /usr/bin/python3.3
, while PYTHON_INCLUDE_DIR
is /usr/include/python3.4m
. The compiler is finally invoked with -I /usr/include/python3.3m
, however.
The travis build could be sped up significantly by self-hosting some pre-built deb files and/or pulling deb files from PPAs. Any comments?
Buildings simply do not render under r300g (on a Mobility FireGL V5250, like Radeon X1700) : http://plantmonster.net/~oldlaptop/images/openage-blackbuilding.png
The following fragment of console log seems relevant:
r300 FP: Compiler Error:
../../../../../../src/gallium/drivers/r300/compiler/r500_fragprog_emit.c::emit_paired(): emit_alu: Too many instructions
Using a dummy shader instead.
Whether this can or should be fixed on openage's end, I don't know. Perhaps it's even a hardware limitation.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Studied two days if the game under the archlinux system installation, the results are not ~! , please show ~ I love this game, hope to be able to play on
Breaking off from #81...
I have openSUSE build working (download instructions).
I have fedora and openSUSE builds working (download instructions).
I have script created (which I need to commit somewhere, putting in package repo almost seems right, but not quite...I'll consider it). The script can be setup on cron, pick the latest commit, update package repo and .spec file for latest commit tar ball, and push changes to repo to trigger build. I'll get that setup on remote server in the future, could possible be done via travis as well.
It may also make sense to move to something like home:boombatower:openage
as the repository? I was originally branching games repo since that was my target, but on my request to move into official games repo it was suggested that non-playable games are probably not a good idea.
It would be slick if we did the necessary work to support building for .deb packages. https://en.opensuse.org/openSUSE:Build_Service_Debian_builds Perhaps someone is familiar with deb packaging? Then we can get nightly builds for all major distros from one place!
Open Build Service (OBS) is great in that it provides the familiar fork/branch and pull request workflow for packaging in addition to allowing us to package for all major distros in one place. Can even make changes through web interface!
Currently, the openage.convert
script always executes the conversion in a fixed manner, the only adjustments possible are filename matches for archive extractions.
Please implement some job-like architecture so that each conversion task can be selected separately and grouped together to common conversion targets.
The file that currently hardcodes the conversion procedure is py/openage/convert/mediafile.py
.
to run a :FATAL Exception: file nonexistant: .//converted/termcolors.docx
py/openage/convert/dataformat.py:1051: should be snippets_body_sorted
instead?
This codepath is not hit in normal usage, only if you pass -vvv
or similar.
The openage.convert
script should be invoked by the game.
The game launches its own Python interpreter to perform the conversion.
The input path could be queried interactively someday,
the output path equals the userassets directory which will be ~/.openage/
later.
openage --convert
invokationcpp/python.cpp
)sys.path
AGE2DIR
equals the argument to --convert
openage.convert.__main__.main()
The rendermanager is some kind of batching mechanism to optimize the opengl calls.
This mainly means to reduce the amount of texture and shader switches for now.
Everything that should be rendered is submitted to the render manager. It orders the jobs and finally draws them in the optimized, but correct order.
The remaining features are tracked in the TODO-list below.
We need a better logging system.
Filtering messages, verbosity levels, origin tracking, backtraces, ...
What I Do And What I Get:
I'd like to test the in_memory sound instead of the dynamic... but just changing this
gamedata::audio_loader_policy_t::DYNAMIC
to this:
gamedata::audio_loader_policy_t::IN_MEMORY
on game_main.cpp:205 doesn't work at all (no sound).
Can anyone reproduce? ๐ ๐
Support converting aoe:hd assets.
-- creating issue to track progress as suggested by TheJJ in irc. --
Also perhaps #1 is not as much of an issue since it allows those that own HD copy (much easier to get ahold of) to play on openage.
The $10 bounty on this issue has been claimed at Bountysource.
If people create screenshots which should illustrate positioning, rendering, etc.. problems, it'll be easier to debug if the used gameversion is directly visible.
The game version could be displayed in the lower left corner. Toggling its display with e.g. F3 might be helpful (like minecraft did it).
Windows should be a major supported target either by native compilation or cross-compilation.
Openage currently builds fine under Win32 with some minor patches ( http://i.imgur.com/Hxpym3K.jpg ) but there is no documentation available or binaries. I'll document the steps i used to build for win32 below:
There is a $30 open bounty on this issue. Add to the bounty at Bountysource.
As per #81, the .desktop
file would like to use the following command
openage --data="~/.openage/assets"
It appears that openage does not expand that and looks for literally ~/.openage/assets
. Would be great to see it expand the argument.
Would be nice if you can add support to build a bridge in game mode. This is posible in map editor but not in game.
Thanks.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Buildings like the village center consist of multiple parts so that units can walk under roofs etc.
These layers have to be represented somehow, and rendered as one single building.
The draw layer priority is secondary and should be rather easy to implement afterwards.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.