Jump to content
  • Advertisement

lilington

Member
  • Content count

    64
  • Joined

  • Last visited

Community Reputation

43 Neutral

1 Follower

About lilington

  • Rank
    Member

Personal Information

  • Industry Role
    Programmer
  • Interests
    Programming

Social

  • Twitter
    @perrinalain44
  • Steam
    cerisegenius

Recent Profile Visitors

2163 profile views
  1. lilington

    More collisions and little physics

  2. lilington

    Min collisions

    Oops , I just noticed it. haha. been busy with my feeding me job and the game. I just posted something new. you can have a look at the next entry. thanks
  3. lilington

    More collisions and little physics

    Hi everybody, It's been a while, hopefully, I have new stuff. let have a look at a video to see the news. - The dark blue platform will make the character move to the right side. you will see it moving right but as there is no animation looks like I move it myself. this is a platform property: slider. - the tiny platform down is just to test the speculative collision if I come with full speed, in this case, it is around 16pixels/frame - the red platform is sticky and slows the character movements (except jump: todo) Property: sticky - the platform just above allow to go through from down, it is not a property but caused by the structure of the platform, all platforms are made with 4 faces with a flag that allows or not to go through that face. It has to be combined with a boolean (allowed_in_platform = True) to allow the character to not be ejected from the platform - the obvious one is the ice platform as you can see you can reach full speed and slide longer before being able to stop. sticky = 0.0f. At 1.0f your object cannot move at all. - Multi-jumps, I just made it easy for game development. It is just a variable to set (here at 2) to decide how many consecutive jumps are allowed. Here I hide the platforms' sprites and show they collision boxes, you can notice they have different size. You can see the character's collision point and bounding box. coming next. more physics, going back the game design and story. next time I should be able to present the beginning of the game. This may take sometimes as I need to make a lot of decision (reversible for some of them) see you soon.
  4. lilington

    Min collisions

    Thanks, the next entry will be sooner
  5. That should be a lot of work. very good. keep working.
  6. lilington

    Min collisions

    Hey, I have been busy lately, still learning more about OpenGL and of course my work. I should accelerate a little bit now. Now I added a collision engine, very basic at the moment. it is about detecting if a point is inside a platform rotated or not. plus solve the deformation on rotations in the previous entry. Also updated the math functions. Collision: Nothing very fancy, just check if the point is inside the bouncing box if the platform is not rotated it will return collision detected. if the platform has rotated then the point will be rotated opposite angle to go back to the previous situation and do the same check. int bkp_physics_inPlatform2D(BKP_VEC3 point, BKP_Entity_Platform * p) { float X = point.x; float Y = point.y; if(X > p->bbox.x && X < p->bbox.x + p->bbox.w && Y > p->bbox.y && Y < p->bbox.y + p->bbox.h) { if( p->isrotated == BKP_TRUE) { X = X - p->rotate.center.x; Y = Y - p->rotate.center.y; float x = p->rotate.center.x + X * p->cos_a - Y * (- p->sin_a); float y = p->rotate.center.y + X * (- p->sin_a) + Y * p->cos_a; if(x > p->x && x < p->x + p->w && y > p->y && y < p->y + p->h) return BKP_TRUE; } else return BKP_TRUE; } return BKP_FALSE; } Notice that the cos and sin are precalculated each team the platform if it rotates only. avoiding to use too much expensive cos and sin. You can see on the video the mouse cursor becoming red each time it is inside a platform.You can also see on the sprite 8 points that I will be used to make the collision detection. Gravity: on this other video, I activated gravity. but no collision. it is possible to jump in the air to test the effect of jump Well, that's all done for now. I will unify collision detection and gravity, add some penetration resolution and we will see a first step done. next step will be more about game play.
  7. lilington

    Let's start

    Hello, Minimal input module (keyboard only by now) is finish. gravity is finished, objet can jump and fall but no collision, so just fall down out of screen. At this moment, I am trying to solve a deformation after rotation, looks like projection matrix is wrong somewhere. I need to solve this before i continue to collisions.
  8. lilington

    Let's start

    Thanks, something will be finished this week-end (I hope)
  9. lilington

    The Poor Man's Netcode

    Wow, great entry.
  10. lilington

    Let's start

    Hi everybody, After my first game and story, it is time to start the new one with more experience this time. The primary goal is to avoid the same mistakes, so I will start to talk about it now. It is not the very beginning as I already have 11000 lines of codes. From Soul of Mask experiences, I learn that I should talk about my game as soon as possible. So I will introduce the new game to my two favourite forums GDN and another one in French: Game name: Not sure about it yet and it is not so important now. Game genre: Platform, Adventure. (kind of limbo and Ninja Gaiden mixt) Programming: C core engine, C or C++ game (not decided yet) Graphics: 2D/3D. Graphics lib: OpenGL > 3.5 Audio: Not sure yet (probably OpenAl) Platforms: for the moment Windows 10 and Linux (other may come later or not) Relative to the game ( story, artwork, ....): As I said it didn't start already, but story big picture is finished. So what am I doing now? I am finishing the first part that will make me decide if I continue the project or not. It is essentially technical like object collision, sprite animation, learning more about platform game technic... What did I do? Well, I decided to not use SDL2 as I want to port my game in some platform that does not support SDL. So I choose OpenGL. Plus I plan to use some 3D features in the game. So I mocked SDL2 behaviour and write it very specifically for my game. Here is a screenshot that shows objects rotating. I used a sprite sheet from Soul of Mask, we can also see a red box and a rectangle coming from a function call drawRectangle (more details soon) here we can see the code I will need to write for an animation: bkp_graphics_2dReady(BKP_TRUE); BKP_Rec dest,src; BKP_Rotate r; src.w = 64; src.h = 64; src.x = 2; src.y = 2; dest.w = 92; dest.h = 92; dest.x = 500; dest.y = 200; static float iii = 0; static double tm = 0; static double ta = 0; static int alpha = 255 ; static int dal = 2; tm = glfwGetTime(); //animation timers if(tm - ta > 64.0f / 1000.0f) { ta = tm; iii += .125; if(alpha <=0 || alpha >=255) dal = -dal; alpha += dal; } r.center.z = 0; r.angle = -iii; r.center.x = dest.x + dest.w / 2; r.center.y = dest.y + dest.h / 2; bkp_graphics_drawSurface(G[0] ,&dest,&src,&r,BKP_GRAPHICS_FLIPNONE, &alpha); dest.w = 368; dest.h = 138; dest.x -= 35; dest.y -= 20; bkp_graphics_2dsetColori(255,255,255,255); bkp_graphics_drawRectangle(&dest, BKP_FALSE); dest.w = 168; dest.x = 250; r.angle = iii; bkp_graphics_drawSurface(G[2] ,&dest,&src,&r,BKP_GRAPHICS_FLIPH, NULL); r.angle = -iii /4; bkp_graphics_drawSurface(G[0] ,&dest,&src,&r,BKP_GRAPHICS_FLIPV, NULL); dest.x = 620; bkp_graphics_2dsetColori(255,0,0,255 / 2); bkp_graphics_drawRectangle(&dest, BKP_TRUE); bkp_graphics_2dFlush(); Looks a little bit like SDL. In this example we can see all the job done so far, Scaling, Positioning, FLIP (vertical, horizontal), Rotate around a point and transparency. Those are all I used with SDL2 so far for Soul of Mask. The first objective is checked. Here is a video that illustrates it: bkp-2018-03-01_15.32.12 I don't go into the deep details about how I did things, but if people request it in the comments I will, I mean I would like to share it as I think some people who use OpenGL better than I do may give me some precious pieces of advice and improve the way I did it, in the meantime more beginner than I am will have a hint to start. Time for a little of performance: The graphics engine is able to draw on those 3 differents devices (here GPU integrated in CPU) - draw a frame in 0.016 ms for 1700 animated sprites on a Intel(R) Core(TM) i5-4210U CPU 1366x768 - draw a frame in 0.016 ms for 1000 animated sprites on a Broadwell Intel Core M-5Y70 HD 4k - draw a frame in 0.016 ms for 7000 animated sprites on a Intel(R) Core(TM) i7-7700 CPU 1920x1080 I didn't test it with a Nvidia or Radeon graphics card yet, for the moment it is irrelevant but it will come later. Conclusion on using custom vs SDL2 pro: Faster. I know everything behind it. con: Fewer features, less flexible, unoptimized and probably full of bugs I didn't notice yet. I also added a log system I didn't have it for my previous game so at any crash I add to try to reproduce it very hard now it is better just have to read log file on crashes. here is the output of this video: DEBUG set Moving to directory `../` [ INFO ][ 2018-03-01 15:27:06] -> Starting Graphics Engine ... [ INFO ][ 2018-03-01 15:27:06] -> Starting GLFW 3.2.1 X11 GLX EGL clock_gettime /dev/js Xf86vm shared [ INFO ][ 2018-03-01 15:27:06] -> Monitor info: [ INFO ][ 2018-03-01 15:27:06] -> #1 1920x1080 [ INFO ][ 2018-03-01 15:27:06] -> #0 1366x768 [ INFO ][ 2018-03-01 15:27:06] -> -------------------------- [ INFO ][ 2018-03-01 15:27:06] -> GL Context Params : [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS : 192 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_CUBE_MAP_TEXTURE_SIZE : 16384 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_DRAW_BUFFERS : 8 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_FRAGMENT_UNIFORM_COMPONENTS : 16384 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_TEXTURE_IMAGE_UNITS : 32 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_TEXTURE_SIZE : 16384 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_VARYING_FLOATS : 128 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_VERTEX_ATTRIBS : 16 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS : 32 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_VERTEX_UNIFORM_COMPONENTS : 16384 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV : 0 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_SAMPLES : 8 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV : 32768 : 32768 [ INFO ][ 2018-03-01 15:27:06] -> GL_MAX_SAMPLES : 0 [ INFO ][ 2018-03-01 15:27:06] -> -------------------------- [ INFO ][ 2018-03-01 15:27:06] -> Opening window with GLFW3 [OK] [ INFO ][ 2018-03-01 15:27:06] -> Renderer : Mesa DRI Intel(R) Haswell Mobile [ INFO ][ 2018-03-01 15:27:06] -> OpenGL version : 4.5 (Core Profile) Mesa 17.2.4 [ INFO ][ 2018-03-01 15:27:06] -> 4.5 [ INFO ][ 2018-03-01 15:27:06] -> program 3 GL_VALIDATE_STATUS = 1: [ INFO ][ 2018-03-01 15:27:06] -> ------------- shader programme 3 info --------------- [ INFO ][ 2018-03-01 15:27:06] -> GL_LINK_STATUS = 1: [ INFO ][ 2018-03-01 15:27:06] -> GL_ATTACHED_SHADERS = 2: [ INFO ][ 2018-03-01 15:27:06] -> GL_ACTIVE_ATTRIBUTES = 1: [ INFO ][ 2018-03-01 15:27:06] -> 0) type:vec3 name: vp location: 0 [ INFO ][ 2018-03-01 15:27:06] -> GL_ACTIVE_UNIFORMS = 2: [ INFO ][ 2018-03-01 15:27:06] -> 0) type:mat4 name: matrix location: 0 [ INFO ][ 2018-03-01 15:27:06] -> 1) type:vec4 name: color location: 1 [ INFO ][ 2018-03-01 15:27:06] -> ------------- end info --------------- [ INFO ][ 2018-03-01 15:27:06] -> program 6 GL_VALIDATE_STATUS = 1: [ INFO ][ 2018-03-01 15:27:06] -> ------------- shader programme 6 info --------------- [ INFO ][ 2018-03-01 15:27:06] -> GL_LINK_STATUS = 1: [ INFO ][ 2018-03-01 15:27:06] -> GL_ATTACHED_SHADERS = 2: [ INFO ][ 2018-03-01 15:27:06] -> GL_ACTIVE_ATTRIBUTES = 2: [ INFO ][ 2018-03-01 15:27:06] -> 0) type:vec3 name: vertex_position location: 0 [ INFO ][ 2018-03-01 15:27:06] -> 1) type:vec2 name: vt_loc location: 1 [ INFO ][ 2018-03-01 15:27:06] -> GL_ACTIVE_UNIFORMS = 3: [ INFO ][ 2018-03-01 15:27:06] -> 0) type:mat4 name: matrix location: 0 [ INFO ][ 2018-03-01 15:27:06] -> 1) type:vec4 name: vt_ location: 1 [ INFO ][ 2018-03-01 15:27:06] -> 2) type:sampler2D name: basic_texture location: 2 [ INFO ][ 2018-03-01 15:27:06] -> ------------- end info --------------- [ INFO ][ 2018-03-01 15:27:06] -> program 9 GL_VALIDATE_STATUS = 1: [ INFO ][ 2018-03-01 15:27:06] -> ------------- shader programme 9 info --------------- [ INFO ][ 2018-03-01 15:27:06] -> GL_LINK_STATUS = 1: [ INFO ][ 2018-03-01 15:27:06] -> GL_ATTACHED_SHADERS = 2: [ INFO ][ 2018-03-01 15:27:06] -> GL_ACTIVE_ATTRIBUTES = 2: [ INFO ][ 2018-03-01 15:27:06] -> 0) type:vec3 name: vertex_position location: 0 [ INFO ][ 2018-03-01 15:27:06] -> 1) type:vec2 name: vt_loc location: 1 [ INFO ][ 2018-03-01 15:27:06] -> GL_ACTIVE_UNIFORMS = 4: [ INFO ][ 2018-03-01 15:27:06] -> 0) type:mat4 name: matrix location: 0 [ INFO ][ 2018-03-01 15:27:06] -> 1) type:vec4 name: vt_ location: 1 [ INFO ][ 2018-03-01 15:27:06] -> 2) type:sampler2D name: basic_texture location: 2 [ INFO ][ 2018-03-01 15:27:06] -> 3) type:float name: alpha_factor location: 3 [ INFO ][ 2018-03-01 15:27:06] -> ------------- end info --------------- [ INFO ][ 2018-03-01 15:27:06] -> 2D Graphics Engine start [OK] [ INFO ][ 2018-03-01 15:27:06] -> Graphics Engine started [ INFO ][ 2018-03-01 15:27:17] -> [ INFO ][ 2018-03-01 15:27:17] -> deleting shader programe 3 [ INFO ][ 2018-03-01 15:27:17] -> deleting shader programe 6 [ INFO ][ 2018-03-01 15:27:17] -> deleting shader programe 9 [ INFO ][ 2018-03-01 15:27:17] -> 2D Graphics Engine closed [OK] [ INFO ][ 2018-03-01 15:27:17] -> Window closed [OK] [ INFO ][ 2018-03-01 15:27:17] -> Graphics Engine stopped [OK] [ INFO ][ 2018-03-01 15:27:17] -> Logger closed [OK] [ INFO ][ 2018-03-01 15:27:17] -> Game Engine stopped [OK] What's next? I am learning about the type of game I am doing, I should have some basic movement of main character and platform collisions soon. I promise myself I will not do everything alone again so this blog will be also used to seduce whoever want to jump into this adventure. But by experience I know I may finish alone again (who knows). Thanks for reading, I will post more as soon as I have something new to show. Have a nice day.
  11. lilington

    Missile Command

    Hi, happy to see that you learn something, I think we should all do this kind of challenge more often. I just had a quick look at coco, looks interesting specially for android :D.
  12. lilington

    I Am Overburdened, recap and numbers

    I watched your video, looks like I made most of the same mistakes
  13. lilington

    2018 Challenge Missile Command

    Just updated the sources, I forgot the specific power of the second tower, those who did downloaded, please do it again. Sorry
  14. lilington

    Missile Command Challenge

    Hummm, nice the idea of explosion to destroy things. I should really give a try to unity.
  15. lilington

    2018 Challenge Missile Command

    On Linux usually you just install the library, honestly static linking sucks, the exec will be huge for no reasons at all plus as gamer you should install sdl once for all. I don't know the package manager for linux mint, I can show you the command for fedora and just adapt it four linux mint #dnf install SDL2 SDL2_ttf SDL2_mix SDL2_image for windows, i provided because it is not simple as it is on Linux to install. I never been able to use a mac everything I do there is a failure so I just gave up.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!