Jump to content
  • Advertisement
The search index is currently processing. Activity stream results may not be complete.

All Activity

This stream auto-updates     

  1. Past hour
  2. Bryky

    Steampunk XCom game

    Gifs and images for the developer blog posts on the steampunk-xcomish game I am working on.
  3. Fulcrum.013

    Would Unique paritcles slow down a physics simulation?

    Of cource. Becouse gaming collision response involve to mach black magic. Shaman has three hands And a wing over his shoulder By the breath of his A candle flares up And sometimes him himself Him himself does not know A wide open heart Toils and sings May you just figure out what same you searching by naive iterations that affects velocities of bodies that have to be in rest? Also can collisions processed out of impact time order give accurate results? I know result exactly. It will complitely outclass human on task known as "make a higher posible volume of BIG-BADA-BOOOM sound" becouse it human-like. Human and human like-machine is staticaly unstable becouse it have only 2 support points and upper centre of mass. It have to jit anytime to keep balance dynamicaly. It is why imposible to sleep standing and why drunk guy's jittings have a very high magnitude - his response is to slow to keep balance accurate. Just get one you leg up and close your eyes. You will feel jitting by foot of other leg.Closing of eyes just turn off narrow position feedback sensing so you can feel jitting amplitude increased. So real robot will anytime seek stable vertical position but can not reach it, so jitting around it like human. Upper mass balance is unstable. Also it just unable to measure boxes properties that required to simulation. Just imagine that you have a compass and goes directly to the North Pole. Each step you go into direction that compass needle shows. It how any gradient climb solvers works (both digital and analogue, including many human brain functions) - gradient show direction of shortest way to function extremum . But when you approached close to North Pole you step length exids exactly length that needed to make step directly to Pole. So you step over a Pole and now compass needle show opposite direction. You step again and it again exids needed length. It is jitter effect come from. It why unregulated actuator jitting around target point. To fight jitting effect you have to decrease step proportionally to your distance from Pole. It how any actuators works. But any mechanics (including human muscles) have minimal step length limit. To fight it limit you have to reach target point with given tolerance, that exids minimal step limit, and stop actuator. But you can not stop balancing a torso, becouse any error will be increased due to gravity. Balancing of torso causes jitting of actuator joined to it around target point. To fight it you have to jit actuator respectively to torso. It is why any precious work human have to made sitting on chair and have his elbows resting on supports - torso and legs just is to bad support for precious actuators movements. Also it is why human-like robots is antiscience fiction that just become to fashion toy now. To extend human's abilities robot must have non-human like construction and brains, or better say autopilot( Intelligence is really bad thing for driving screws on convwyor and other similar works). So any nonstationar robot must have at least 3 support points and low profile to be staticaly stable and have ability to spend accumulator energy to solve tasks that it intended for, instead for play to balancing games. Just look at this video https://www.youtube.com/watch?v=z-mub6RXzAU. Actuator have same kinematics as human's hand. It clearly shows what support area and mass needed to get only actuator stable and what happends in case stand's support area is not enought. Couple days ago i has seen similar machine that has pulled out from ground 2-meters height concrete pillars together with meter of underound concrete base like mushrums. To done something like this human-like robot require size at least as Lord Megathron. Only task of real robotics is to make industrial machines and industrial processes unmaned, to liberate human from slavery of machines.
  4. Today
  5. Hello. So far i got decently looking 3d scene. I also managed to render a truetype font, on my way to implementing gui (windows, buttons and textboxes). There are several issues i am facing, would love to hear your feedback. 1) I render text using atlas with VBO containing x/y/u/v of every digit in the atlas (calculated basing on x/y/z/width/height/xoffset/yoffset/xadvance data in binary .fnt format file, screenshot 1). I generated a Comic Sans MS with 32 size and times new roman with size 12 (screenshot 2 and 3). The first issue is the font looks horrible when rescaling. I guess it is because i am using fixed -1 to 1 screen space coords. This is where ortho matrix should be used, right? 2) Rendering GUI. Situation is similar to above. I guess the widgets should NOT scale when scaling window, am i right? So what am i looking for is saying "this should be always in the middle, 200x200 size no matter the display window xy", and "this should stick to the bottom left corner". Is ortho matrix the cure for all such problems? 3) The game is 3D but i have to go 2D to render static gui elements over the scene - and i want to do it properly! At the moment i am using matrix 3x3 for 2d transformations and vec3 for all kinds of coordinates. In shaders tho i technically still IS 3D. I have to set all 4 x y z w of the gl_Position while it would be much much more conventient to... just do the maths in 2d space. Can i achieve it somehow? 4) Text again. I am kind of confused what is the reason of artifacts in Times New Roman font displaying (screenshot 1). I render from left to right, letter after letter. You can clearly see that letters on the right (so the ones rendered after ones on the left are covered by the previous one). I was toying around with blending options but no luck. I do not support kerning at the moment but that's definitely not the cause of error. The display of the small font looks dirty aliased too. I am knd of confused how to interpret the integer data and how should be scaled/adapted to the screen view. Is it just store the data as constant size and again - use ortho matrix? Thanks in advance for all your ideas and suggestions! https://i.imgur.com/4rd1VC3.png https://i.imgur.com/uHrSXfe.png https://i.imgur.com/xRTffPn.png
  6. suliman

    My pirate adventure/strategy game!

    So noone tried it yet out of 350 visits? I really would appriciate some feedback! Even if you run it only for a while, try some ship combat, map travels and city interaction. You dont have to level through the entire game obviously...
  7. SillyCow

    WHO recognising 'gaming disorder'

    But that's comparable to the difference between being a stalker and wooing a romantic partner: In both cases you express your interest and spend time and effort pursuing the object of your desires. But one is a great way to develop your life into something better. The other will get you ostracised/fired/jailed . The whole point is admitting that there is a context. One would argue that stalkers are unaware of this context, and think that they are only wooing. The second factor is a societal context: In a religiously fundamental society (the kind with arranged marriages), romantic wooing might seem like a deviant behaviour. I think we were at that stage when I was a kid. Were looking for a computer to entertain you seemed "nerdy" and socially awkward. But even though it is widely accepted today, there are some people on the far end of the spectrum that might benefit from help.
  8. I worked extensively with Ogre for a few years doing professional projects, ending about 5 years ago. At that time focus was mainly on desktop but iOS was of interest and there was support. Back then, Ogre3D was a great option although slightly cumbersome for cross-platform work - we did look at alternatives when we started c2010 like Unity3D. Now as I consider getting back in the game I wonder if the world has moved on? It seems Ogre 2.0 is still WIP and even 5 years ago, 1.x was starting to feel a little dated to me. Since then major engines like Unreal have become way more accessible, and Unity3D has grown hugely (I think). Ogre is middleware not an engine so I know it's apples and oranges and this is not meant to be a criticism of Ogre - just an objective question whether many/most use cases 5-10 years ago are now better suited by Unity3D et al, especially for multi-platform? I'm historically a C++ developer but have done a lot of C# too (I can do JS but prefer not to) and on pure language preference, C# is nicer IMO. I hate with a passion CMake and all that guff What do other experienced people think of Ogre in 2018? Has it remained relevant? For someone wanting to make games not engines, would something else get me running faster while having the flexibility I want? What about toolsets/chains - this used to be a pain in Ogre too but perhaps has moved on? I am thinking of posting similar on the Ogre forum but don't want to come across like I'm dissing Ogre - I loved working with it but 5 years is a long time and I'm out of date!
  9. SillyCow

    The Han Solo Movie and the Star Wars Franchise's Direction

    Let's disect the two 2 betrayal scenes, and you tell me which one is a more solid scene (from a writer's perspective) : Villan's Weakness: Emperor: Exerting all of his power in a rapture throwing force lightning at Luke (so doesn't notice what's going on around him). And Vader previously offered Luke to rule the universe as father and son (no emperor). Snoke: Stoic. Doesn't get off his throne. Barely lifts a finger. Anticipates Rey's every move. "Force-manipulates" Rey's saber to hit her on the back of the head. Completely in control ... and... doesn't notice his disrespectful and treacherous sidekick !?!? ( and it seemed like Snoke easily manipulated him throughout the movie) Snoke to Rey: "Have you seen something? A weakness in my apprentice? (giggles) Is that why you came? Young fool, It was I who breached your minds! I stoked Ren's conflicted soul ... " (Where is the part where Snoke is unaware of Kylo Ren's treachery?) https://www.youtube.com/watch?v=BOOD26I49VM Assasin's Motivation: Both are continually mocked/abused/controlled by their masters, and don't turn on their masters beforehand. Give me a reason why they are betraying them just now: Vader: About to lose his only son as the emperor slowly tortures him in front of his eyes. Ren: Snoke humilated him in front of a girl (who is not Ren's sister/daughter or even "your father’s brother’s nephew’s cousin’s former roommate" .) Is this the first time Snoke publicly manipulated/disrespected Ren? What's special now? I don't know about you, but the character motivations in the latter seem completely random. They are just there to progress the plot: We don't know what to do with Snoke so let's get rid of him before the movie becomes boring and predictable.
  10. We are using 3JS on a project I manage and though I am not a developer on it, I've been impressed and the developers are very keen on it. I suppose it's reelvant to ask if this is only ever going to be a browser app - I'd be interested in a similar question to the OP, if mobile apps and desktop versions were possible and you didn't want to write multiple clients in different programming languages.
  11. { engine = asCreateScriptEngine(); engine->SetMessageCallback(asMETHOD(CBufferedOutStream, Callback), &bout, asCALL_THISCALL); bout.buffer = ""; mod = engine->GetModule("test", asGM_ALWAYS_CREATE); mod->AddScriptSection( "test", "namespace X { shared float A() {return 0.f;} }" "namespace Y { shared float A() {return 0.f;} }" "void test() {" " float v;" " v = Y::A();" "}"); r = mod->Build(); if (r < 0) TEST_FAILED; CBytecodeStream bc1("test"); r = mod->SaveByteCode(&bc1); assert(r >= 0); if (r < 0) TEST_FAILED; mod = engine->GetModule("test", asGM_ALWAYS_CREATE); r = mod->LoadByteCode(&bc1); if (r < 0) TEST_FAILED; if (bout.buffer != "") { PRINTF("%s", bout.buffer.c_str()); TEST_FAILED; } engine->ShutDownAndRelease(); } When you execute the above, it becomes as follows. (0, 0) : Error : LoadByteCode failed. The bytecode is invalid. Number of bytes read from stream: 146
  12. JoeJ

    Best way to optimise 3d models

    Btw, this algorithm has been integrated into Luxology Modo, which is also very good and quick for manual retopo. I really like it for character / organic modeling in general. Might be worth to check out, there was a <100 bucks version on Steam.
  13. davejones

    Best way to optimise 3d models

    Thanks for your response. I have been working my through reducing the polygon count of 3d models and I feel as if I have made good progress. I have changed the triangles to quads and managed to reduce the faces. Its now a case of knowing how to bake the high poly model onto the low poly model.
  14. 3pic_F4il_FTW

    Issue with my pick up queue system

    I am not familiar with unity but to me it seems like you are activating a pickup only to immediatly deactivate it in the same update. I think you need an additional check in the deactivate function to check whether the pickup is ready to be deactivated.
  15. lilington

    Scroll Mem and Text

    s.Yep Yep!! Back again this time with more changes, it is probably the last stop (I hope) before I start to talk about the new game on its own. So what is new. Let see the main function for an overview, here is a test for almost all the features of the game engine: BKP_Entity_Agent * G[3] ; BKP_PlatformMap * Map; BKP_Vec2i g_scr; BKP_Vec2 TWH; //screen ratio based on game artist TWH.w = sprite.w * screen.w / expected.w same with TWH.h int main(int argc, char **argv) { //bkp_setMouse(GLFW_CURSOR, GLFW_CURSOR_DISABLED, mouse_callback, scroll_callback); //bkp_setLogInfo("logdir/",BKP_LOGGER_DEBUG, BKP_LOGGER_FILEOUT | BKP_LOGGER_TERMOUT, BKP_LOGGER_OAPPEND) //change default log //void bkp_setOpenGLInfo(3, 1) //minimal version 3.1 //bkp_setWindowInfo(1024, 768, BKP_TRUE,"BKP Test"); //fullscreen 1024x768 bkp_setWindowInfo(0, 0, BKP_FALSE,"BKP Test"); // window mode, auto detect screen resolution if(bkp_startEngine(argv) != BKP_TRUE) return EXIT_FAILURE; bkp_input_Init(); g_scr = bkp_graphics_getWindowDimensions(); TWH = bkp_graphics_getTWH(1920, 1080); bkp_input_setKeyPauseTimer(.05); G[0] = (BKP_Entity_Agent *) bkp_memory_getTicket(sizeof(BKP_Entity_Agent)); G[1] = (BKP_Entity_Agent *) bkp_memory_getTicket(sizeof(BKP_Entity_Agent)); G[0]->spritesheet = bkp_graphics_2dloadSurface("data/graphics/h_none.png"); G[1]->spritesheet = bkp_graphics_2dloadSurface("data/graphics/platform.png"); init_player(G[0]); setMap(); BKP_Font * myfont; myfont = bkp_graphics_newFont("data/fonts/DejaVuSans.ttf", 64, 128); BKP_ScreenText * fps = bkp_graphics_appendTextPool("do not care", 64, myfont, bkp_vec2(20 * TWH.w,64 * TWH.h), bkp_vec2(.3 * TWH.w,.3 * TWH.h), bkp_vec4(0.98f,0.98f,0.2f,1.0f)); BKP_ScreenText * mem = bkp_graphics_appendTextPool("can't see me", 128, myfont, bkp_vec2(20 * TWH.w,96 * TWH.h), bkp_vec2(.3 * TWH.w,.3 * TWH.h), bkp_vec4(1.0f,1.0f,1.0f,1.0f)); while(G[0]->input->Cancel == 0) { bkp_input_capture(G[0]->input); manage_platforms(Map); //rotating and moving platforms manage_player(G[0]); bkp_graphics_2dscroll(G[0]->dyn.gbox); Ugp_draw(); _update_fps_counter( fps); _update_memUsage(mem); } bkp_graphics_releaseTextPool(fps); bkp_graphics_releaseTextPool(mem); bkp_graphics_freeFont(myfont); unsetMap(); bkp_memory_releaseTicket(G[0]->input); bkp_memory_releaseTicket(G[0]->spritesheet); bkp_memory_releaseTicket(G[1]->spritesheet); bkp_memory_releaseTicket(G[0]); bkp_memory_releaseTicket(G[1]); bkp_logger_write(BKP_LOGGER_INFO,"\t________________________________\n"); bkp_logger_write(BKP_LOGGER_INFO,"\t*POOLS* Allocated : %.1f Kb\n",(float)bkp_memory_allocated() / 1024); bkp_logger_write(BKP_LOGGER_INFO,"\t*POOLS* Used : %.1f Kb\n",(float)bkp_memory_usage() / 1024); bkp_logger_write(BKP_LOGGER_INFO,"\t*POOLS* Free : %.1f Kb\n",(float)bkp_memory_free() / 1024); bkp_stopEngine(); return EXIT_SUCCESS; } For those who have an allergy to global variables don't worry it is just for testing :P. So, now before starting the engine, it is possible to change some engine states by using functions like bkp_set*(); here they are commented. When the engine starts it will set up my memory pools. Those are a number of memory stacks of a different size. Every time I require some memory it will give me a "ticket" (pointer of size N) popped from stack #n. All allocations are made at the first time an object of size N is required. For example, if I want 64bytes and the pool is empty it will malloc(64 * default_number_of_object) then later I will just need to pop the ticket or push it back. There is no garbage collector but memory leaks are detected and logged. PRO: the number of calls to malloc is very low or at least computable before a game starts. CON: the default values may waste memory. However, using bkp_set_memory*() allows changing the parameter for pools of the same memory. Anyway, I will need to make statistics for each game to calculate how to set up the memory manager. G[0] = (BKP_Entity_Agent *) bkp_memory_getTicket(sizeof(BKP_Entity_Agent)); This line shows how to ask a ticket (pop a block). I can show the details of the memory manager if asked. Next is the text-engine (if I can call it like this), it is still temporary as I am still a beginner with freetype and I am not sure I will continue with it at the moment, I used it because I want a result and don't want to reinvent the wheel. The function to draw is the following, it needs a font loaded by bkp_graphics_newFont (not sure if I want to separate Text module and Graphics module yet) void bkp_graphics_renderText(const char * str, BKP_Font * font, BKP_Vec2 pos, BKP_Vec2 scale, BKP_Vec4 color) In the previous code you don't see any calls of that function because I use an OnscreenTextBuffer, it is a buffer of linked lists where each node contains everything to draw a text on screen such as Text, Position, Scale, Color. Any text can be added to buffer with the following: BKP_ScreenText * fps = bkp_graphics_appendTextPool("do not care", 64, myfont, bkp_vec2(20 * TWH.w,64 * TWH.h), bkp_vec2(.3 * TWH.w,.3 * TWH.h), bkp_vec4(0.98f,0.98f,0.2f,1.0f)); Here a pointer to the buffer entry is returned to "fps", so you guess for which purpose. 64 is the size in bytes of the text length. Once set, the size cannot change but the content can be changed, for example, like this: sprintf(fps->text, "%s : %d", "fps = ", vfps); void _update_memUsage(BKP_ScreenText * stext) { ssize_t s = bkp_memory_using(); sprintf(stext->text,"memory pool : %.2fMb | %ldKb |%ld bytes", (float)(s/ 1024) / 1024, s / 1024, s); return; } and the internal function will write all texts like this: void bkp_graphics_OnScreentext() { if(NULL == stc_Btext->head) return; BKP_ScreenText * ps = stc_Btext->head; // if text not initialize will segfault. Warning for(; NULL != ps; ps = ps->next) bkp_graphics_renderText(ps->text, ps->font, ps->pos, ps->scale, ps->color); return; } The last thing I did was scrolling. I didn't do anything fancy or special here, just adding a VIEW matrix in the shader. Every time I move the view portbkp_graphics_2dscroll(G[0]->dyn.gbox); in the GPU otherwise it keeps its values. It is a single function that takes as a parameter a rectangle to focus on. In the following example, the center of the player's bounding box is used as the point of focus: bkp_graphics_2dscroll(G[0]->dyn.gbox); Something I didn't show here is that is possible so set an autoscroll by just giving a default x/y speed to the scroller once again with a function like bkp_set*(). If I comment one of the bkp_memory_releaseTichet() lines at the end we get this in the log file or/and screen: [ INFO ][ 2018-06-21 15:56:08 ] -> Graphics Engine stopped [OK] [WARNING][ 2018-06-21 15:56:08 ] -> Ticket for Memory pool are not all released, **MEMORY LEAK** P(4) s:320 [ INFO ][ 2018-06-21 15:56:08 ] -> Destroying Memory pools[OK] The memory leak is detected in the Pool number 4 (320 bytes/ticket) unfortunately I do not provide a way to find exactly where it is. However, it is already a good hint to find it. Now a small video to show everything. I made the character bounce to show clearly all platforms' properties. What will come next? So far in my learning process I start to go away from my main goal, indeed if this demo shows a Mario like a game, it is not at all what I am making but some features I needed are now present. As an example, the double jump will not be in my game but I implemented it. It is time to pause the game engine development and go to game dev. Next step should be creating the main character and his/her basic movements. I spend a lot of time separating tasks, making the project ready to receive other contributors. That's why I am creating and documenting all the functions. I also have an artist now, not official yet but... Anyway, my experience made me suspicious. Something I have to recognize I am bad at is levelling. I needed such a long time to pass all basic levels of Soul of Mask, this game is difficult and the difficulty doesn't come crescendo, it is too sudden. I didn't even finish the last level, it looks impossible for me. And as always thanks for reading. Until next time ps: I am thinking about making the game engine open-source, for those who read it please tell me in the comment what you think about that Idea.
  16. davejones

    Best way to optimise 3d models

    Thanks for your response. I have been working my through reducing the polygon count of 3d models and I feel as if I have made good progress. Its now a case of knowing how to bake the high poly model onto the low poly model.
  17. Im Actually not sure anymore what you are refering to as the problem. Your secondary video looks correct to me as it does render isometric quads. Or do you mean that the alpha is not present so it displays alot of white?
  18. Wow~~~~ It's exactly what i need! Thank you sooooooo~ much! By the way, I found it really difficult to understand the API from the official website, i am a beginner in computer graphics and i hope i can go deeper into it, could you please give me some direction on where can i understand the difference between those API better? Thank you ~!
  19. EvaluateLocalTransform().GetT() and LclTranslation.Get(); These two can give you different results. Evaluate checks the bones relative to parents and Lcl Transform or rotation is the bones rotation relative to its own axis. Most of the time they should be similar; because the bones axis is relative to the parent. A bones axis is almost always relative to a parent unless told not to follow the parent.
  20. Scouting Ninja

    Isometric view with 2 grids & tile size

    OK, so I tried your code, had to wait to get home, and found the problem: Your grid tiles are diamonds, so to get a isometric look you "flatten" them by scaling the height. So when you load in my sprite that is already isometric, it just gets flattened. batch.setProjectionMatrix(camOrtho.combined); batch.setTransformMatrix(imageFaceCameraMatrix); batch.begin(); batch.draw(squareDummy, 0, 0); batch.end(); Should be: Matrix batchMatrix = camOrtho.combined.setToScaling(1,2,1); //Assuming XYZ; I really don't use LibGDX anymore batch.setProjectionMatrix(batchMatrix); batch.setTransformMatrix(imageFaceCameraMatrix); batch.begin(); batch.draw(squareDummy, 0, 0); batch.end(); //I didn't have time to test the above, but it should work. The short story is that your sprites have to be twice as long, because your camera "flattens" the diamonds. You could use longer sprites, or adjust sprite scale with setScale( 1, 2) when imported. Whatever you want, the camera is shrinking the Y scale by half. (Sorry I am tired right now )
  21. Shaarigan

    Procedural Animation

    My first naive approach of something like this (as our project is exactly something like this at the moment let a program generate and animate NPC models for our game) is to have a set of certain rules that describe to the program how a character (or spider in your case) moves it's legs. Explained in more detail, you have to ask youself the question what makes a spider be a spider. A computer be design is stupid and a program dosen't know about spiders and humans, their differences and traits. This is part where the program needs to start "learning" about the rules that define the traits of humans, spiders, frogs and whatever it should handle. First if you have defined rules, you can start training your program to make/animate those characters and let it learn by try and error. It will produce different kinds of animation loops and you have to decide if they look realistic or if that combination of rules and parameters match. A good point to start may be genetic algorithms in the first step so that your program is able to generate lists of rulesets that match the attended training schema. Then you could start by adding more maschine learning technics. I'm for example experimenting with SOMs (self organizing maps) to keep associations between informations in a kind of artificial memory connected
  22. Thank you very much again! Then do you know how to get the joint's rotation respective to the joint's own coordinates? I mean there is a coordinate system on the joint itself, just like the small coordinate system on the elbow joint in the attached photo. When the elbow joint rotates a little, its rotation relative to its own coordinates may also change.
  23. _Engine_

    Set up class members from c++

    Code from serializer add-on is helped. Thank you :)
  24. Gnollrunner

    The Han Solo Movie and the Star Wars Franchise's Direction

    Seriously.......He can stop a blaster bolt in mid air yet he can't even properly dispatch Finn. That fight should have lasted less than a second. I guess different people have a different level of tolerance for these things. I know it's just a movie but it should make a bit of sense.
  25. a light breeze

    The Han Solo Movie and the Star Wars Franchise's Direction

    More like Ray is able to beat a worthless Vader-wannabe. Kylo Ren was never characterized as competent in episode 7. If he can't even control his own temper, how could he hope to beat any opponent with even a speck of talent?
  26. I already tried this and the problem is, the sprites are drawn in the cameras y/x space (origin 0,0 is the bottom left corner) obs_stream_2018-06-21-0855-06.mp4 and not on the isometric grid anymore: obs_stream_2018-06-21-0859-14.mp4
  27. That is what the local transform is. The local transform is calculated relative to the parent's connection or "nose". For example if the bone is attached to the parent then it's local position = 3DVector (0,0,0) because it is touching the parent. If it is looking in the same direction as the parent it's rotation should be Quaternion (0,0,0,1) etc. You can confirm this with the offset formula: (Bpoint -Apoint = offset) So the parent position - child position should be (0,0,0) if they are attached. The "Master" (First bone,Tailbone, drop shadow bone, etc..) bone's local position should be the whole rig's local position also. Edit: If you have problems try EvaluateLocalTransform().GetT()
  1. Load more activity
  • 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!