Giter VIP home page Giter VIP logo

julius's Introduction

Julius

Github Actions

Download: Download release version Download development version

Android version on Google Play: install release or sign up for test builds

Chat: Discord (kindly hosted by GamerZakh)

Julius: an open source re-implementation of Caesar III

Julius is a fully working open-source version of Caesar 3, with the same logic as the original, but with some UI enhancements, that can be played on multiple platforms.

Julius will not run without the original Caesar 3 files. You can buy a digital copy from GOG or Steam, or you can use an original CD-ROM version.

The goal of the project is to have exactly the same game logic as Caesar 3, with the same look and feel. This means that the saved games are 100% compatible with Caesar 3, and any gameplay bugs present in the original Caesar 3 game will also be present in Julius.

Enhancements for Julius include:

Supported platforms:

  • Windows
  • Linux AppImage
  • MacOS
  • PS Vita
  • Nintendo Switch
  • Android
  • Any compatible browser (Emscripten)

While Julius does not implement any gameplay changes, a fork of Julius named Augustus is implementing many long-wanted gameplay changes, such as roadblocks. Beware: Augustus does not support the original Caesar 3 save files, while Julius does. So use Julius for a more vanilla experience with some visual improvements, or Augustus for a different gameplay experience.

Running the game

First, download the game for your platform from the list above. Alternatively, you can build Julius yourself.

Then you can either copy the game to the Caesar 3 folder, or run the game from an independent folder, in which case the game will ask you to point to the Caesar 3 folder.

Note that you must have permission to write in the game data directory as the saves will be stored there. Also, your game must be patched to 1.0.1.0 to use Julius. If Julius tells you that you are missing it, you can download the update here.

See Running Julius for further instructions and startup options.

Bugs

Julius recreates many bugs that you can find in original Caesar 3 game, to preserve 100% saves compatibility. See the list of Bugs & idiosyncrasies to find out more.

julius's People

Contributors

alexander-wilms avatar attrition avatar b483 avatar brownna01 avatar bvschaik avatar commonloon102 avatar crudelios avatar dcnieho avatar devnoname120 avatar enniovisco avatar eugenikus8 avatar falconepl avatar gryffus avatar hngt avatar jetomit avatar jfkonecn avatar keriew avatar louis-dg avatar m-mohr avatar nwtour avatar prettyflower avatar queria avatar rsn8887 avatar sulix avatar superzazu avatar therealayce avatar tintou avatar urides avatar vittoriom94 avatar whgest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

julius's Issues

Defining useful contributions, creating CONTRIBUTING.md.

Now that Julius is picking up some steam, the contributions keep increasing and not all of them are deemed useful or important.

This is because Julius has a somewhat contradictory goal: on one hand, to mimic Caesar 3 as much as possible; on the other hand, to improve its usability to modern-day standards.

This ambiguity makes it hard to understand which changes may be acceptable, and which ones will change the core gameplay in such a way that it goes beyond the scope of this project.

As an example, I have three branches that I decided not to submit a pull request, because I'm not sure they would be acceptable:

  • One that updates the acqueducts' layouts when they are cleared at an intersection;
  • One that prevents gatehouses from adding roads on map rotate; and
  • One that displays in the empire map whether a new trade route will be land or sea-based.

In order for everyone to better understand what would be welcoming changes, I think it's a good idea to define some general guidelines which could go to CONTRIBUTING.md.

Besides that, things like coding style and naming conventions should go there as well.

Hopefully that could help everyone provide changes that are acceptable for the project.

Here's one from my experience:

  • Avoid using SDL functions that require versions higher than 2.0.0. If you absolutely need to do so, make sure those changes are optional and leave an alternative which only requires SDL 2.0.0.

Map Limits and Graphics Artifacts

In C3, when scrolling to the extremes of the map, you see a standard 1-tile gap of black like this:
image

In Julius, we see this in the south corner:
image

As you rotate around, the exact corner that this happens in changes, but I haven't figured out the relationship.

This causes rendering artifacts. Scroll to one of the problematic corners, then go to the empire/trade map. Then go back. You can see this:

image

Other things can cause these render artifacts as well, but that was the easiest way to show it.

Towers don't fire

Hello!
Looks like there is another issue, this time with defense towers. I can't figure out why they are not acting as expected. Please have a look:
https://yadi.sk/d/rUD1XSY33QSYey
I deliberately made the emperor angry and he sent his legion to arrest me. As you can see, towers in my game don't produce any ballista fire and stay useless, even though they have enough workers. I'm pretty sure there was ballista fire in the original Caesar 3 game.
Cheers!

Full load of the first processor core

Thank you for your amazing work. On my laptop running Julius fully loads CPU0 (25%) of my 4-core processor AMD A8-7410 Windows 7 64-bit. I checked both the release version and the Appveyor build. Please tell me how to fix it

Crash while rotating map on some saves

Hello.
After loading this save
task4-lapa4.sav.gz
And pressing "rotate counterclockwise" button the game crashes.
I've built the latest (e673681) on mostly up-to-date debian amd64.

(There is no other problems with this save, game works fine!)
Rotating for some other saves works fine.
I performed git bisecting, and it points to commit 855c46d
Date: Mon Apr 23 21:33:47 2018 +0200

The stack is:

#0  0x00005555555bcb7c in map_terrain_remove (grid_offset=834336156, terrain=terrain@entry=2) at /media/games/julius/src/map/terrain.c:32
#1  0x00005555555bfe98 in map_tiles_remove_entry_exit_flags () at /media/games/julius/src/map/tiles.c:1146
#2  0x00005555555b8e20 in map_orientation_change (counter_clockwise=counter_clockwise@entry=0) at /media/games/julius/src/map/orientation.c:42
#3  0x00005555555b2002 in game_orientation_rotate_left () at /media/games/julius/src/game/orientation.c:11
#4  0x00005555555d317f in button_rotate (clockwise=, param2=) at /media/games/julius/src/widget/sidebar.c:417
#5  0x00005555555c8bba in image_buttons_handle_mouse (m=m@entry=0x5555558f9a60 <data>, x=x@entry=2398, y=y@entry=24, buttons=buttons@entry=0x5555556ca5c0 <buttons_top_expanded>, num_buttons=num_buttons@entry=6, 
    focus_button_id=focus_button_id@entry=0x7fffffffe5cc) at /media/games/julius/src/graphics/image_button.c:110
#6  0x00005555555d3e60 in widget_sidebar_handle_mouse (m=m@entry=0x5555558f9a60 ) at /media/games/julius/src/widget/sidebar.c:325
#7  0x00005555555e3c18 in handle_mouse (m=0x5555558f9a60 <data>) at /media/games/julius/src/window/city.c:89
#8  0x00005555555cbf9d in window_draw (force=<optimized out>) at /media/games/julius/src/graphics/window.c:94
#9  0x00005555555b1f5b in game_draw () at /media/games/julius/src/game/game.c:133
#10 0x000055555557755d in refresh () at /media/games/julius/src/platform/julius.c:156
#11 0x0000555555577896 in mainLoop () at /media/games/julius/src/platform/julius.c:390
#12 main (argc=<optimized out>, argv=<optimized out>) at /media/games/julius/src/platform/julius.c:451

The incorrect grid_offset is already in

p city_data.map
$2 = {entry_point = {x = 0, y = 28, grid_offset = 11219}, exit_point = {x = 79, y = 41, grid_offset = 13404}, entry_flag = {x = 1, y = 27, grid_offset = 834336156}, exit_flag = {x = 78, y = 40, grid_offset = 834336156}, largest_road_networks = {{
      id = 1, size = 186}, {id = 3, size = 35}, {id = 4, size = 28}, {id = 2, size = 3}, {id = 0, size = 0}, {id = 0, size = 0}, {id = 0, size = 0}, {id = 0, size = 0}, {id = 0, size = 0}, {id = 0, size = 0}}}

The resolution is 2560x1440 fullscreen if that matters.

I briefly looked at commit but didn't found the problematic change. Maybe it just revealed previously existing problem. If you can't reproduce the bug and need more debug info - I would be glad to provide it.

Some rocks are not being redrawn on map rotate when they are in range of a reservoir.

If you place a reservoir next to a group of rocks and then rotate the map, some of the rocks won't redraw.

This doesn't happen when there is no reservoir in range of the rocks.

Here are some images of the bug (tested in the campaign map Syracusae):

rock-reservoir-bug-1
rock-reservoir-bug-2

I haven't properly investigated the cause of the bug, but it must be related to line 102 of src/map/tiles.c. Here's lines 100 to 102:

return map_terrain_is(grid_offset, TERRAIN_ROCK) &&
           !map_property_is_plaza_or_earthquake(grid_offset) &&
           !map_terrain_is(grid_offset, TERRAIN_RESERVOIR_RANGE | TERRAIN_ELEVATION | TERRAIN_ACCESS_RAMP);

Note that the code is inside the function is_updatable_rock that was just added in the (as of now) latest commit 695b5ee4b34e967c896b7b560813a1be4487f1ba, but I had this issue before and couldn't pinpoint its cause. The latest commit changes made me realize that it could be because of reservoirs being in range, and a quick test proved that to be the case.

That TERRAIN_RESERVOIR_RANGE is somehow preventing some rocks that should be drawn to redraw, but since it doesn't happen on all the rocks I can't really tell if it is the cause of if the problem lies in the rock drawing routine. I can investigate further when I have some time.

Also, it might be unrelated, but all the problematic rocks were at the edge of the map.

This is definitely a drawing issue as loading the game in C3 and then rotating the map fixes the rocks.

Grand Insulae 4x4 Display Issue

Fresh clone, compile with mingw (64 bit). Run game using path to game files (GOG install). Some Grand Insulae 2x2 houses have a bug where a graphic for a MEDIUM Insulae (1x1 size) is displayed in one corner while the other 3 squares are bugged out and seem to "remember" what was displayed in that square last iteration. An easy way to demonstrate this is by hitting "D" for engineer view, then switching back. The old engineering view graphic is remembered. Also, as walkers' images overlay part of the square, their silhouettes are captured in the square even after they're gone. Scrolling has the similar effect.

See screenshot attached. It has blue circles showing 2 Grand Insulaes with the bug and 1 without the bug. See the zipped .sav that should reproduce the issue just by loading it.

I suspect the reason for only some of the houses having the bug has to do with the case when a 1x1 house upgrades such that is expands into a 2x2. I could be wrong. Also, once it continues upgrading past Grand Insulae onto the Patrician housing, the issue seems to be gone (so far as I can tell).

I'm using Windows 10
MingGW-w64 (latest release)
SDL2 (2.0.9)
SDL2_mixer(2.0.4)
HEAD of master branch as of 1/24/2019

grand_insulae

display_issue.sav.zip

I'll gladly try to help with this, but you might need to point me in the right direction since you are more familiar with the codebase. I'm impressed with your work. I'm fairly familiar with CMake and cross-platform C/C++ development.

Earthquake and Eternal Fires

Credit of finding this bug goes to my brother. I just helped confirm and reproduce the issue.

When an earthquake happens, buildings are destroyed and set on fire. Everything behaves fine. Then as the fires die out on their own and turn to ash tiles, they convert neighboring quake tiles into ash. Which can then be cleared.

Also, as all the fires die down, a few of them are left burning forever - which is not seen when buildings burn down under normal conditions. The number of tiles that become eternal fires seems nondeterministic - load the same .sav many times. Sometimes there were 8 fires and sometimes there were 9 (maybe dependent on the order that things catch fire?).

Load the attached saved game (which is moments before the earthquake) and you'll see this behavior. Load the same .sav in the original GOG game and see the expected comparison.

eq test2.sav

image

Official packages

You may want to put some info about systems that package julius. FreeBSD and OpenBSD now do.

Self soldiers lost after click "Go to fort"

1
2

Step to reproduce: City with population greater 10000 and more 3 forts. Click on several legions "Go to Fort" and as result RANDOM numbers of soldiers DIED.

My realisation to fix this bug (if needed): nwtour#5

Bridge reconstruction

You can't place a new bridge where one has been deleted already.

Steps to reproduce the behavior:

  1. Build a bridge
  2. Delete it
  3. Attempt to build a new bridge in the same location
  4. The square where the game will attempt to put the other end of the bridge will be the middle of the water.

Between the docks and the reservoir, near the lumber industry, you will see one graden on each side of the river, that is the place of a former bridge, which I can't rebuild anymore.

savegame.zip

Project Objectives

Hi,

I'm seeing that most of the recent commits have the purpose of (correctly) separating the all-together code in more specific areas, like UI, game logic etc..
I was wondering, what is the objective at the end of that? What are, in your opinion, @bvschaik the things this project needs and the ultimate goal you are willing to achieve? How far are we from that?

In-game options to resize screen place window in top-left corner

When using F7/F8/F9, or the Options -> Display menu to resize the window in windowed mode, the window jumps to the top-left corner of the screen.

To Reproduce

  1. Start the game in windowed mode, with the window not in the top-left corner of the screen
  2. Resize using F7/F8/F9, or using Options -> Display
  3. Note that the window jumps to (0,0)

Expected behavior
Window stays at the position it's currently at.

Seen on macOS and Raspberry Pi.

SDL-related errors when attempting to build from source (on macOS)

Description

Following the building from source instructions, I encounter errors when building julius on macOS 10.14.1, using the latest master (commit 02ffc6b from Feb 11th).

Steps to reproduce

Steps to reproduce the behaviour:

git clone [email protected]:bvschaik/julius.git
cd julius
mkdir build && cd build
cmake ..
make

Expected behaviour

Build should complete without errors.

Actual behaviour

Although the cmake log indicates that the necessary SDL2 libraries were found, make had errors finding certain SDL2 identifiers/members.

cmake log

-- The C compiler identification is AppleClang 10.0.0.10001145
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Git: /usr/bin/git (found version "2.17.2 (Apple Git-113)") 
-- Found SDL2: /Library/Frameworks/SDL2.framework;-framework Cocoa  
-- Found SDL2_mixer: /Library/Frameworks/SDL2_mixer.framework (found version "1.2.12") 
-- Configuring done
-- Generating done
-- Build files have been written to: /Volumes/Transcend/julius/build

make log

Scanning dependencies of target julius
[  0%] Building C object CMakeFiles/julius.dir/src/platform/julius.c.o
In file included from /Volumes/Transcend/julius/src/platform/julius.c:8:
/Volumes/Transcend/julius/src/platform/keyboard_input.h:10:27: error: unknown type name 'SDL_TextInputEvent'
void platform_handle_text(SDL_TextInputEvent *event);
                          ^
/Volumes/Transcend/julius/src/platform/julius.c:153:33: error: unknown type name 'SDL_WindowEvent'
static void handle_window_event(SDL_WindowEvent *event, int *window_active)
                                ^
/Volumes/Transcend/julius/src/platform/julius.c:184:14: error: use of undeclared identifier 'SDL_WINDOWEVENT'; did you mean 'SDL_NOEVENT'?
        case SDL_WINDOWEVENT:
             ^~~~~~~~~~~~~~~
             SDL_NOEVENT
/Library/Frameworks/SDL.framework/Headers/SDL_events.h:53:8: note: 'SDL_NOEVENT' declared here
       SDL_NOEVENT = 0,                 /**< Unused (do not remove) */
       ^
/Volumes/Transcend/julius/src/platform/julius.c:185:41: error: no member named 'window' in 'union SDL_Event'
            handle_window_event(&event->window, active);
                                 ~~~~~  ^
/Volumes/Transcend/julius/src/platform/julius.c:194:14: error: use of undeclared identifier 'SDL_TEXTINPUT'
        case SDL_TEXTINPUT:
             ^
/Volumes/Transcend/julius/src/platform/julius.c:195:42: error: no member named 'text' in 'union SDL_Event'
            platform_handle_text(&event->text);
                                  ~~~~~  ^
/Volumes/Transcend/julius/src/platform/julius.c:207:14: error: use of undeclared identifier 'SDL_MOUSEWHEEL'
        case SDL_MOUSEWHEEL:
             ^
/Volumes/Transcend/julius/src/platform/julius.c:208:37: error: no member named 'wheel' in 'union SDL_Event'
            mouse_set_scroll(event->wheel.y > 0 ? SCROLL_UP : event->wheel.y < 0 ? SCROLL_DOWN : SCROLL_NONE);
                             ~~~~~  ^
/Volumes/Transcend/julius/src/platform/julius.c:208:70: error: no member named 'wheel' in 'union SDL_Event'
            mouse_set_scroll(event->wheel.y > 0 ? SCROLL_UP : event->wheel.y < 0 ? SCROLL_DOWN : SCROLL_NONE);
                                                              ~~~~~  ^
/Volumes/Transcend/julius/src/platform/julius.c:259:5: warning: implicit declaration of function 'SDL_Log' is invalid in C99 [-Wimplicit-function-declaration]
    SDL_Log("Initializing SDL");
    ^
/Volumes/Transcend/julius/src/platform/julius.c:261:9: warning: implicit declaration of function 'SDL_LogError' is invalid in C99 [-Wimplicit-function-declaration]
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Could not initialize SDL: %s", SDL_GetError());
        ^
/Volumes/Transcend/julius/src/platform/julius.c:261:22: error: use of undeclared identifier 'SDL_LOG_CATEGORY_APPLICATION'
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Could not initialize SDL: %s", SDL_GetError());
                     ^
/Volumes/Transcend/julius/src/platform/julius.c:271:9: warning: implicit declaration of function 'SDL_Log' is invalid in C99 [-Wimplicit-function-declaration]
        SDL_Log("Loading game from %s", custom_data_dir);
        ^
/Volumes/Transcend/julius/src/platform/julius.c:278:5: warning: implicit declaration of function 'SDL_Log' is invalid in C99 [-Wimplicit-function-declaration]
    SDL_Log("Loading game from working directory");
    ^
/Volumes/Transcend/julius/src/platform/julius.c:297:5: warning: implicit declaration of function 'SDL_Log' is invalid in C99 [-Wimplicit-function-declaration]
    SDL_Log("Julius version %s%s\n", JULIUS_VERSION, JULIUS_VERSION_SUFFIX);
    ^
/Volumes/Transcend/julius/src/platform/julius.c:322:5: warning: implicit declaration of function 'SDL_Log' is invalid in C99 [-Wimplicit-function-declaration]
    SDL_Log("Exiting game");
    ^
6 warnings and 10 errors generated.
make[2]: *** [CMakeFiles/julius.dir/src/platform/julius.c.o] Error 1
make[1]: *** [CMakeFiles/julius.dir/all] Error 2
make: *** [all] Error 2

Additional context

  • macOS Mojave v10.14.1
  • building on an SD card rather than the main SSD.

Create a Gitter room for julius

It would be great to create a Gitter room to improve collaboration.

You can do this in a few clicks by clicking here, then on "do you want to start a community for one of your github projects?".

Crashes when opening mission1.pak on PowerPC64 (Big Endian)

Successfully compiles with no errors. Game starts okay, but when you start a new career, after entering the new governor's name the game crashes. See below:

Initializing SDL.
SDL initialized.
Current resolution: 1920 x 1200
Fullscreen? 0
Texture created (1024 x 768)
OK: model loaded
SOUND: OK
SOUND: trying music file: wavs/SETUP.WAV
SOUND: playing music file: wavs/SETUP.WAV
INFO: Window 1 shown
INFO: Window 1 hidden
INFO: Window 1 shown
SOUND: playing channel 3
SOUND: playing wavs/01B.WAV on channel 0
Loading saved game: mission1.pak
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
ERR:COMP1 Corrupt.
ERR:COMP Error uncompressing.
Error: signal 11:

Clay Pit Crash

While adding a Clay Pit, the game crashed with the following error:
clay_pit

Fine-tune printing git commit hash

Printing the git commit hash on startup can use some fine-tuning (and explanation). For me it says right now:
INFO: Built with git commit: v1.0.0-22-g258ae61f30-dirty
Where does the "v1.0.0-22-g" come from?
What about the dirty flag? Is that always set because the build process creates files in the working directory? (need to check AppVeyor/Travis build scripts)
What does it print for release versions?

Originally proposed change by @jdmillard:


I pulled master after this was merged. My console displays:

INFO: Built with git commit:

My "clean build process" on Windows is:

cd build
cmake.exe .. -G "MinGW Makefiles"
mingw32-make.exe -j8
julius.exe "path\to\GOG Games\Caesar 3"

...

OKAY, I took a closer look and this. This feature depends on cmake executing a git command which breaks for the following git setup: If "Git for Windows" is used to clone, then generic CMD is used to compile. Building this way might sound strange, but there are real reasons for some people to build this way on Windows machines (too hard to explain here).

I suggest to leave the new CMake logic as-is. However, if no commit hash string was set during CMakeLists.txt, the INFO print statement should be avoided altogether. Your thoughts?

Here's my horrible pseudo code suggestion:

if (GIT_COMMIT_STRING_WAS_SET_BY_CMAKE)
{
    print_stuff_about_the_commit();
}

Originally posted by @jdmillard in #52 (comment)

Crash on startup

Program crashes and fails to respond on startup screen stating 'Click to start'.

image

This is with the English GOG version freshly reinstalled. Monitor resolution is 1920 x 1080. After restarting computer it allowed me to play for roughly 10 minutes before it crashed in the same fashion, but actually in game this time.

Since then it will not let me proceed past the screen in the screenshot before it crashes again, as it did when first installed.

Readout from julius-log.txt reads as follows:

INFO: Initializing SDL

INFO: SDL initialized

INFO: Loading game from working directory

INFO: Creating screen 1920 x 1080, fullscreen? 1

INFO: Texture created (1920 x 1080)

INFO: model loaded

Thanks for your time!

How to start?

INFO: Initializing SDL
INFO: SDL initialized
INFO: Loading game from working directory
ERROR: 'c3.eng' or 'c3_mm.eng' files not found or too large.
INFO: Creating screen, fullscreen? 1
INFO: Texture created (1920 x 1080)
ERROR: unable to load main graphics

OS: Ubuntu 18.04

Taking a screenshot results in corrupt file

Screenshots saved with a resolution with a width not divisible by 4 result in corrupt files.

To Reproduce

  1. Resize the screen to a width not divisible by 4
  2. Take a screenshot by pressing F12
  3. Try to open the resulting bmp file in an image viewer

Scroll Speed (City View)

When compared to the original game, it's obvious that the screen edge mouse scrolling moves the map at a slower speed. This is admittedly a nitpick, but I suspect it's super easy to fix. EDIT: there's an option for this in-game, see comments below for more context.

Perhaps

    int dx = 1;
    int dy = 2;

in view.c?

Cutscene video volume control

I tend to play with the sound settings at 50% so that I have some control over the game volume relative to other apps running simultaneously on my PC. There is no way to control the volume of the videos that play (Caesar requests, Barbarians attack, etc).

Reproduce this by setting all the volume settings to 5% (or even 0), then wait for a Caesar request and you'll hear it at full volume. To be fair, the original game had the same issue, but it's really annoying. Is it possible to make the video volume into one of the existing categories (Music, Speech, Sound Effects, City Sounds)?

Crash on clicking "visit yoyr advisors".

Every now and then clicking the "advisors" button (the one at the sidebar, not the menu) causes the game to immediately crash. The game will keep crashing every time I click the button until I select a specific advisor from the menu, then the button starts working again.

I haven't had the time to study the code and my main PC fried today so I'm limited in resources, but I suspect that some "advisor id" is being set a bogus value that is out of bounds, and that value is saved to c3.inf. This may in no small part be due to the fact that my c3.inf is load and shared between different builds and operating systems.

Still, I believe sanity checking the id of the last visitor advisor to only accept valid values could prevent these crashes.

Overlay View and Farms

Overlay views (Damage, Fire, take your pick etc) don't render farms properly. It seems to work fine when facing North and South.

When facing West, the area where the farm is, "captures" whatever was last shown in that location (which you can mouse-over to exaggerate the effect):
image

When facing East, it seems to just mangle the appearance:
image

Exploitative and Display Glitch - Right Clicking While Building

Describe the bug
There is a bug where anything built by left-clicking and dragging can be cancelled/interrupted by right-clicking, which leaves the built structures for free.

To Reproduce
Steps to reproduce the behavior:

  1. Choose a build option that has the ability to drag while building/placing (aqueduct, road, plaza, garden, wall, clear land) (not housing plots).
  2. Left click and drag the chosen build/clear option
  3. Before releasing the left click,depress and release the right mouse button.
  4. The displayed preview will stay on the map without charging you the preview cost.

Expected behavior
In the original game, right clicking simply cancels the entire transaction, reversed the displayed preview and doesn't charge you.

Screenshots and saved games
This is so easily reproducible, I didn't include a .sav or any screenshots

Additional context
This was fun to abuse for a little bit to put gardens in the entire map for free :)

Also Related, there is a small display bug where while constructing non-dragable items, a right click will cancel correctly, but leave a temporary display glitch that goes away after some time or a refresh or something.

In-game Menus and Alt-Tab

The following applies to these menus:

  • Load Game
  • Save Game
  • Delete Game
  • Quit Game
  • Replay Map (also "review your assignment")
  • Display Settings
  • Sound Settings
  • Speed Settings
  • Difficulty Settings

If you pull up any of these menus, then alt+tab, then return to game they whole background screen is black. This issue self-corrects after leaving the menu. I would just ignore this, but there are some menus and windows for which this does not happen such as Help and About. I figured there's a chance it's an easy fix.

Also, if you get an in-game message with a video, then alt-tab. The video box is blank upon returning to game. Normally there is a final still image that remains displayed.

All of these are very minor in my opinion. If it takes more than a few minutes of poking around, or it's a strange beast to fix, just go ahead and dismiss this ticket.

Micro stuttering issues

I'm experience stuttering every 2 seconds or so, this does not happen or the vanilla or HD modded .exe. Let me know what system info to provide, if any.

Some hotkeys do not work on international keyboards

First of all, great job for an excellent work! This project is amazing in scope, and the fact that you completed it is just incredible!

Now, on with the bug,

Some hotkeys do not work on international keyboards.

For example, on my keyboard, which is portuguese (pt_PT), the '[' and ']' chars are used by pressing "Alt Gr" (or right alt) + 8 for '[', and 9 for ']'.

This has no effect in julius, while it works fine on the original Caesar 3.

I am guessing the issue is in hotkey.c, and I propose the following fix.

In lines 151 to 166 (function hotkey_character), change:

if (data.alt_down) {
        switch (c) {
            case 'X': case 'x':
                hotkey_esc();
                break;
            case 'K': case 'k':
                cheat_init_or_invasion();
            case 'C': case 'c':
                cheat_money();
                break;
            case 'V': case 'v':
                cheat_victory();
                break;
        }
        return;
    }

To:

if (data.alt_down) {
        switch (c) {
            case 'X': case 'x':
                hotkey_esc();
                return;
            case 'K': case 'k':
                cheat_init_or_invasion();
            case 'C': case 'c':
                cheat_money();
                return;
            case 'V': case 'v':
                cheat_victory();
                return;
        }
    }

I am not entirely sure this would work as I unfortunately don't have the time to compile the code myself, but I can test it for you if you want. All I need is a windows build.

Earthquake bug and Forts' Animation

I was playing a random map of Caesar III. not one from the campaign when at some point an earthquake happened. After the quake was over, instead of the unpassible chasms that are usually left behind after an earthquake, they were replaced by lines of rocks and bushes. Near them there were several unstoppable forever burning houses. Even an iron mine could be put near the newly formed rocks in the places where the quake passed by.
Again in this mission I noticed that sometimes soldiers from the forts I put down were trembling without any reason especially when the game speed is being increased. I destroyed the fort and even rebuild it several time, but this problem persists. Here is the save file of the map.
Augusta Trevorum.zip

Raspberry pi: sound of .smk videos is mangled

When playing on Raspberry PI, the sound from the videos sounds like static.

Expected behavior
Sound is crisp and clear.

Additional context
Tested on Raspberry PI 3B with TV. Other sounds are OK.

Issue compiling with Flatpak

Hey, I’m trying to create a Flatpak for Julius, but I’m basically stuck at this:

-- Found SDL2: /usr/lib/libSDL2.so;-lpthread  
-- Found SDL2_mixer: /usr/lib/libSDL2_mixer.so (found version "2.0.1") 
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
SDL2MAIN_LIBRARY
    linked by target "julius" in directory /run/build/julius

What could be up with that?

Fedora 27, x86_64

Can’t build farm

So I’m playing Brundisium and I want to contruct a farm, but the menu to select one never opens, all I get is this:

snimka obrazovky z 2018-03-01 10-46-16

But I can normally construct temples.

Missing switch default cases

There are many instances (~175) where a switch on an int doesn't have a case default. Here is an example:

switch (b->type) {

This often leads to uninitialized variables being used. Instead, the error should be logged, and a default value should be assigned.

Aqueduct on road

In Jullius one aqueduct on road restricted, but in original game its normal usage. Bug or feature?
1
2

Game is broken upon saving

Hello again!
Last time I found a false issue, but now it's something different. I started building a city and proceeded to a quite sizeable settlement with three legions, pottery, oil and furniture industries, but I didn't save my game from the started. Finally I decided to save it and immediately the map got corrupted - most of objects were gone, but not all, oddly. I also got a population of 0. Please see the screenshots and have a look at the saved game as well.

https://yadi.sk/i/21kT2vWR3QPCw9
https://yadi.sk/i/nb5O8bv_3QPCxw
https://yadi.sk/d/dXkMbCcU3QPCyy

P.S. I was using the latest Julius code from your Master branch.

Production facilities don't get source materials

I've been playing Caesar III with Julius lately, and first of all I'd like to say big THANK YOU for making it possible to run my favourite game natively on Linux!
However, in a big city I noticed some strange behaviour, which I suspect may be a bug in ther game's mechanics. Here is an example.
I import clay and produce pottery locally. I have one warehouse and several pottery workshops in different part of my city. BUT, cartmen seem to deliver clay only to workshops that are close to warehouse. It leads to a situation when there is enough clay in the warehouse, some workshops also have clay and work fine, but more distant workshops stay useless because they never get clay.
I remember that the original Caesar III didn't have such issue.

It would be great if you fix it!

No mapper

Hello,
The original Caesar III has a map editor. How can I use it with Julius?

What is it?

Is it a Caesar III clone? Reimplementation? Something else?

When merged houses get vacant, they do so at the wrong location

When a merged house devolves, it creates vacant lots at the wrong location.

Here is what happens:

juliusbug1

Becomes:

juliusbug2

As you can see, one of the vacant lots remains where it should be and the remaining three vacant lots get offset by one tile (and the road is destroyed/replaced by vacant lots).

I am attaching a save game that shows the bug. Just let the city run for a little while in julius and you'll see.

Also, I tested this very same file in the original C3 executable and this bug does not happen at all.

juliushousebug.zip

My reasoning for this bug is due to an oversight in function create_vacant_lot in file building\house.c. In line 72, you have the following code:

map_building_tiles_add(b->id, b->x + 1, b->y, 1, image_id, TERRAIN_BUILDING);

But shouldn't that b->x + 1 just be b->x?

As I said in the other issue, unfortunately I have no time to properly compile the game and test it so I can confirm this is the root cause of the bug.

Building while paused

Describe the bug
Julius allows building while paused.

To Reproduce
Steps to reproduce the behavior:

  1. Pause the game.
  2. Make sure you don't owe Caesar more than 5000 dn otherwise you won't observe the bug :P
  3. Build something.

Expected behavior
Nothing should be built.

Actual behavior
A shiny new building appears.

Additional context
Line 133 of city.c has the following code:
if (tile->grid_offset /*&& !game_state_is_paused()*/) { // TODO FIXME

I uncommented the code and observed no odd behavior. Why is this commented, did I miss something or is it just for debugging purposes?

Something wrong with game's mechanics

Hello!
I've been playing Julius with the updated Caesar III 1.0.1 bundle (the one where you can adjust difficulty level). There were certain oddities that I encountered, such as messages about low bridges that prevent boats from navigation - although I didn't have low bridges at all.
But what really made me write this issue is the situation with my small Tarraco city, where I got stuck with a somewhat stupid behaviour of enemy warriors. Please have a look:
https://yadi.sk/d/4_lVp0un3VdD7s
Some local uprisers approached my city but they failed to find the right path to the distant part of the map. They stand next to the long ship bridge and don't proceed further. Therefore, they don't do any harm to my city. As long as it is a 'war mode', no new settlers arrive to my city, but still my population grows and I even have some unemployed workers.
The question is how I can get enemies go away?

Failing build reservuar sometimes leads to small visual glitch (also present in original game)

There is a small visual glitch sometimes appearing during build two connected reservours with mouse press-drag-release

Steps to reproduce:

  • Load save from reservuars-test.zip
  • Try to build reservuar with dragging from the left to right in specific place.
    It fails to build with "must build on clear land" (ok) but the background becomes glitched (see two 3x3 blocks) c3-reserv

The original game has this bug too (at least in wine-steam), so I'm not sure if fixing this will be in the spirit of this project.

Btw, the current state of project looks really great! Even very picker player that loves the original - finds its great! Big thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.