Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PBR rendering and various improvements #41

Closed
wants to merge 230 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
230 commits
Select commit Hold shift + click to select a range
49dbb59
Initial replay features
Selicre Jan 20, 2019
3309562
Slowdown, re-recording fixes
Selicre Jan 20, 2019
05da958
Fix slowdown and add debug overlay
Selicre Jan 21, 2019
780a9aa
Update README.md
WAUthethird Feb 3, 2019
5956ba6
Update README.md
WAUthethird Feb 3, 2019
8ef9016
Update README.md
WAUthethird Feb 3, 2019
630e5b7
Update README.md
WAUthethird Feb 3, 2019
5f1bc96
Update README.md
WAUthethird Feb 3, 2019
46c0319
Update README.md
WAUthethird Feb 3, 2019
9f8aeea
Update README.md
WAUthethird Feb 3, 2019
eabc863
Update README.md
WAUthethird Feb 3, 2019
92d60e9
Update README.md
WAUthethird Feb 3, 2019
1cfbf78
Update README.md
WAUthethird Feb 3, 2019
6678866
Update README.md
WAUthethird Feb 4, 2019
1443b83
Update README.md
WAUthethird Feb 4, 2019
803dba3
Update README.md
WAUthethird Feb 4, 2019
54fc06d
Update README.md
WAUthethird Feb 4, 2019
46e1f42
Added macOS build script
Bryce-MW Feb 4, 2019
668f3b1
Update README.md
WAUthethird Feb 4, 2019
48c9a32
Updated readme and added license for SFML though it is not required
Bryce-MW Feb 4, 2019
1fe13d6
Update README.md
WAUthethird Feb 4, 2019
cb20255
Update README.md
WAUthethird Feb 4, 2019
8c0c810
Update README.md
WAUthethird Feb 5, 2019
0de37c8
Update README.md
WAUthethird Feb 5, 2019
c43f1fd
Merge branch 'patch-1' of https://github.com/MichaelMoroz/MarbleMarcher
Bryce-MW Feb 6, 2019
75db92c
Update README.md
WAUthethird Feb 6, 2019
adc175c
Allow the macOS .app & wrapper script to pass arguments to the binary
Bryce-MW Feb 6, 2019
ceadac5
Add even more debug info?
Selicre Feb 6, 2019
036f83b
Merge branch 'replay' of https://github.com/Selicre/MarbleMarcher
Bryce-MW Feb 6, 2019
fe171dd
Merge branch 'replay' of https://github.com/Selicre/MarbleMarcher
Bryce-MW Feb 6, 2019
71e523d
Fixed my merge mistakes
Bryce-MW Feb 7, 2019
55dfaf6
Merge new commits from the official version
Bryce-MW Feb 9, 2019
0ddc83f
Changed version message
Bryce-MW Feb 9, 2019
6b3ea41
Update README.md
WAUthethird Feb 9, 2019
09f9be3
Merge pull request #1 from HackerPoet/master
MichaelMoroz Feb 11, 2019
82d8dae
Physically based rendering
MichaelMoroz Feb 11, 2019
4c1531e
bug fix and added comments
MichaelMoroz Feb 11, 2019
860b446
Solved the flickering camera problem, more or less
MichaelMoroz Feb 12, 2019
1531a02
Deleted light AO
MichaelMoroz Feb 12, 2019
c29d2ee
Best looking parameters
MichaelMoroz Feb 12, 2019
4c34e70
Physically correct reflection and refraction
MichaelMoroz Feb 12, 2019
a3f136a
Bug fix
MichaelMoroz Feb 12, 2019
77727b9
Corrected fractal intersection color
MichaelMoroz Feb 12, 2019
125c4d8
Update frag.glsl
MichaelMoroz Feb 12, 2019
e382c9b
Initial Windows build script stuff
Bryce-MW Feb 23, 2019
a8ff169
A few fixes
Bryce-MW Feb 24, 2019
ffc4b54
Sometimes these things like to use the other things that are precompi…
Bryce-MW Mar 3, 2019
01decd5
Maybe removed the marble scale?
Bryce-MW Mar 3, 2019
9023206
Update README.md
WAUthethird Mar 5, 2019
ae1b16e
Update README.md
WAUthethird Mar 5, 2019
6200857
Update README.md
WAUthethird Mar 5, 2019
e95a64f
Whoops, wrong link.
WAUthethird Mar 5, 2019
c250d06
Spelling and grammar.
WAUthethird Mar 5, 2019
9ea6885
Update README.md
WAUthethird Mar 8, 2019
25ba5c6
Added fog and slightly optimized shadows
MichaelMoroz Mar 8, 2019
9e8d08a
Bug fix
MichaelMoroz Mar 8, 2019
453868c
Automatically copy assets to game folder
MichaelMoroz Mar 8, 2019
afe5234
Update README.md
MichaelMoroz Mar 8, 2019
d8fc267
Added AntTweakBar
MichaelMoroz Mar 9, 2019
84f265b
Merge branch 'sandbox' of https://github.com/MichaelMoroz/MarbleMarcher/
MichaelMoroz Mar 9, 2019
f8d64e4
AntTweakBar dependancy
MichaelMoroz Mar 9, 2019
5c931bd
Update README.md
MichaelMoroz Mar 9, 2019
676b5af
Deleted unnecessary steps
MichaelMoroz Mar 9, 2019
e67cd04
AntTweakBar event menagement
MichaelMoroz Mar 9, 2019
d42f7bb
Merge branch 'sandbox' of https://github.com/MichaelMoroz/MarbleMarcher/
MichaelMoroz Mar 9, 2019
60f77fc
TWBAR Added fractal parameters and keyboard handler
MichaelMoroz Mar 9, 2019
5071dc1
Resizable window
MichaelMoroz Mar 9, 2019
c7fcbd3
Documents and screenshots
MichaelMoroz Mar 9, 2019
20730a6
Instructions
MichaelMoroz Mar 9, 2019
3e052af
Update README.md
MichaelMoroz Mar 9, 2019
07487ed
Update README.md
MichaelMoroz Mar 9, 2019
eaca94a
Resizable Window
MichaelMoroz Mar 9, 2019
f18bf09
Added screenshot capture on F5
MichaelMoroz Mar 9, 2019
da07171
Additional txt config file
MichaelMoroz Mar 10, 2019
dc77d75
Fractal DE function optimization
MichaelMoroz Mar 18, 2019
9f2ba47
Merge pull request #2 from MichaelMoroz/master
Bryce-MW Mar 30, 2019
4c4b8c6
Added a note about the screenshot key
Bryce-MW Mar 30, 2019
b611433
Merge branch 'sandbox'
MichaelMoroz Apr 1, 2019
a69ece8
AntTweakBar improvements
MichaelMoroz Apr 2, 2019
74424fd
Deleted repeated code
MichaelMoroz Apr 2, 2019
6819b85
Merge branch 'master' of https://github.com/MichaelMoroz/MarbleMarcher
MichaelMoroz Apr 2, 2019
1ae7139
Big AntTweakBar update
MichaelMoroz Apr 2, 2019
8d1d3b4
Mistyped text
MichaelMoroz Apr 2, 2019
f63302f
AntTweakBar update
MichaelMoroz Apr 2, 2019
8df92b6
Unlock everything cheat and bug fixes
MichaelMoroz Apr 2, 2019
047bfb8
Reorganized and updated the readme
WAUthethird Apr 3, 2019
8cdeb1d
Took out 'unofficial'
WAUthethird Apr 3, 2019
0db6448
Folder reformating and window icon
MichaelMoroz Apr 3, 2019
90c1052
Update Proposed Changes as per the Discord list
WAUthethird Apr 4, 2019
7986758
Update README.md
WAUthethird Apr 6, 2019
9a2801c
Update README.md
WAUthethird Apr 6, 2019
4e63550
Delete frag.glsl
WAUthethird Apr 6, 2019
ec94b1a
Delete README.md
WAUthethird Apr 6, 2019
a796d3a
Update README.md
WAUthethird Apr 6, 2019
34eca6d
Delete Main.cpp
WAUthethird Apr 6, 2019
6a157d6
Delete Overlays.cpp
WAUthethird Apr 6, 2019
0c4bb0b
Delete Overlays.h
WAUthethird Apr 6, 2019
7af0866
Create Overlays.h
WAUthethird Apr 6, 2019
9747b5d
Create Overlays.cpp
WAUthethird Apr 6, 2019
7bcf113
Create Main.cpp
WAUthethird Apr 6, 2019
3992681
Delete Overlays.cpp
WAUthethird Apr 6, 2019
2a46e71
Create Overlays.cpp
WAUthethird Apr 6, 2019
12ce871
Create README.md
WAUthethird Apr 6, 2019
0c56c80
Delete README.md
WAUthethird Apr 6, 2019
4cdd863
Create README.md
WAUthethird Apr 6, 2019
39eb6d9
Merge branch 'master' into master
WAUthethird Apr 7, 2019
2688e70
Merge pull request #3 from MichaelMoroz/master
WAUthethird Apr 7, 2019
0cbe791
Update Overlays.cpp
WAUthethird Apr 7, 2019
923e2f3
Update README.md
WAUthethird Apr 7, 2019
9a60fae
Update README.md
WAUthethird Apr 7, 2019
4ac481a
Update README.md
WAUthethird Apr 7, 2019
497f2c5
Update README.md
WAUthethird Apr 7, 2019
9c9afcc
Update winMacOSBuild.sh
WAUthethird Apr 7, 2019
69fef73
Update README.md
WAUthethird Apr 7, 2019
2eb3c04
Update README.md
WAUthethird Apr 8, 2019
e0c901e
Fixed macOS compilation though it does not run correctly yet
Bryce-MW Apr 8, 2019
7478ee3
Updated information in README.md
Bryce-MW Apr 8, 2019
bbdf658
Pulled in latest changes and merged them
Bryce-MW Apr 8, 2019
ef6ca02
Minimal level editor
MichaelMoroz Apr 8, 2019
d63dbdc
Merge branch 'master' of https://github.com/MichaelMoroz/MarbleMarcher
MichaelMoroz Apr 8, 2019
3301d2a
Levels version 1
MichaelMoroz Apr 8, 2019
ca3950a
Flag/Marble placement
MichaelMoroz Apr 9, 2019
0dda9ef
Updated the cross-compiler for the new AntTweakBar verison
Bryce-MW Apr 10, 2019
7007e3b
Better positioning
MichaelMoroz Apr 10, 2019
6160f12
Update the level editor + bug fixes
MichaelMoroz Apr 10, 2019
5f9e537
Save level bug fix
MichaelMoroz Apr 10, 2019
c5267d9
play bug fix
MichaelMoroz Apr 10, 2019
63f7cb0
Some bug fixes
MichaelMoroz Apr 11, 2019
18749bf
Some improvement
MichaelMoroz Apr 11, 2019
cffb276
Merge branch 'master' of https://github.com/MichaelMoroz/MarbleMarcher
MichaelMoroz Apr 11, 2019
c66df77
Level load/save/edit fixes
MichaelMoroz Apr 11, 2019
8a3def2
Editor mode cheats bug fix
MichaelMoroz Apr 11, 2019
661eabf
Update README.md
WAUthethird Apr 22, 2019
aa689ac
Update README.md
WAUthethird Apr 22, 2019
57524b5
Update README.md
WAUthethird Apr 24, 2019
2f99a31
Update README.md
WAUthethird Apr 24, 2019
922089c
Update README.md
WAUthethird Apr 24, 2019
af799fa
Update README.md
WAUthethird Apr 24, 2019
8887f4a
Correct spelling
WAUthethird Apr 25, 2019
951e232
.dmg not .dng
WAUthethird May 2, 2019
0c48bfc
Added interface classes
MichaelMoroz Jun 12, 2019
2c18581
udated Interface classes
MichaelMoroz Jun 13, 2019
8d84a9d
partially working interface classes
MichaelMoroz Jun 18, 2019
f93ec63
animation bugfixes
MichaelMoroz Jun 18, 2019
d923d5b
Interface class improvements
MichaelMoroz Jun 18, 2019
3a1070d
Update README.md
WAUthethird Jun 19, 2019
cab04c0
Improved box rendering and interaction
MichaelMoroz Jun 20, 2019
c055b16
Text class
MichaelMoroz Jun 20, 2019
9a2c6a1
Update README.md
WAUthethird Jun 23, 2019
5c0e38f
New interface classes
MichaelMoroz Jun 24, 2019
68cf95d
Callback shenanigans
MichaelMoroz Jun 25, 2019
50c1b13
interface classes bugfixes
MichaelMoroz Jul 1, 2019
a9794a3
Finished window drag and scroll slider
MichaelMoroz Jul 1, 2019
f3b935b
MenuBox class
MichaelMoroz Jul 1, 2019
e3d896d
Gamemode functions
MichaelMoroz Jul 2, 2019
148dc68
Object copying
MichaelMoroz Jul 2, 2019
da38e0c
Update README.md
WAUthethird Jul 3, 2019
c6b0462
Update README.md
WAUthethird Jul 3, 2019
8cdcdd8
Update README.md
WAUthethird Jul 3, 2019
9d0411b
Update README.md
WAUthethird Jul 3, 2019
0869015
Create build_on_windows.md
WAUthethird Jul 3, 2019
3f29242
Update build_on_windows.md
WAUthethird Jul 3, 2019
688f7a3
Update README.md
WAUthethird Jul 3, 2019
2c6aeb9
Finished modular objects and window
MichaelMoroz Jul 8, 2019
1a9949c
Localization
MichaelMoroz Jul 9, 2019
039ccf1
Localization improvements and z global object indexing
MichaelMoroz Jul 9, 2019
3ee2122
Various fixes and MenuBox implementation
MichaelMoroz Jul 9, 2019
bee428c
Level menu function
MichaelMoroz Jul 10, 2019
209ba01
Gamemodes
MichaelMoroz Jul 10, 2019
a786443
Bugfixes with variables
MichaelMoroz Jul 11, 2019
fec8103
Working LEVEL menu
MichaelMoroz Jul 11, 2019
d5a5ec5
prerelease
MichaelMoroz Jul 11, 2019
b6270eb
Added polish localization
MichaelMoroz Jul 12, 2019
689d824
localizations
MichaelMoroz Jul 12, 2019
a013463
Merge branch 'master' of https://github.com/MichaelMoroz/MarbleMarcher
MichaelMoroz Jul 12, 2019
f5d5a66
Localization updates
MichaelMoroz Jul 12, 2019
e2acdcb
Localization and interface fixes
MichaelMoroz Jul 12, 2019
c321683
Japanese language
MichaelMoroz Jul 12, 2019
a8b5c9f
German and score system
MichaelMoroz Jul 14, 2019
1ce1857
Scores
MichaelMoroz Jul 14, 2019
6eb38f3
Switch to x64 and added average time
MichaelMoroz Jul 14, 2019
79aec51
Switch to x64 and score update
MichaelMoroz Jul 15, 2019
8fe79ec
ATB fix
MichaelMoroz Jul 15, 2019
a2aabd3
improving interface
MichaelMoroz Jul 16, 2019
444ae61
Fixed interface
MichaelMoroz Jul 16, 2019
402c6f9
Interface optimizations
MichaelMoroz Jul 18, 2019
b32647f
Keyboard menu control
MichaelMoroz Jul 19, 2019
fd5fbac
Black marble bug fix
MichaelMoroz Jul 19, 2019
ffdf30a
Merge branch 'master' of https://github.com/MichaelMoroz/MarbleMarcher
MichaelMoroz Jul 19, 2019
5911940
New main menu, confirmation box in level editor
MichaelMoroz Jul 19, 2019
d650190
some fixes
MichaelMoroz Jul 19, 2019
e857eb2
Various improvements
MichaelMoroz Jul 20, 2019
331650e
Minor improvements and folder cleanup
MichaelMoroz Jul 21, 2019
0d25992
New renderer classes
MichaelMoroz Jul 21, 2019
a46eb0e
opengl
MichaelMoroz Jul 22, 2019
f0398d4
Addded new rendering stuff
MichaelMoroz Jul 22, 2019
e930498
Added compute shaders and pipeline config file
MichaelMoroz Jul 22, 2019
3d4c3fe
Added parser class
MichaelMoroz Jul 23, 2019
f0669e7
Parser fixes
MichaelMoroz Jul 23, 2019
58ef6ce
Include preprocessing
MichaelMoroz Jul 28, 2019
56c96d2
Compute shader stuff
MichaelMoroz Jul 29, 2019
4d481b3
Working compute shaders
MichaelMoroz Jul 29, 2019
4bdbaf7
Test compute shader
MichaelMoroz Jul 29, 2019
015af59
Ray bundle marching shader
MichaelMoroz Jul 30, 2019
a7fd55a
shader update
MichaelMoroz Jul 30, 2019
0257d43
Ray bundle marching code
MichaelMoroz Jul 30, 2019
7bbc54f
More ray bundle marching
MichaelMoroz Jul 30, 2019
b8d264b
tiny fix
MichaelMoroz Jul 31, 2019
87c9b47
Ray bundle marching update
MichaelMoroz Jul 31, 2019
f7ff3ae
Trying to fix a bug
MichaelMoroz Jul 31, 2019
6d6b993
Shader shenanigans
MichaelMoroz Jul 31, 2019
84509b3
Different parameters
MichaelMoroz Jul 31, 2019
9a266b7
Trying to get RBM working
MichaelMoroz Aug 1, 2019
3a588bc
Ray bundle marching - try 2
MichaelMoroz Aug 4, 2019
55b9d99
Kind of working ray bundle marching
MichaelMoroz Aug 6, 2019
76b5d33
Performance tests
MichaelMoroz Aug 7, 2019
16a7c73
Working MRRBM
MichaelMoroz Aug 11, 2019
ffe71fa
110% performance improvement and ambient occlusion
MichaelMoroz Aug 15, 2019
61fda8c
fixed ambient occlusion
MichaelMoroz Aug 16, 2019
a0b9426
HDR tonemapping and PBR AO
MichaelMoroz Aug 17, 2019
afc39f6
Much better AO and working screenshots
MichaelMoroz Aug 17, 2019
a980ba4
+1 Step of MRRM, and separate shading step
MichaelMoroz Aug 19, 2019
d9293a8
Merge branch 'master' of https://github.com/MichaelMoroz/MarbleMarcher
MichaelMoroz Aug 19, 2019
bbb471b
Shader pipeline update, README update
MichaelMoroz Aug 21, 2019
2fd0c1e
Shadows
MichaelMoroz Aug 22, 2019
16fd44f
Much better illumination
MichaelMoroz Aug 22, 2019
6eac490
bugfixes
MichaelMoroz Aug 22, 2019
0c759a6
Aspect ratio corrections
MichaelMoroz Aug 23, 2019
60815ef
Screenshot aspect ratio fix
MichaelMoroz Aug 23, 2019
4f480d9
Merge branch 'master' into master
MichaelMoroz Aug 23, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@
.DS_Store
build
src/resources.c*
MarbleMarcher.app
winBuild
MarbleMarcher.exe
MarbleMarcher
122 changes: 120 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,129 @@
cmake_minimum_required(VERSION 3.0)
project(MarbleMarcher)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

#
# Try to find AntTweakBar library and include path.
# Once done this will define
#
# ANT_TWEAK_BAR_FOUND
# ANT_TWEAK_BAR_INCLUDE_DIR
# ANT_TWEAK_BAR_LIBRARY
#

IF (WIN32)
IF( CMAKE_SIZEOF_VOID_P EQUAL 8 )
SET( BITS "64" )
ELSE( CMAKE_SIZEOF_VOID_P EQUAL 8 )
SET( BITS "" )
ENDIF( CMAKE_SIZEOF_VOID_P EQUAL 8 )

FIND_PATH( ANT_TWEAK_BAR_INCLUDE_DIR AntTweakBar.h
PATHS
${PROJECT_SOURCE_DIR}/../../external/AntTweakBar/include
${PROJECT_SOURCE_DIR}/../external/AntTweakBar/include
${PROJECT_SOURCE_DIR}/external/AntTweakBar/include
$ENV{ANT_TWEAK_BAR_ROOT}/include
DOC "The directory where AntTweakBar.h resides")

FIND_LIBRARY( ANT_TWEAK_BAR_LIBRARY AntTweakBar${BITS}
PATHS
${PROJECT_SOURCE_DIR}/../../external/AntTweakBar/lib
${PROJECT_SOURCE_DIR}/../external/AntTweakBar/lib
${PROJECT_SOURCE_DIR}/external/AntTweakBar/lib
$ENV{ANT_TWEAK_BAR_ROOT}/lib
DOC "The AntTweakBar library")
ELSE (WIN32)

FIND_PATH(ANT_TWEAK_BAR_INCLUDE_DIR AntTweakBar.h
PATHS
${LIBIGL_INCLUDE_DIR}/../external/AntTweakBar/include/
${PROJECT_SOURCE_DIR}/../../external/AntTweakBar/include/
${PROJECT_SOURCE_DIR}/../external/AntTweakBar/include/
${PROJECT_SOURCE_DIR}/external/AntTweakBar/include/
/usr/local/include
/usr/X11/include
/usr/include
NO_DEFAULT_PATH)

FIND_LIBRARY( ANT_TWEAK_BAR_LIBRARY AntTweakBar
PATHS
${LIBIGL_INCLUDE_DIR}/../external/AntTweakBar/lib
${PROJECT_SOURCE_DIR}/../../external/AntTweakBar/lib
${PROJECT_SOURCE_DIR}/../external/AntTweakBar/lib
${PROJECT_SOURCE_DIR}/external/AntTweakBar/lib
/usr/local
/usr/X11
/usr
PATH_SUFFIXES
a
lib64
lib
dylib
NO_DEFAULT_PATH
)

ENDIF (WIN32)


SET(ANTTWEAKBAR_FOUND "NO")
IF (ANT_TWEAK_BAR_INCLUDE_DIR AND ANT_TWEAK_BAR_LIBRARY)
SET(ANTTWEAKBAR_FOUND "YES")
ENDIF (ANT_TWEAK_BAR_INCLUDE_DIR AND ANT_TWEAK_BAR_LIBRARY)

set(ANT_TWEAK_BAR_INCLUDE_DIR ${ANT_TWEAK_BAR_INCLUDE_DIR} ${ANT_TWEAK_BAR_INCLUDE_DIR}/../src/)

# message(FATAL_ERROR ${ANT_TWEAK_BAR_LIBRARY})

if(ANT_TWEAK_BAR_INCLUDE_DIR AND ANT_TWEAK_BAR_LIBRARY)
message(STATUS "Found ANTTWEAKBAR: ${ANT_TWEAK_BAR_INCLUDE_DIR}")
else(ANT_TWEAK_BAR_INCLUDE_DIR AND ANT_TWEAK_BAR_LIBRARY)
if (NOT ANTTWEAKBAR_FIND_QUIETLY)
message(FATAL_ERROR "could NOT find ANTTWEAKBAR")
endif (NOT ANTTWEAKBAR_FIND_QUIETLY)


endif(ANT_TWEAK_BAR_INCLUDE_DIR AND ANT_TWEAK_BAR_LIBRARY)

FILE(GLOB
ANT_TWEAK_BAR_SOURCES
${ANT_TWEAK_BAR_INCLUDE_DIR}/../src/*.c
${ANT_TWEAK_BAR_INCLUDE_DIR}/../src/*.cpp)

## DEPENDENCIES

find_package(Eigen3 3.3 REQUIRED)
IF (WIN32)
set(SFML_DIR C:/Libraries/SFML-2.5.1_64/lib/cmake/SFML)
set(SFML_INCLUDE_DIR C:/Libraries/SFML-2.5.1_64/include)
set(SDK_DIRECTORY "C:/Program Files (x86)/Microsoft SDKs")
set(EIGEN3_INCLUDE_DIR C:/Libraries/eigen3/)
set(GLEW_INCLUDE_DIR C:/Libraries/GLEW)
set(GLM_INCLUDE_DIR C:/Libraries/glm)
set(SFML_STATIC_LIBRARIES TRUE)
ELSE (WIN32)
set(SFML_INCLUDE_DIR /usr/local/include)
set(EIGEN3_INCLUDE_DIR /usr/local/include/eigen3)
ENDIF (WIN32)

find_package(SFML 2.5 COMPONENTS system window graphics audio REQUIRED)

## TARGETS

add_subdirectory(src)
target_include_directories(MarbleMarcherSources PUBLIC
src
${EIGEN3_INCLUDE_DIR}
${SFML_INCLUDE_DIR}
${GLEW_INCLUDE_DIR}/include
${GLM_INCLUDE_DIR}
${ANT_TWEAK_BAR_INCLUDE_DIR}
)

include_directories(${ANT_TWEAK_BAR_LIBRARY})
IF (WIN32)
include_directories(${SDK_DIRECTORY}/Windows/v7.1/Include)
ENDIF (WIN32)

target_compile_definitions(MarbleMarcherSources PRIVATE SFML_STATIC)

if(WIN32)
Expand All @@ -22,9 +132,17 @@ if(WIN32)
else()
add_executable(MarbleMarcher src/Main.cpp)
endif()

add_custom_command(TARGET MarbleMarcher PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/game_folder $<TARGET_FILE_DIR:MarbleMarcher>)


target_compile_definitions(MarbleMarcher PRIVATE SFML_STATIC)
target_link_libraries(MarbleMarcher
MarbleMarcherSources
${ANT_TWEAK_BAR_LIBRARY}
${GLEW_INCLUDE_DIR}/lib/Release/x64/glew32.lib
sfml-system
sfml-window
sfml-graphics
Expand Down
146 changes: 124 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,167 @@
# Marble Marcher

[![Build Status](https://travis-ci.org/jgoldfar/MarbleMarcher.svg?branch=master)](https://travis-ci.org/jgoldfar/MarbleMarcher)

Marble Marcher is a video game demo that uses a fractal physics engine and fully procedural rendering to produce beautiful and unique gameplay unlike anything you've seen before.

The goal of the game is to reach the flag as quickly as possible. But be careful not to
fall off the level or get crushed by the fractal! There are 24 levels to unlock.

Download Link: https://codeparade.itch.io/marblemarcher

Video Explanation: https://youtu.be/9U0XVdvQwAI
# Marble Marcher: Community Edition

### Version 1.4.0 beta

![Logo](https://github.com/MichaelMoroz/MarbleMarcher/blob/master/doc/LOGO.PNG)

This is the community edition of Marble Marcher, a procedurally rendered fractal physics marble game in which you must get to the flag in each level as fast as you can. With 24 levels to unlock and an active [speedrunning community](https://www.speedrun.com/marblemarcher), along with a rudimentary level editor, there's always new features being developed. If you complete all levels, you can use cheats to create and enhance a more exploratory experience.

Because version 1.1.0 was the last feature update of Marble Marcher, we (the Marble Marcher Speedrunning Community) opted to create a community edition to keep the community around the game alive and continuously improve the experience.
Currently this is maintained mainly by members of the [Marble Marcher Speedrunning Community on Discord](https://discord.gg/r3XrJxH), in addition to the members of the [subreddit](https://www.reddit.com/r/marblemarcher) and anyone else who has contributed.

All credit goes to [HackerPoet](https://github.com/HackerPoet) (aka [CodeParade](https://www.youtube.com/channel/UCrv269YwJzuZL3dH5PCgxUw)) for the [original game](https://github.com/HackerPoet/MarbleMarcher).

## Original Summary
*Marble Marcher is a video game demo that uses a fractal physics engine and fully procedural rendering to produce beautiful and unique gameplay unlike anything you've seen before.*

*The goal of the game is to reach the flag as quickly as possible. But be careful not to*
*fall off the level or get crushed by the fractal! There are 24 levels to unlock.*

*Download Link: https://codeparade.itch.io/marblemarcher*

*Video Explanation: https://youtu.be/9U0XVdvQwAI*

## Table of Contents
- [Changes](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#changes)
- [Proposed changes](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#proposed-changes)
- [System Dependencies](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#system-dependencies)
- [macOS](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#macos)
- [Arch Linux](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#arch-linux)
- [Building](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#building)
- [macOS](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#macos-1)
- [Arch Linux](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#arch-linux-1)
- [Compiling on Windows](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#compiling-on-windows)
- [Cross-Compile for Windows (macOS)](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#cross-compile-for-windows-on-macos)
- [Launching](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#launching)
- [macOS](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#macos-2)
- [Other OSes](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#windowslinuxanything-else)
- [Other](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#other)
- [Shortcuts](https://github.com/WAUthethird/Marble-Marcher-Community-Edition/blob/master/README.md#shortcuts)

## Changes
- numerous miscellaneous fixes have been applied
- easier compilation for macOS
- feasible Windows compilation
- README.md overhaul
- new rendering engine
- ingame statistics added (marble speed, ground/air state, ...). Press `o` to toggle.
- AntTweakBar editor added. Press `F4` to toggle.
- Level Editor and custom level support
![Editor](https://github.com/MichaelMoroz/MarbleMarcher/blob/master/doc/EDITOR.PNG)
![Levels](https://github.com/MichaelMoroz/MarbleMarcher/blob/master/doc/LEVELS.PNG)


## Proposed Changes
Though Marble Marcher CE is a largely finished game, there are still several improvements we'd like to implement. Here are our proposed changes:

- ### Fixes
- make sure game runs at the same speed everywhere
- mouse/camera speed is too fast while skipping cutscenes
- figure out why so many people get `Failed to compile vertex shader`
- ### User Experience Improvements
- pre-built versions for the common operating systems and make them available as GitHub releases (in progress)
- make the fractal recoloring from cheats persistent
- more efficient anti-aliasing modes
- toggle to always activate fast cutscenes
- better autosplitter integration
- #### UI Redesign
- confirmation, exit buttons in end screens
- change "controls" menu to "settings" and have audio, controls, sensitivity and fullscreen options there, also allow custom input bindings
- improve text rendering
- better layout
- ### New Features
- cheat: no drag
- anaglyph/stereoscopic mode
- screenshot mode (temporarily higher resolution and AA)
- native controller support (+deadzone)
- custom marble designs
- add a script to build for all platforms at once
- have MarbleMarcher added to package managers
- ### Currently WIP
- in-game level editor
- metal marble skin
- custom map support
- recording/replay functionality
- debug info screen
- cheat: unlock all levels
- add creation of macOS `.dmg` for easy distribution.

## System Dependencies
* [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page)
* [SFML 2.5.0](https://www.sfml-dev.org)
* [AntTweakBar](http://anttweakbar.sourceforge.net/)
* [CMake](https://cmake.org/)
* [OpenAL](https://www.openal.org/) (in case you get an "OpenAL DLL not found" error while trying to run the software, seems to be Windows-specific)
### MacOS
On macOS these can be conveniently installed using [Homebrew](https://brew.sh):
On macOS these can be conveniently installed using [HomeBrew](https://brew.sh):

`brew install eigen sfml`
`brew install cmake eigen sfml anttweakbar`

(Note that SFML might require a newer version than the one from Homebrew, in which case a manual installation is required)
The version of SFML required is 2.5.1 or newer. It has come to my attention that HomeBrew does now have this version (unlike when these instructions where first written) so installing via HomeBrew should work but you can still [download manually](https://www.sfml-dev.org/download/sfml/2.5.1/) if you wish and install using [these instructions](https://www.sfml-dev.org/tutorials/2.5/start-osx.php). You must install the Frameworks option not the dylib option or the build script may fail.
**Note that if HomeBrew installed a version of SFML older than 2.5.1 for some reason or you wish to install manually, you must remove the version of SFML that Brew installed using `brew remove sfml`.**

Alternatively, [vcpkg](https://github.com/Microsoft/vcpkg) can be used:
Alternatively, [vcpkg](https://github.com/Microsoft/vcpkg) can be used though it is unsupported:

`vcpkg install eigen3 sfml`
`vcpkg install cmake eigen3 sfml anttweakbar`
r
It may also be possible to use MacPorts which is also unsupported and untested.
### Arch Linux
`sudo pacman -S eigen sfml git cmake make`

`sudo pacman -S eigen sfml anttweakbar git cmake make`


## Building
### MacOS
#### Build Script
**Note for the current version: the macOS build is not yet entirely working properly so revert to the previous prerelease as required. SFML is properly included but as of yet, AntTweakBar is not so this executable will not work on machines without it installed.**
Simply run `./macOSBuild.sh`. This will generate the full Application bundle that can be used like any other application. It can even be used on systems without SFML as SFML is included in the bundle and the binary is relinked to these versions. Currently the script will only do the relinking part properly if you use SFML 2.5.1 specifically however it is planned to allow for any version. If you have another version, the script will still work, the app just won't work on a machine without SFML.
#### Manual
* `mkdir build && cd build`
* `cmake ..`
* `cmake -DCMAKE_CXX_FLAGS="-I/usr/local/include" ..`
* If you use `vcpkg`, add the flag `-DCMAKE_TOOLCHAIN_FILE=[path/to/vcpkg]/scripts/buildsystems/vcpkg.cmake`
* `cd ..`
* `cmake --build build`

Note that this just builds a binary and not an Application bundle like you might be used to seeing. To run properly, you must move the binary (which, after building, is `build/MarbleMarcher`) to the same folder as the assets folder. It is not recommended to build the Application bundle manually so no instructions for that are provided however you may peek in `macOSBuild.sh` to see how it is done.

Alternatively, one can use the platform-dependent build system, for example `Make`:

* `make -C build`

### Arch Linux
* `cd ~`
* `git clone https://github.com/HackerPoet/MarbleMarcher.git`
* `cd MarbleMarcher`
* `git clone https://github.com/WAUthethird/Marble-Marcher-Community-Edition.git`
* `cd Marble-Marcher-Community-Edition`
* `mkdir build && cd build`
* `cmake ..`
* `cd ..`
* `cmake --build build`
* `cp build/MarbleMarcher ./`

### Compiling on Windows
Windows compilation should work just fine now. It's relatively easy to do without help, but in case you'd like them, [here are some configuring and compiling instructions](https://www.reddit.com/r/Marblemarcher/comments/bamqyh/how_to_configure_and_compile_source_for_windows/). A [copy of the instructions](build_on_windows.md) is also in the root.

### Cross-Compile for Windows on macOS
This requires you to install wget, mingw-w64, and git (which you probably already have) either with HomeBrew (recommended) or otherwise. Theoretically, you should be able to just run `winMacOSBuild.sh`. There are no manual instructions because due to issues I had to just compile the thing manually which is annoying and has too many steps.

## Launching
### macOS
If the macOS build script was used, simply launch the app as normal, otherwise:
* Make sure that the current working directory contains the `assets` folder
* Run the executable generated by CMake, located in `build` (or a subdirectory)
* If running MarbleMarcher from a tarball and you see a message like

> ./MarbleMarcher: error while loading shared libraries: libsfml-graphics.so.2.5: cannot open shared object file: No such file or directory

You'll just need to run MarbleMarcher with the correct `LD_LIBRARY_PATH`:

```shell
LD_LIBRARY_PATH=`pwd`/usr/lib ./MarbleMarcher
```
### Windows/Linux/Anything Else
Launching should be self-explanatory for these systems, just run the excecutable file relevant to your system that is generated by the build process.

## Special Controls
* Press `o` to toggle the debug screen.
* Press `F5` to take a screenshot.
* Press `F4` to open AntTweakBar.

13 changes: 13 additions & 0 deletions build_on_windows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
This is a short and easy tutorial for building Marble Marcher: Community Edition on Windows. The online version of the tutorial can be found [here](https://www.reddit.com/r/Marblemarcher/comments/bamqyh/how_to_configure_and_compile_source_for_windows/). (both this and the one on Reddit are kept up-to-date with each other) This tutorial (the command line parts) can also be followed with Git Bash, though you'll need a developer CMD in administrator mode for at least one process.

1. Make sure you have [CMake](https://cmake.org/), [OpenAL](https://www.openal.org/), and [Visual Studio 2019](https://visualstudio.microsoft.com/vs/) (in addition to the 2015 and/or 2017 VS build tools, if one does not work, try installing the other) installed.
2. Download the CE edition to a folder of your choice and unzip it: [https://github.com/WAUthethird/Marble-Marcher-Community-Edition](https://github.com/WAUthethird/Marble-Marcher-Community-Edition)
3. Create a folder in your `C:` drive root called `Libraries`. Alternatively, feel free to configure the paths in `CMakeLists.txt`, in the MMCE root.
4. Download and unzip Eigen to the `Libraries` folder. I used the .zip version of the 3.3.7 release: [http://eigen.tuxfamily.org/](http://eigen.tuxfamily.org/) Rename the unzipped folder to `eigen3`.
5. Download and unzip SFML to the `Libraries` folder. I used the 2.5.1 Visual C++ 15 (2017) - 32-bit version: [https://www.sfml-dev.org/download.php](https://www.sfml-dev.org/download.php) Inside the resulting unzipped folder should be just a folder called `SFML-2.5.1`. Move this folder outside its parent folder, into `Libraries`. Delete the now empty parent folder.
6. Download and unzip AntTweakBar to the `Libraries` folder: [http://anttweakbar.sourceforge.net](http://anttweakbar.sourceforge.net) Inside the resulting unzipped folder should be just a folder called `AntTweakBar`. Move this folder outside its parent folder, into `Libraries`. Delete the now empty parent folder.
7. Now that you have all libraries in the proper places, open a developer command prompt with administrator privileges and CD into the MMCE root. Run `cmake .`
8. Open the resulting .sln file in Visual Studio and build the solution.

You're done!
If this did not work for you, please open an issue in the repository, or comment on the online Reddit post linked above.
Binary file added doc/AntTweakBar.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/EDITOR.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/LEVELS.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/LOGO.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/AntTweakBar.dll
Binary file not shown.
Binary file added game_folder/AntTweakBar64.dll
Binary file not shown.
File renamed without changes.
Binary file added game_folder/assets/NotoSansJP-Bold.otf
Binary file not shown.
Binary file added game_folder/assets/NotoSansJP-Regular.otf
Binary file not shown.
File renamed without changes.
File renamed without changes.
Binary file added game_folder/assets/Roboto-Bold.ttf
Binary file not shown.
Binary file added game_folder/assets/Roboto-Regular.ttf
Binary file not shown.
6 changes: 6 additions & 0 deletions game_folder/assets/config.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Screenshot width
2560
#Screenshot height
1440
#Language(write name in English)
English
Binary file added game_folder/glew32.dll
Binary file not shown.
Binary file added game_folder/images/MarbleMarcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/add.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added game_folder/images/box_0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/box_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/clear.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/delete.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/done.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/edit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/icon.ico
Binary file not shown.
Binary file added game_folder/images/outline_delete_black_36dp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/priority.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/images/star.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added game_folder/levels/Around_The_Citadel.lvl
Binary file not shown.
Binary file added game_folder/levels/Around_The_World.lvl
Binary file not shown.
Binary file added game_folder/levels/Asteroid_Extreme.lvl
Binary file not shown.
Binary file added game_folder/levels/Asteroid_Field.lvl
Binary file not shown.
Binary file added game_folder/levels/Beware_Of_Bumps.lvl
Binary file not shown.
Binary file added game_folder/levels/Build_Up_Speed.lvl
Binary file not shown.
Binary file added game_folder/levels/Building_Bridges.lvl
Binary file not shown.
Binary file added game_folder/levels/Bunny_Hops.lvl
Binary file not shown.
Binary file added game_folder/levels/Don't_Get_Crushed.lvl
Binary file not shown.
Binary file added game_folder/levels/Expressways.lvl
Binary file not shown.
Binary file added game_folder/levels/Fatal_Fissures.lvl
Binary file not shown.
Binary file added game_folder/levels/First_Kaizo.lvl
Binary file not shown.
Binary file added game_folder/levels/Hole_In_One.lvl
Binary file not shown.
Binary file added game_folder/levels/Jump_The_Crater.lvl
Binary file not shown.
Binary file added game_folder/levels/Lily_Pads.lvl
Binary file not shown.
Binary file added game_folder/levels/Mind_The_Gap.lvl
Binary file not shown.
Binary file added game_folder/levels/Mountain_Climbing.lvl
Binary file not shown.
Binary file added game_folder/levels/Planet_Crusher.lvl
Binary file not shown.
Binary file added game_folder/levels/Platform_Extreme.lvl
Binary file not shown.
Binary file added game_folder/levels/Pylon_Palace.lvl
Binary file not shown.
Binary file added game_folder/levels/Ride_The_Gecko.lvl
Binary file not shown.
Binary file added game_folder/levels/The_Catwalk.lvl
Binary file not shown.
Binary file added game_folder/levels/The_Crown_Jewels.lvl
Binary file not shown.
Binary file added game_folder/levels/The_Hills_Are_Alive.lvl
Binary file not shown.
Binary file added game_folder/levels/The_Sponge.lvl
Binary file not shown.
Binary file added game_folder/levels/Too_Many_Trees.lvl
Binary file not shown.
Binary file added game_folder/levels/Top_Of_The_Citadel.lvl
Binary file not shown.
Binary file added game_folder/levels/World_tree.lvl
Binary file not shown.
Empty file added game_folder/levels/scores.bin
Empty file.
Loading