Pure C Game Engine

Related tags

Graphics 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
Horde3D is a small 3D rendering and animation engine. It is written in an effort to create an engine being as lightweight and conceptually clean as possible.

Horde3D Horde3D is a 3D rendering engine written in C++ with an effort being as lightweight and conceptually clean as possible. Horde3D requires a ful

Volker Vogelhuber 1.3k Dec 31, 2022
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform AAA Open 3D Engine

Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.

O3DE 5.8k Jan 7, 2023
Brand new engine with new and QoL features. Grafex is Psych engine with some additions and Better graphics

Friday Night Funkin' - Graphex Engine Credits: Grafex Mod aka Psych Graphic Rework: Xale - Lead Coding, Artist PurpleSnake - Second Coder Psych Engine

Xale 2 Jan 7, 2023
ORE (OpenGL Rendering Engine) is a rendering engine developed for my college minor project assessment.

ORE (OPENGL RENDERING ENGINE) What is ORE? ORE(OpenGL Rendering Engine) is a rendering engine with great and easy to use UI that allows the user to lo

HARSHIT BARGUJAR 3 Sep 23, 2022
Cross-platform 2D and 3D game engine.

Urho3D Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by O

null 4.2k Jan 4, 2023
PainterEngine is a application/game engine with software renderer,PainterEngine can be transplanted to any platform that supports C

PainterEngine is a application/game engine with software renderer,PainterEngine can be transplanted to any platform that supports C

DBinary 1.6k Jan 4, 2023
A completely free, open-source, 2D game engine built on proven torque technology.

Torque2D 4.0 Early Access 1 MIT Licensed Open Source version of Torque2D from GarageGames. Maintained by the Torque Game Engines team and contribution

Torque Game Engines 692 Jan 9, 2023
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 2, 2023
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

bgfx - Cross-platform rendering library GitHub Discussions Discord Chat What is it? Cross-platform, graphics API agnostic, "Bring Your Own Engine/Fram

Бранимир Караџић 12.6k Jan 8, 2023
2D Vector Graphics Engine Powered by a JIT Compiler

Blend2D 2D Vector Graphics Powered by a JIT Compiler. Official Home Page (blend2d.com) Official Repository (blend2d/blend2d) Public Chat Channel Zlib

Blend2D 1.2k Dec 27, 2022
3D engine from scratch (without OpenGL or any other 3D graphics library)

Simple 3d engine based on SFML library. I tried to make this engine powerful and easy to understand.

Vectozavr 64 Dec 10, 2022
Dear PyGui 3D Engine (early development) and Graphics API demos.

Marvel This repo is the working location of the eventual Dear PyGui 3D Engine. It also contains several single file examples of creating a triangle wi

Jonathan Hoffstadt 85 Jan 5, 2023
GAMEDEV - Lightweight crash reporter for Unreal Engine

Mayday Mayday is a lightweight crash reporter for Unreal Engine games that uploads the crash context and minidump to an HTTP(S) server of your choosin

Gwennaël Arbona 15 Jun 24, 2022
Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui

Orbit Engine Orbit is a multiplatform-focus graphical engine build on top of OpenGl, ImGui and more... The development of the engine is documented via

Madsycode 11 Jul 3, 2021
cartoon plugins for unreal engine

卡通材质 使用方式 在材质编辑器中添加Toon Shading节点,ShadingModel即切换为SHADINGMODELID_STYLIZED_SHADOW 注意:添加节点后不再受编辑器中的ShadingModel变量控制 How to use Add Toon Shading node in

null 56 Dec 21, 2022
Procedural Mesh Modeling Toolkit for Unreal Engine Artists

OpenLand Mesh Procedural Mesh Modeling Toolkit for Unreal Engine Artists. Installation Get it via the marketplace ??️ For non-commercial projects, you

GameDev4K 26 Nov 19, 2022
An integration of Live++ for Open 3D Engine

LivePlusPlus_O3DE_Gem An integration of https://liveplusplus.tech/ for Open 3D Engine (Windows only). See Open 3D Engine at https://github.com/o3de/o3

Olex Lozitskiy 10 Oct 15, 2022
Voxelight is a simple voxel engine/sandbox

Voxelight is a learning project, I have no prior experience with OpenGL or any other graphics API for that matter.

null 0 Jul 14, 2022
Software RayTracing engine written in C++ without the usage of any libraries.

Software Raytracing Engine This is a software unidirectional raytracing engine, fully written in C++17, with no dependencies or external libraries use

Makar Ivashko 3 Nov 16, 2022