Pure C Game Engine

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
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.

vx_bevy A voxel engine prototype made using the Bevy game engine. Goals and features Very basic worldgen Animated chunk loading (ala cube world) Optim

Lucas Arriesse 125 Dec 31, 2022
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

Petros 3 Oct 25, 2021
2d Endless Runner Game made with Bevy Game Engine

Cute-runner A 2d Endless Runner Game made with Bevy Game Engine. Table of contents Project Infos Usage Screenshots Disclaimer Project Infos Date: Sept

JoaoMarinho 2 Jul 15, 2022
A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Michael Dorst 0 Dec 26, 2021
A game made in one week for the Bevy engine's first game jam

¿Quien es el MechaBurro? An entry for the first Bevy game jam following the theme of "Unfair Advantage." It was made in one week using the wonderful B

mike 20 Dec 23, 2022
A Client/Server game networking plugin using QUIC, for the Bevy game engine.

Bevy Quinnet A Client/Server game networking plugin using QUIC, for the Bevy game engine. Bevy Quinnet QUIC as a game networking protocol Features Roa

Gilles Henaux 65 Feb 20, 2023
Solana Game Server is a decentralized game server running on Solana, designed for game developers

Solana Game Server* is the first decentralized Game Server (aka web3 game server) designed for game devs. (Think web3 SDK for game developers as a ser

Tardigrade Life Sciences, Inc 16 Dec 1, 2022
A refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

Bevy Engine 21.1k Jan 4, 2023
A modern 3D/2D game engine that uses wgpu.

Harmony A modern 3D/2D game engine that uses wgpu and is designed to work out of the box with minimal effort. It uses legion for handling game/renderi

John 152 Dec 24, 2022
RTS game/engine in Rust and WebGPU

What is this? A real time strategy game/engine written with Rust and WebGPU. Eventually it will be able to run in a web browser thanks to WebGPU. This

Thomas SIMON 258 Dec 25, 2022
Basic first-person fly camera for the Bevy game engine

bevy_flycam A basic first-person fly camera for Bevy 0.4 Controls WASD to move horizontally SPACE to ascend LSHIFT to descend ESC to grab/release curs

Spencer Burris 85 Dec 23, 2022
A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music.

rustris A no-frills Tetris implementation written in Rust with the Piston game engine, and Rodio for music. (C) 2020 Ben Cantrick. This code is distri

Ben Cantrick 17 Aug 18, 2022
Inspector plugin for the bevy game engine

bevy-inspector-egui This crate provides the ability to annotate structs with a #[derive(Inspectable)], which opens a debug interface using egui where

Jakob Hellermann 517 Dec 31, 2022
Crossterm plugin for the bevy game engine

What is bevy_crossterm? bevy_crossterm is a Bevy plugin that uses crossterm as a renderer. It provides custom components and events which allow users

null 79 Nov 2, 2022
Concise Reference Book for the Bevy Game Engine

Unofficial Bevy Cheat Book Click here to read the book! Concise reference to programming in the Bevy game engine. Covers useful syntax, features, prog

null 947 Jan 8, 2023
Easy to use game engine

arcana Arcana is a game engine built with focus on ease of use without compromising on level of control. Getting started Starting writing a game is as

Zakarum 3 Feb 11, 2022
Proof-of-concept of getting OpenXR rendering support for Bevy game engine using gfx-rs abstractions

Introduction Proof-of-concept of getting OpenXR rendering support for Bevy game engine using gfx-rs abstractions. (hand interaction with boxes missing

Mika 52 Nov 14, 2022
A physics lib for the bevy game engine based on physme

physimple Physimple aims to be the simplest(and capable) physics engine(currently for bevy) WARNING Beware for breaking changes with each update for n

null 24 Oct 28, 2022
An immediate mode 2D drawing API for Bevy game engine

Bevy Canvas API prototype An unofficial immediate mode 2D drawing API for Bevy game engine. Check the documentation or the examples to know how to use

Federico Rinaldi 20 Apr 21, 2022