Pure C Game Engine

Related tags

Game Corange
Overview

Corange game engine

Version 0.8.0

Written in Pure C, SDL and OpenGL.

Running

Corange is a library, but to take a quick look at some of the things it does you can Look at some of the Demos. Warning: Some things shown are from a previous version and may not remain the same in this version.

Compiling

To compile on Windows you need MinGW and then you should be able to run "make" as usual. You will need to have installed SDL, SDL_Mixer and SDL_Net.

make

To compile on Linux you need to install SDL2. Then you should run "make"

sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-mixer-dev
sudo apt-get install libsdl2-net-dev
make

Overview

  • Small, Simple, Powerful, Cross platform
  • Clean and easy Asset, UI, Entity management
  • Modern Deferred renderer

Demos

I'm a graphics programmer by trade so apologies that most of the demos are graphical apps; they're just what I love!

  • renderers Shows off the various renderers with shaders, shadows, animation etc.
  • metaballs Uses OpenCL/OpenGL interop to do Metaball rendering.
  • noise Feedback based noise pattern on screen using shader. Can generate tileable perlin noise in software.
  • platformer Basic platforming game. Fairly well commented.
  • sea Renders a sea-like surface, a ship, and some collision detection.
  • scotland Demonstrates terrain system.
  • tessellation Demo showing tessellation shaders in OpenGL 4.

FAQ

  • How is that pronounced?

    Rhymes with Purple.

  • Why not C++?

    There are plenty of C++ engines which do what I've done here and better. Pure C game engines on the other hand are much rarer. Corange provided me an outlet to practice my C skills. Of course if you are just linking to it you can still program your game/executable using C++.

  • What stuff does it do?

    I've used it as a platform for trying out all sorts of techniques and effects. These features are not out-of-the-box or plug-in-and-play, but if you are a developer who has knowledge of what they are, you should be able to utilize what I have written. Some are WIP or rough around the edges.

    Deferred Rendering / UI Rendering / Text Rendering. Multiple Lights. Post effects. SSAO. Shadow Mapping. Color Correction. Skeletal Animation. Inverse Kinematics. Collision Detection. OpenCL support. Asset / Entity / UI Management. Terrain. File loaders including .dds, .wav, .bmp, .obj, .smd. Maths and Geometry. And More...

  • Can I use this for 2D stuff?

    Certainly. Though Corange doesn't provide a 2D renderer for you. That you can write yourself. Believe it or not, making a generalized 2D renderer can be exceedingly complicated when you have to optimise for different sprites, tile sets, dynamic objects and all sorts of other effects. You're better off writing the rendering code application specific.

  • Can I contact you about something?

    Yes - [email protected]

Using / Contributing

This is still mainly a personal project and so there are going to be lots of bugs, unfinished features and messy bits of code. The engine is heavily WIP and subject to sweeping changes. It isn't really viable to use without also being part of the project development and in communication with me. Rather than a full game engine like Unity, Corange is more of a framework and gives you access to features at about the same level as XNA.

I have a big backlog of Work in Progress changes I need to push up to the repository once they get to a reasonable point so if you are interested in those please contact me.

Saying that, it is a great excuse to practise your C and I very much welcome help. If the project appeals to you here are a couple of quick things that might help get you started.

  • First take a look at the demos. These give a brief overview of how Corange can be used. The platformer demo is probably the most commented.

  • There is no real documentation so your first port of call is the header files and your second is the c files. The code has very minimal comments but should be pretty clear most of the time.

  • Corange doesn't hide anything from you. OpenGL and SDL calls are in the namespace so you've got access to the basics. The corange_init and corange_finish functions are fairly short so it is even possible to not call them and only use the components you want.

  • Structs are typedefed without their pointer. The reason for this is a personal choice but there are also quite a few data types which are passed by value on the stack (vectors, matrices, spheres, boxes). I didn't want the notion of these to get confused.

  • Some important parts of the engine are the asset, UI and entity managers. These basically let you access and store assets (models, textures - objects in the file system) and entities (lights, cameras, engine objects) and UI elements. They clean up memory on destruction and let you get pointers from all parts of the code.

  • Corange mangles the namespace pretty badly, taking names such as "error", "warning", "vec2" and "image". It isn't a general purpose library. But I've still tried to decouple stuff so it should be possible to extract certain code if you need it.

Comments
  • Unable to compile in MSYS2 MINGW64

    Unable to compile in MSYS2 MINGW64

    I have installed SDL2 in latest version of MSYS2

    pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_net
    

    And I have issue the make command

    I am getting the below error

    $ make
    gcc src/casset.c -c -I ./include -std=gnu99 -Wall -Werror -Wno-unused -O3 -g -o obj/casset.o
    In file included from ./include/cengine.h:34,
                     from ./include/casset.h:24,
                     from src/casset.c:1:
    ./include/SDL2/SDL_local.h:116:28: error: 'glActiveTexture' redeclared as different kind of symbol
      116 |   extern GLACTIVETEXTUREFN glActiveTexture;
          |                            ^~~~~~~~~~~~~~~
    In file included from ./include/cengine.h:30,
                     from ./include/casset.h:24,
                     from src/casset.c:1:
    C:/msys64/mingw64/include/SDL2/SDL_opengl.h:1878:23: note: previous declaration of 'glActiveTexture' was here
     1878 | GLAPI void GLAPIENTRY glActiveTexture( GLenum texture );
          |                       ^~~~~~~~~~~~~~~
    In file included from ./include/cengine.h:34,
                     from ./include/casset.h:24,
                     from src/casset.c:1:
    ./include/SDL2/SDL_local.h:117:35: error: 'glCompressedTexImage2D' redeclared as different kind of symbol
      117 |   extern GLCOMPRESSEDTEXIMAGE2DFN glCompressedTexImage2D;
          |                                   ^~~~~~~~~~~~~~~~~~~~~~
    In file included from ./include/cengine.h:30,
                     from ./include/casset.h:24,
                     from src/casset.c:1:
    C:/msys64/mingw64/include/SDL2/SDL_opengl.h:1884:23: note: previous declaration of 'glCompressedTexImage2D' was here
     1884 | GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
          |                       ^~~~~~~~~~~~~~~~~~~~~~
    In file included from ./include/cengine.h:34,
                     from ./include/casset.h:24,
                     from src/casset.c:1:
    ./include/SDL2/SDL_local.h:118:25: error: 'glTexImage3D' redeclared as different kind of symbol
      118 |   extern GLTEXIMAGE3DFN glTexImage3D;
          |                         ^~~~~~~~~~~~
    In file included from ./include/cengine.h:30,
                     from ./include/casset.h:24,
                     from src/casset.c:1:
    C:/msys64/mingw64/include/SDL2/SDL_opengl.h:1551:23: note: previous declaration of 'glTexImage3D' was here
     1551 | GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,
          |                       ^~~~~~~~~~~~
    make: *** [Makefile:43: obj/casset.o] Error 1
    

    What could be the issue

    opened by dickensas 12
  • Compile issues Ubuntu

    Compile issues Ubuntu

    Unfortunately I have several issues compiling and executing the demos under Ubuntu:

    lut_gen:
    make cp ../../libcorange.so ./lib/libcorange.a gcc -g obj/lut_gen.o obj/spline.o -L./lib -lcorange -lGL -lSDLmain -lSDL -o lut_gen obj/lut_gen.o: file not recognized: File format not recognized collect2: ld returned 1 exit status make: *** [lut_gen] Error 1

    metaballs: make cp ../../libcorange.so ./lib/libcorange.a gcc -g obj/kernel.o obj/marching_cubes.o obj/metaballs.o obj/particles.o obj/volume_renderer.o -L./lib -lcorange -lGL -lSDLmain -lSDL -lOpenCL -o metaballs /usr/bin/ld: cannot find -lOpenCL collect2: ld returned 1 exit status make: *** [metaballs] Error 1

    noise: make cp ../../libcorange.so ./lib/libcorange.a gcc -g obj/noise.o obj/perlin_noise.o -L./lib -lcorange -lGL -lSDLmain -lSDL -o noise /usr/bin/ld: i386:x86-64 architecture of input file obj/noise.o' is incompatible with i386 output /usr/bin/ld: i386:x86-64 architecture of input fileobj/perlin_noise.o' is incompatible with i386 output collect2: ld returned 1 exit status make: *** [noise] Error 1

    I can compile platformers, renderers, scotland and sea but when I execute them I get these messages: [DEBUG] Starting Corange... [DEBUG] Creating Graphics Manager... [DEBUG] OpenGL Info [DEBUG] Vendor: NVIDIA Corporation [DEBUG] Renderer: GeForce 9200M GE/PCI/SSE2 [DEBUG] Version: 2.1.2 NVIDIA 173.14.30 [DEBUG] Shader Version: 1.20 NVIDIA via Cg compiler [DEBUG] Loading OpenGL Extensions... [ERROR] src/SDL/SDL_local.c:572 Failed to load OpenGL extension glGenerateMipmap

    opened by RicoP 8
  • MAX_PATH undeclared in cengine.h

    MAX_PATH undeclared in cengine.h

    I've just made a clone, the HEAD is at 841fcf6 and when running make I get the following error:

    [karol@localhost 13-01-10 21:26 Code/Corange]> make
    gcc src/cengine.c -c -I ./include -std=gnu99 -Wall -Werror -Wno-unused -O3 -g -fPIC -o obj/cengine.o
    In file included from src/cengine.c:1:0:
    ./include/cengine.h:39:12: error: ‘MAX_PATH’ undeclared here (not in a function)
    make: *** [obj/cengine.o] Błąd 1
    
    opened by szabba 7
  • Multiple definition error on compiling

    Multiple definition error on compiling

    Hi I am new here and try to learn this light engine and practice my C in a more fun way, but now the compiling is not successful due to a lot of "multiple definition errors":

    gcc obj/cengine.o obj/cnet.o obj/cphysics.o obj/corange.o obj/casset.o obj/cui.o obj/centity.o obj/cgraphics.o obj/cjoystick.o obj/caudio.o obj/ui_style.o obj/ui_slider.o obj/ui_toast.o obj/ui_rectangle.o obj/ui_text.o obj/ui_option.o obj/ui_button.o obj/ui_listbox.o obj/ui_dialog.o obj/ui_textbox.o obj/ui_spinner.o obj/ui_browser.o obj/renderable.o obj/texture.o obj/music.o obj/lang.o obj/config.o obj/shader.o obj/animation.o obj/font.o obj/effect.o obj/terrain.o obj/material.o obj/cmesh.o obj/sound.o obj/image.o obj/skeleton.o obj/instance_object.o obj/landscape.o obj/animated_object.o obj/light.o obj/physics_object.o obj/particles.o obj/camera.o obj/static_object.o obj/dict.o obj/list.o obj/vertex_list.o obj/int_list.o obj/randf.o obj/vertex_hashtable.o obj/spline.o obj/renderer.o obj/sky.o obj/SDL_local.o -lSDL2 -lSDL2_mixer -lSDL2_net -shared -g -lGL -o libcorange.so /usr/bin/ld: obj/cnet.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/cnet.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/cnet.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/cnet.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/cnet.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/cnet.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/cphysics.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/cphysics.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/cphysics.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/cphysics.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/cphysics.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/cphysics.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/corange.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/corange.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/corange.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/corange.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/corange.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/corange.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/casset.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/casset.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/casset.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/casset.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/casset.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/casset.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/cui.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/cui.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/cui.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/cui.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/cui.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/cui.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/centity.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/centity.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/centity.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/centity.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/centity.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/centity.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/cgraphics.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/cgraphics.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/cgraphics.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/cgraphics.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/cgraphics.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/cgraphics.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/cjoystick.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/cjoystick.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/cjoystick.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/cjoystick.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/cjoystick.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/cjoystick.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/caudio.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/caudio.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/caudio.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/caudio.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/caudio.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/caudio.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_style.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_style.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_style.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_style.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_style.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_style.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_slider.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_slider.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_slider.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_slider.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_slider.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_slider.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_toast.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_toast.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_toast.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_toast.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_toast.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_toast.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_rectangle.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_rectangle.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_rectangle.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_rectangle.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_rectangle.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_rectangle.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_text.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_text.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_text.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_text.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_text.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_text.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_option.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_option.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_option.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_option.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_option.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_option.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_button.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_button.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_button.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_button.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_button.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_button.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_listbox.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_listbox.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_listbox.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_listbox.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_listbox.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_listbox.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_dialog.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_dialog.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_dialog.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_dialog.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_dialog.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_dialog.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_textbox.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_textbox.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_textbox.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_textbox.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_textbox.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_textbox.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_spinner.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_spinner.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_spinner.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_spinner.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/ui_spinner.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_spinner.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_browser.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/ui_browser.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/ui_browser.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/ui_browser.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/ui_browser.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/ui_browser.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/renderable.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/renderable.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/renderable.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/renderable.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/renderable.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/renderable.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/texture.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/texture.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/texture.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/texture.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/texture.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/texture.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/music.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/music.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/music.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/music.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/music.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/music.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/lang.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/lang.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/lang.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/lang.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/lang.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/lang.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/config.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/config.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/config.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/config.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/config.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/config.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/shader.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/shader.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/shader.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/shader.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/shader.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/shader.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/animation.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/animation.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/animation.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/animation.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/animation.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/animation.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/font.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/font.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/font.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/font.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/font.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/font.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/effect.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/effect.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/effect.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/effect.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/effect.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/effect.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/terrain.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/terrain.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/terrain.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/terrain.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/terrain.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/terrain.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/material.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/material.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/material.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/material.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/material.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/material.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/cmesh.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/cmesh.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/cmesh.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/cmesh.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/cmesh.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/cmesh.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/sound.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/sound.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/sound.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/sound.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/sound.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/sound.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/image.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/image.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/image.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/image.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/image.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/image.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/skeleton.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/skeleton.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/skeleton.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/skeleton.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/skeleton.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/skeleton.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/instance_object.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/instance_object.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/instance_object.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/instance_object.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/instance_object.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/instance_object.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/landscape.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/landscape.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/landscape.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/landscape.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/landscape.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/landscape.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/animated_object.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/animated_object.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/animated_object.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/animated_object.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/animated_object.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/animated_object.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/light.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/light.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/light.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/light.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/light.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/light.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/physics_object.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/physics_object.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/physics_object.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/physics_object.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/physics_object.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/physics_object.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/particles.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/particles.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/particles.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/particles.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/particles.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/particles.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/camera.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/camera.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/camera.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/camera.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/camera.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/camera.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/static_object.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/static_object.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/static_object.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/static_object.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/static_object.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/static_object.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/dict.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/dict.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/dict.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/dict.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/dict.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/dict.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/list.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/list.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/list.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/list.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/list.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/list.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/vertex_list.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/vertex_list.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/vertex_list.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/vertex_list.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/vertex_list.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/vertex_list.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/int_list.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/int_list.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/int_list.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/int_list.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/int_list.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/int_list.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/randf.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/randf.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/randf.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/randf.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/randf.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/randf.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/vertex_hashtable.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/vertex_hashtable.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/vertex_hashtable.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/vertex_hashtable.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/vertex_hashtable.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/vertex_hashtable.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/spline.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/spline.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/spline.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/spline.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/spline.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/spline.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/renderer.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/renderer.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here /usr/bin/ld: obj/renderer.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/renderer.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/renderer.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/renderer.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/sky.o:/home/qs/Corange/./include/cengine.h:80: multiple definition ofdebug_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:80: first defined here /usr/bin/ld: obj/sky.o:/home/qs/Corange/./include/cengine.h:79: multiple definition of debug_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:79: first defined here /usr/bin/ld: obj/sky.o:/home/qs/Corange/./include/cengine.h:77: multiple definition ofwarning_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:77: first defined here /usr/bin/ld: obj/sky.o:/home/qs/Corange/./include/cengine.h:76: multiple definition of warning_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:76: first defined here /usr/bin/ld: obj/sky.o:/home/qs/Corange/./include/cengine.h:74: multiple definition oferror_str'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:74: first defined here /usr/bin/ld: obj/sky.o:/home/qs/Corange/./include/cengine.h:73: multiple definition of error_buf'; obj/cengine.o:/home/qs/Corange/./include/cengine.h:73: first defined here collect2: error: ld returned 1 exit status make: *** [Makefile:37: libcorange.so] Error 1

    opened by IceGuye 6
  • SDL2/SDL_mixer.h: no such file ro directory

    SDL2/SDL_mixer.h: no such file ro directory

    I tried make with GCC 4.8.4 on my Ubuntu 14.10 box 64-bit, and I have SDL2 and SDL2-mixer and SDL2-net previously installed including libsdl2-dev. Is it simply renaming the file to something else? SDL_mixer to SDL2-mixer? PS: I bought your book, so I was pleasantly surprised to stumble upon Corange!

    In file included from ./include/casset.h:24:0,
                     from src/casset.c:1:
    ./include/cengine.h:32:28: fatal error: SDL2/SDL_mixer.h: No such file or directory
     #include <SDL2/SDL_mixer.h>
                                ^
    compilation terminated.
    make: *** [obj/casset.o] Error 1
    
    
    opened by rpherman 6
  • GCC 4.8.3 compile failure

    GCC 4.8.3 compile failure

    src/assets/config.c: In function ‘cfg_save_file’:
    src/assets/config.c:75:8: error: trampoline generated for nested function ‘write_entry’ [-Werror=trampolines]
       void write_entry(void* x) {
    
    

    Also fails on versions 4.7.3 and 4.9.2

    opened by ColinGilbert 6
  • Is the

    Is the "quadratic()" function being properly calculated?

    I recently asked another question about the "quadratic()" function, but I have another one about the implementation. This function obviously lets one use the quadratic formula, which is x = (-b +- sqrt(b^2 - 4 * a * c))/2a. Please see this Khan Academy if my quadratic formula is unclear. This is almost reflected in the code, but instead of "2a," it appears to divide the discriminant by just "2." Why is this? I'm fairly new to computer graphics math, so I am unsure if this is intentional or not.

    Here is the code from Corange that I'm asking about, with the parts I'm curious about followed by a comment. `bool quadratic(float a, float b, float c, float* t0, float* t1) {

    float descrim = bb - 4a*c;

    if (descrim < 0) {

    return false;
    

    } else {

    float d = sqrtf(descrim);
    float q = (b < 0) ? (-b - d) / 2.0 : (-b + d) / 2.0;//  Should "2.0" be changed to "2.0*a"?
    
    *t0 = q / a;
    *t1 = c / q;
    
    return true;
    

    }

    }`

    opened by d4v3y5c0n3s 5
  • ... how rotate camera? LoL )))

    ... how rotate camera? LoL )))

    Hi, Daniel, I suddenly found that I did not understand how to adjust the angle of the camera. I wrote a dynamic environment for a cubic map and for rendering in a cubic texture, I move the camera to the object position, but I don’t understand how to rotate the camera on six sides.

    Can you give one example, for example, turning the camera strictly up or down? And then I'll find out.

    I have attached a piece of code to understand what I'm trying to do. ??

    // prepare env cubemaps for surfaces
    static void renderer_render_target_cubemap(renderer * dr)
    {
        renderer_cubemap_dynamic_reset_counts(dr);
        vec3 cam_pos_save = dr->camera->position;
    
      for ( int j = 0; j < dr->render_objects_num; j++)
      {
        renderable * ren = NULL;
        if(dr->render_objects[j].type == RO_TYPE_STATIC)
        {
            dr->camera->position = dr->render_objects[j].static_object->position;
            ren = asset_hndl_ptr(&dr->render_objects[j].static_object->renderable);
    
        }else if(dr->render_objects[j].type == RO_TYPE_ANIMATED)
        {
            dr->camera->position = dr->render_objects[j].animated_object->position;
            ren = asset_hndl_ptr(&dr->render_objects[j].animated_object->renderable);
    
        }else if(dr->render_objects[j].type == RO_TYPE_INSTANCE)
        {
            //XXX: dynamic env only for one instance fix it!
            dr->camera->position = dr->render_objects[j].instance_object->instances[0].position;
            ren = asset_hndl_ptr(&dr->render_objects[j].instance_object->renderable);
    
        };
        GLint current_cube_texture = -1;
        for (int i = 0; i < ren->num_surfaces; ++i)
        {
           material_entry * me = material_get_entry(asset_hndl_ptr(&ren->material),i);
           if(material_entry_item(me,"envcube_dynamic").as_bool == false)
           {
                continue;
           }else{
               current_cube_texture = renderer_get_cubemap_dynamic_repare(dr);
           };
        for (int i = 0; i < 6; ++i)
        {
          
              swith(i)
              {      // help me this pleeeeeeeeeees ))))))))))))))))))))))
                     case 1:  dr->camera->target = /*????????*/ ;  break;
                     case 2:  dr->camera->target = /*????????*/ ; break;
                     case 3:  dr->camera->target = /*????????*/ ; break;
                     case 4:  dr->camera->target = /*????????*/ ; break;
                     case 5:  dr->camera->target = /*????????*/ ; break;
                     case 6:  dr->camera->target = /*????????*/ ; break;
              };
         
           dr->cubemap_dynamic_render_process = true; 
           render_shadows(dr);  
           render_clear(dr);    
           glPolygonMode( GL_FRONT_AND_BACK, dr->mode);
           render_gbuffer(dr);  
           glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
           render_ssao(dr);   
           render_skydome(dr);   
           render_skycube(dr); 
           render_compose(dr); 
           glPolygonMode( GL_FRONT_AND_BACK, dr->mode);
           render_sea(dr);    
           render_particles(dr);
           glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
           render_tonemap(dr);  
           render_post0(dr);    
           glBindFramebuffer(GL_FRAMEBUFFER, dr->cubemap_dynamic_fbo);
        glDrawBuffer(GL_COLOR_ATTACHMENT0 + i);
           glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
           glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
                                  GL_TEXTURE_CUBE_MAP_POSITIVE_X       + i,
                                  current_cube_texture, 0);
    
           render_post1(dr);    
        glBindFramebuffer(GL_FRAMEBUFFER, 0);
           dr->cubemap_dynamic_render_process = false;
    
        };
    
      };
     };
        dr->camera->position = cam_pos_save;
        renderer_set_camera(dr,dr->camera);
    }
    

    Next just render scene

    opened by blogdron 5
  • compilation failure

    compilation failure

    gcc src/SDL2/SDL_local.c -c -I ./include -std=gnu99 -Wall -Werror -Wno-unused -O3 -g -fPIC -o obj/SDL_local.o
    src/SDL2/SDL_local.c:16:0: error: "MAX_PATH" redefined [-Werror]
     #define MAX_PATH 512
     ^
    In file included from src/SDL2/SDL_local.c:1:0:
    ./include/SDL2/SDL_local.h:14:0: note: this is the location of the previous definition
       #define MAX_PATH PATH_MAX
     ^
    cc1: all warnings being treated as errors
    Makefile:46: recipe for target 'obj/SDL_local.o' failed
    make: *** [obj/SDL_local.o] Error 1
    
    opened by benwaffle 5
  • fixed minor typo where the

    fixed minor typo where the "GLUNIFORM2FVFN" extension had been used where it wasn't intended

    Previously, "GLUNIFORM2FVFN" had been used where "GLUNIFORM3FVFN" and "GLUNIFORM3FVFN" should have been used instead on lines 148 & 149.

    opened by d4v3y5c0n3s 4
  • Direction of a plane.

    Direction of a plane.

    Could you clarify if the direction of the planes in a box are pointing outward or inward?

    https://github.com/orangeduck/Corange/blob/3c99c2e25c338b27ee831406aaed0159ec3a77a2/include/cengine.h#L564

    opened by rainwoodman 4
  • Repaired dynamic linking in demos Makefiles

    Repaired dynamic linking in demos Makefiles

    not all demo Makefiles had -L flag set properly and they did not compile out-of-the-box. Someone mentioned it in issue #78. Also fixed a small typo in demos/ui/ui.c

    opened by bartoszpiech 0
  • Notice: Mesa - R600 - NIR - TGSI - translation from TGSI failed

    Notice: Mesa - R600 - NIR - TGSI - translation from TGSI failed

    This is just a note for those who will be affected by the problem like mine. This is not Corange problem.
    But it's better to know about it.

    The problem is described here:

    • https://gitlab.freedesktop.org/mesa/mesa/-/issues/7780

    I will only briefly summarize the main. If you come across artifacts and graphics options like in graphics.cfg lighting = 1 and while in the terminal you see the following lines

    EE ../src/gallium/drivers/r600/r600_state_common.c:961 r600_shader_select - Failed to build shader variant (type=1) -1
    EE ../src/gallium/drivers/r600/r600_shader.c:193 r600_pipe_shader_create - translation from TGSI failed !
    

    it means the shader is working now assets_core/shaders/deferred/compose.fs

    4 fix options

    • 1 Fix shader
    #version 120
    -#define MAX_LIGHTS 32
    +#define MAX_LIGHTS 8
    

    or

    -#version 120
    +#version 130
    #define MAX_LIGHTS 32
    
    • 2 Use NIR backend
    $export R600_DEBUG=nir
    $run_corange_app
    
    • 3 Wait update MESA with NIR by default

    • 4 Set in graphics.cfg lighting = 0 for use assets_core/shaders/deferred/compose_low.fs Notice: shadows not working with lighting = 0 and again wait update mesa


    I hope this will be useful to know and someone will be protected from tedious debugging like me :smiley:

    opened by blogdron 0
  • Segmentation Fault

    Segmentation Fault

    After compiling demos and executing them, I get the following error...

    [ERROR] (src/corange.c:corange_signal:9) Segmentation fault

    Any help would be appreciated.. Here is the full output

    [DEBUG] (src/corange.c:corange_init:53) Starting Corange... [DEBUG] (src/corange.c:corange_init:56) Creating Asset Manager... [DEBUG] (src/corange.c:corange_init:57) Core Assets At '../../assets_core' ... [DEBUG] (src/corange.c:corange_init:95) Creating Entity Manager... [DEBUG] (src/corange.c:corange_init:110) Creating UI Manager... [DEBUG] (src/corange.c:corange_init:127) Creating Graphics Manager... [DEBUG] (src/corange.c:corange_init:131) Creating Audio Manager... [DEBUG] (src/corange.c:corange_init:135) Creating Joystick Manager... [DEBUG] (src/cjoystick.c:joystick_init:16) Found 0 joysticks [DEBUG] (src/corange.c:corange_init:139) Creating Network Manager... [DEBUG] (src/corange.c:corange_init:142) Finished! [DEBUG] (src/casset.c:folder_load:308) Loading Folder: 'C:\Users---\Corange\demos\rendering\assets\podium' [DEBUG] (src/casset.c:file_load:282) Loading: 'C:\Users---\Corange\demos\rendering\assets\podium\podium.bmf' [DEBUG] (src/casset.c:file_load:282) Loading: 'C:\Users---\Corange\demos\rendering\assets\podium\podium.mat' [DEBUG] (src/casset.c:file_load:282) Loading: 'C:\Users---\Corange\demos\rendering\assets\podium\podium.dds' [ERROR] (src/corange.c:corange_signal:9) Segmentation fault

    opened by gkan30 1
  • ani files

    ani files

    I really like your engine :) Pure C ... nothing else to be said.

    One Question: https://github.com/orangeduck/Corange/blob/master/demos/rendering/assets/imrod/imrod.ani How did you create the .ani files ? Everything else is Wings 3D .. but Wings cant do .ani? correct me if I'm wrong.

    Best wishes molekel

    opened by molekel 1
  • Why do the

    Why do the "mesh" and "model" types exist?

    In the "cengine" code, the types "mesh" and "model" are defined to handle 3D objects. That makes sense, but what puzzles me is why these types are never used in Corange itself. Instead, whenever the engine actually deals with 3D objects the "cmesh" type gets used instead. Furthermore, "cmesh" does not use "mesh" nor "model" internally to represent it's structure.

    My question is, why then do "mesh" and "model" exist at all? Should "cmesh" be changed to internally be based on "mesh"/"model"? I'm curious about the reason it was designed this way.

    opened by d4v3y5c0n3s 4
Owner
Daniel Holden
Animation Researcher at Ubisoft Montreal. Writer / Programmer.
Daniel Holden
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 48 Dec 29, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 61 Dec 14, 2022
Pure C Arcade game. Cross between pong and breakout, made it by accident

LameBall I accidentally made this game while testing some code. It's kind of a cross between Pong and Breakout, mixed with Squash/Racquetball. >> DOWN

Phil Bagshaw 2 Sep 17, 2021
Godot Engine – Multi-platform 2D and 3D game engine

Godot Engine 2D and 3D cross-platform game engine Godot Engine is a feature-packed, cross-platform game engine to create 2D and 3D games from a unifie

Godot Engine 56.7k Jan 9, 2023
Flax Engine – multi-platform 3D game engine

Flax Engine – multi-platform 3D game engine

Flax Engine 3.7k Jan 7, 2023
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Dmitriy Nosov 13 Dec 14, 2022
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 97 Dec 28, 2022
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.8k Dec 29, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 293 Jan 1, 2023
Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

Minetest 8.3k Dec 29, 2022
Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve external game process read/write with minimum footprint.

Launcher Abuser Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve ex

Ricardo Nacif 80 Nov 25, 2022
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

Sky 321 Jan 4, 2023
Pure C math library for 2D and 3D programming

MATHC MATHC is a simple math library for 2D and 3D programming. Features Vectors (2D, 3D and 4D) (integer type and floating-point type) Quaternions Ma

Felipe da Silva 624 Dec 30, 2022
DOSBox Pure is a new fork of DOSBox built for RetroArch/Libretro aiming for simplicity and ease of use.

DOSBox Pure is a fork of DOSBox, an emulator for DOS games, built for RetroArch/Libretro aiming for simplicity and ease of use.

Bernhard Schelling 565 Dec 27, 2022
A high speed C++17 Vulkan game engine

Acid is an open-source, cross-platform game engine written in modern C++17 and structured to be fast, simple, and extremely modular. Vulkan is the sol

Equilibrium Games 1.4k Dec 30, 2022
The flexible game engine.

The flexible game engine. Crown is a general purpose and data-driven game engine, written in orthodox C++ with a minimalistic and data-oriented design

Daniele Bartolini 1.7k Dec 28, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Jan 8, 2023
Grit Game Engine

Grit Engine This is the central repository for the Grit Game Engine project. From here can be built the engine executable itself, the launcher, and va

Grit Game Engine 103 Dec 7, 2022
A lightweight game engine written in modern C++

Halley Game Engine A lightweight game engine written in C++17. It has been used to ship Wargroove, a turn-based strategy game, on Windows, Mac (experi

Rodrigo Braz Monteiro 3.2k Dec 30, 2022