Jump to content
  • GameDev.net Members! Click here to learn more about the new contest from IntelⓇ and GameDev.net. Ends December 21!

  • Advertisement
    1. Past hour
    2. Rutin

      Sparky

      Wouldn't hurt to post details about the project itself. Usually people want to work on a project that interests them, and you cannot determine that by generic descriptions.
    3. Thanks for the clarifications! Very helpful. As I started thinking about this, and sketching on a UDP based C# server to do this - To match both a game client as well as an account management website - I realized if I go for method 2 - Or really either - There is no need to go this low level for a login / account management server. I can just implement this as a web service of some kind, rather than worrying about the UDP level networking - makes sense? EDIT: Of course, that requires me to run a webserver on the account/login server - which shouldn't be an issue I guess.
    4. Actually I totally forgot to mention. When you're looking into the physics portion of the engine, look up the Separating Axis Theorem. It's a brilliant and lightweight way of dealing with oriented polygons and oriented boxes. It's fairly straightforward to implement as well. I don't have any links unfortunately, but if you google for it you should find several explanation and quickly understand the process it uses.
    5. Naruto-kun

      Reverse transformation

      Hi guys Back again with reverse transformations for my RLG INS simulation: In the above image, an aircraft is depicted by the set of axes on the left, at 29.54233° latitude on the earth, with a heading of 150.12° and a pitch and bank of 0. The RLGs detect the earth's rotation rate of 15°/hr and the P/R/Y rate values indicate the earth rate sensed by each RLG in its respective axis. By reversing the pitch and roll transformation, and then taking the atan2 of the resulting pitch and roll rates, I can calculate the aircraft true heading (the CH value. Ignore the difference between it and actual heading. That's due to a normally distributed error applied to the calculation to simulate gyro inaccuracies). However, by taking the sin^-1 of the yaw rate/earth rate, I can calculate the aircraft latitude. This works all well and fine when pitch is 0, but quickly goes haywire if I change pitch. I know my other transforms are correct because the calculated heading is always consistent with the actual heading. Could someone spot the error in my reverse transformation for the yaw rate in the code below? Thanks JB double cp = cos(D2A(att1[0])), sp = sin(D2A(att1[0]));//pitch double cb = cos(D2A(att1[1])), sb = sin(D2A(att1[1]));//bank double ch = cos(D2A(att1[2])), sh = sin(D2A(att1[2]));//heading double clat = cos(D2A(lat - 90.0)), slat = sin(D2A(lat - 90.0)); double mat1[3][3]; double mat2[3][3]; mat1[0][0] = cp*cb; mat1[1][0] = cp*sb; mat1[2][0] = -sp; mat1[0][1] = sh*sp*cb - ch*sb; mat1[1][1] = sh*sp*sb + ch*cb; mat1[2][1] = sh*cp; mat1[0][2] = ch*sp*cb + sh*sb; mat1[1][2] = ch*sp*sb - sh*cb; mat1[2][2] = ch*cp; mat2[0][0] = clat; mat2[1][0] = 0; mat2[2][0] = -slat; mat2[0][1] = 0; mat2[1][1] = 0; mat2[2][1] = 0; mat2[0][2] = 0; mat2[1][2] = 0; mat2[2][2] = 0; //Transform pitch/roll/yaw matrix by latitude matrix double mat3[3][3] = { mat1[0][0]*mat2[0][0] + mat1[0][1]*mat2[1][0] + mat1[0][2]*mat2[2][0], mat1[0][0]*mat2[0][1] + mat1[0][1]*mat2[1][1] + mat1[0][2]*mat2[2][1], mat1[0][0]*mat2[0][2] + mat1[0][1]*mat2[1][2] + mat1[0][2]*mat2[2][2], mat1[1][0]*mat2[0][0] + mat1[1][1]*mat2[1][0] + mat1[1][2]*mat2[2][0], mat1[1][0]*mat2[0][1] + mat1[1][1]*mat2[1][1] + mat1[1][2]*mat2[2][1], mat1[1][0]*mat2[0][2] + mat1[1][1]*mat2[1][2] + mat1[1][2]*mat2[2][2], mat1[2][0]*mat2[0][0] + mat1[2][1]*mat2[1][0] + mat1[2][2]*mat2[2][0], mat1[2][0]*mat2[0][1] + mat1[2][1]*mat2[1][1] + mat1[2][2]*mat2[2][1], mat1[2][0]*mat2[0][2] + mat1[2][1]*mat2[1][2] + mat1[2][2]*mat2[2][2] }; //Transform earth rate by pitch/roll/yaw/heading matrix double rate[3] = { 15.0 * mat3[1][0] + 15.0 * mat3[1][1] + 15.0 * mat3[1][2],//Pitch rate 15.0 * mat3[0][0] + 15.0 * mat3[0][1] + 15.0 * mat3[0][2],//Yaw rate 15.0 * mat3[2][0] + 15.0 * mat3[2][1] + 15.0 * mat3[2][2],//Roll rate }; double pr = rate[0] * cb - rate[1] * sb;//This one is fine double rr = rate[2] * cp + rate[1] * sp*cb + rate[0] * sb*sp;//This one is fine double yr = (rate[0] * sb + rate[1] * cb) * (1.0/cp);//This one is faulty. Any ideas? //Calculate latitude from yaw rate double _calclat = A2D(asin(yr / 15.0));
    6. lawnjelly

      Frogger - challenging entry

      So far... I have used unity and godot, it's a good opportunity for me personally to try these out as normally I write straight to opengl / directx, and hadn't tried any modern engines. I should in theory try unreal next, but I found it too bloated (multi gigabyte) and painfully slow when I tried installing it last. I suspect it is overengineered for my purposes, and these days I won't use bloated software on principle. Although I have utmost respect for Tim Sweeney particularly from the unreal 1 / tournament days, imo you can make amazing software in a few hundred K, you can do anything in a few megabytes, but once you start needing gigabytes, something has usually gone seriously wrong. Obviously assets can increase an install size, but these should be optional. I'll probably use godot again next time though, I got on with it best even considering the bits I couldn't get working (3d audio and android), and I haven't been tempted by any of the other offerings (so far).
    7. Today
    8. Instead of game objects containing rendering logic, have them own a renderable sub-object. Instead of "for each object, render", use "for each object, add renderables to queue". Then pass the queue of renderable items to your renderer object. e.g. instead of a Monster having a "Render" function that actually goes and draws some things, the Monster class might be composed out of a Sprite or a Model class. You can then have some code like this can extract all the monster sprites to be drawn: std::vector<Drawable*> queue; for( auto& monster : monsters ) queue.push_back( monster.GetSprite() ); You can take this a step further by removing the specific game objects (e.g. Monster) from this process. When you create a Sprite/Model/etc, it can have it's lifetime owned by the Monster (or whatever created it), but also be weakly owned by a "Scene". The scene then internally has a list of all Drawables at all time, which it can iterate through without any knowledge of your specific gameplay classes. This is off-topic, but ECS is much more closely related to the relational model (so much that I'd go as far as to say that is the relational model, reinvented, badly). In ECS you put logic in systems and non-abstracted data layouts in components, whereas OO typically ties the two together. Also, ECS has the silly restriction that you can only have one level of composition -- Entities can be composed from components, but components can't utilize composition. Some particular ECS implementations also force the silly restriction on composition that Entities can only have one component of a particular type. Neither relational or OO have those kinds of strange restrictions.
    9. Hey guys what's the best place to buy 3D models? I'm in need of some low poly assets for my upcoming horror game because modeling takes way too much time. So far I've tried Sketchfab but didn't find anything for my taste. Though, found some good deals on CGTrader (they're running sale-off now). Are there any other places you guys shop in?
    10. I started my own route in 2009 when I started at university first in C# using an OpenGL wrapper and later changed to C++. I had a lot of try and throw away prototypes up to my current stable version and also tried the same ammount of project architecture. Having a look at certain features of other engines like Unreal Engine 4, Urho3D, Cry Engine and anything I found on the web is a good approach when you are at a state where you have basic knowledge of what you do and especially why you do something. First and most important point that I think when looking back today is your general project structure. This sounds redundant but as your project grows you will end up with a mess of code and script/ config files quickly if you don't take care about that early. As I wrote in this post, I'm currently on the go to analyse the dependency structure when building and print those diagrams for project analysis in order to keep the project clean. Second thing that pointed out in past years is your building pipeline. There is nothing more annoyng than a bunch of plain script files and/or the need to maintain those or call some magic make/nmake every time you want to setup or compile your code. This is why I started to dissect Unreal's build tool and 'm now on the go to write my own one. I figured out that there are little information you need to setup project files for different Visual Studio, Visual Studio Code and whatever IDE you prefer while most of those informations like platform settings are always the same for the whole project. I'm also now on the road to quit the use of config files for my build completely after reading this article about automated build systems. My build tool currently performs a complete project folder analysis using certain hard coded rules like Every subfolder in my project root is an own project For every project found in root collect all files and decide what kind of project it is Every project in root can contain multiple projects (mixing C# and C++ files result in two project files on the same project) Use code analysis to find relations between projects in the same root So what should I say, it works suprisingly well :D Another clue about my build tool is a Javascript kind of mechanic, mixins. I use the same method Unreal does using .Build.cs files all over my project root and sub folders to control my build tool's behavior. This is what Gigi Sayfan did with his Python scripts. But no, those aren't "just another build file" you need to maintain, those are micro plugins. My program detects all of them and loads them into the runtime to add/extend or override single functions that stay in specially marked classes; just as Javascript mixins work. I also have the chance to provide plugins but they are limited to predefined interfaces to provide build profiles (local build, remote build, cloud build ...), build systems (C#, C++ and whatever or even different platform exports) and I use C# for any of my tools because it pointed out that C# is a good language for rapid tooling and tool prototyping. The last important point in my opinion is modularity. I seperated my engine into several modules each maintaining it's own sub-project. This has the reason that I wanted my design to be flexible to the needs of the game it is used for and one could easily work in parallel on different features. This comes with nearly no overhead in C++ because of static linking. Any module I have is a static library. Another advantage of the modular approach is also the project setup. I have a package manager tool that is able to download features and their dependencies from GitHub for example (and also may include additional .Build.cs files if needed) Now I want to tell you something about how I started and what my modules contain, you may take or don't take this as a suggestion for a roadmap. I first started with my current implementation (after several reworks since 2009) to think about basics. New and delete wasted my early code and also leaded to heavy memory leaks at some of past professional prohjects I participated to so I found and read this blog post about memory management and implemented a similar approach including my own STL like container structures for better control over memory consumption. It pointed out that a lot of classes could just inherit from my Array class (dynamic resizeable continious memory management class that behaves like a plain C array but could dynamically resize to certain element count) like Vector (as I come from the C# world, some more convinience was needed like the C# List<T> equivalent), Queue, Stack, hashTable and Map for example are such classes. I force any function that operates on blocks of memory to have the Allocator& parameter pointing to the default allocator set once at startup. Driving this route I never had hidden memory leaks again in my code because the Allocator instantly complained about unreleased memory. Then I added some file and asset management because this is the most used topic in every modern game and every modern engine. Assets are always present and have to be loaded, cached and cleaned frequently while playing. Anything working with data in my engine uses streams because they provide some features like the position pointer that benefit in my opinion against plain arrays of data. One of those features for example is caching (in case of files) or the position pointer (very usefull on parsing/processing data). Memory Mapped Files also turned out to be a basic technology you won't want to miss inc ase of threaded asset loading. RTTI/ Reflection and dynamic calling was a research topic just for interest but I don't want to renounce nowdays. Driving my own implementation tooks some research but especially in case of serialization and editor to engine code it is very usefull. I also added a huge delegate and dynamic calling feature into my engine that is used for example in the in-game console to parse and call methods in game code. Another Javascript/ Typescript mechanic I used here for my editor interface are dynamic interfaces defining an interface class and convert a matching object to that interface even if it dosent belong to the inheritance chain is quite usefull to bind functionality to editor components and also enables hot reloading. I havent used it that much but you could also write a wrapper struct that behaves like an C# object, assigning any kind of class/ struct and convert it back to whatever it was when needed. Last but not least ECS. It is an overused buzzword these days that is true but it is also usefull and you again don't want to miss it once tasted. The principles of ECS are to provide objects that define their existence of components that could interact with static business code in systems. So far one could say that ECS is the most flexible way to define data that is used in certain way to reach an expected result. Using systems for rendering, UI and gameplay elements is an easy alternative to OOP because you know the data to expect and could write logic once on a centrally place instead of spreading the logic all over classes and class specializations. This also prevents the so called god object to occure. ECS is for example used in the render graph, a feature that decides of those objects to render, performs object parent/ child relation chaining and transformation updates. In Unity or Unreal, a scene contains of a render graph. This are just my thoughts so feel free to take whatever you need
    11. This definitely shouldn't be disclaimed as purely academic. Making a game engine is hard, and obviously if your objective is to push a game to market then you'll do that faster using a professional engine. With this said, making an engine from scratch is an extremely valuable chunk of experience that looks brilliant on a CV. It's one thing to say you've made a game in Unity but quite another to say you've made a game on your own engine. Making your own engine also gives you an unlimited amount of flexibility, which is extremely useful in situations where your game design requirements would otherwise be stifled by the limitations and common practices imposed by something ready-built. Anyway, if you're looking for a resource that explains from top to bottom how to make an engine, you might be out of luck. You'll find the occasional blog dedicated to it, but might not find anything in-depth; Having built engines before, my advice to you is to break the whole thing down into categories and then research each of them. You'll find many resources detailing OpenGL and other similar open standards. As for what categories you'll need to break things down into. It will change from game to game, but generally I find it helpful to have these separate areas in mind: Rendering Meshes Textures Shaders/Programs Viewport, Camera and Projection matrices Physics Coillision Detection Ray/Sphere casting Impulse Resolution Collision Shapes Scene/Room Management Entity Model (ECS or whatever) Pathfinding Usually relies on your scenes and how they're laid out. AI Usually relies on your pathfinding and raycasting I personally found this website extremely useful for rendering https://learnopengl.com/Advanced-OpenGL/Advanced-GLSL. Be warned: many OpenGL resources will be out of date and might recommend using features that are deprecated. With that said, even the out of date ones often cover the basics in a perfectly usable way, even in later versions.
    12. Feirx

      Sparky

      Sparky - 3D Platformer -Unity -Upgrades and Power ups We have development of a very interesting game underway and are looking for more talent and learners! Sparky is designed to be a simple starter project. Easy and fun. If you would like more details on the project feel free to ask . REQs: Discord App We openly invite anyone who is interested. Any skill level. (NEEDED) Programmers 3d Modeler Concept Artists Composers Sound Effects Animators Level Design Any other contribution not listed is more than welcomed Reply or message me for server invite if interested. Thank you!
    13. Even if you have different sizes, you can group same sized textures, so you only need to switch like 3 or 4 times per frame and not on each texture.
    14. You might also be interested in this recent article.
    15. Wanting to use placeholder models to test my game, I first started with downloading models, such as these: https://opengameart.org/content/rc-car-model https://free3d.com/3d-model/off-road-car--73934.html I've tried about everything, but I just couldn't get those to import with materials (or, materials would be imported, but be blank, with settings just grayed out in Unity, see below). So I went on and tried to create the materials on my own, assigning the textures as albedo. This kind of worked, but then I had none of the properties that the author had (probably?) defined, like the metalic'ness and all. I had an object that was a textured glossy plastic basically, nothing like pictured on the download page. I'm also puzzled as to why Unity would create materials but not import the textures, nor allow me to define them. There don't seem to be any log for the import, indicating maybe that it didn't find my textures. One of the models don't even have a MTL file, but they include the textures in a separate folder, and the MTL file doesn't reference them. Not sure at all what we're supposed to do with it? # Max2Mtl Version 4.0 Mar 10th, 2001 # # Multi/Sub Material__11 (1) to come # newmtl 08_-_Default Ka 0.6 0.6 0.6 Kd 0.6 0.6 0.6 Ks 0.9 0.9 0.9 d 1.0 Ns 0.0 illum 2 Then I proceed to import all that in Blender. Then again, no material. I could still redefine all by hand, as with Unity. So I went on and created a UV-mapped cube in Blender (2.79 64-bit, the current one), following this: But for some reason when exporting my FBX file I don't have a Materials folder (nor does Unity create one). I also noticed that Blender seems to do things differently depending on whether you use the Cycles renderer (my default) or the Blender renderer. My unwrapped textures got exported properly with the Blender renderer, and I guess it makes sense to use it if you're gonna delegate the shader and stuff to another software (Unity). In the end I managed to import my cube with one texture in Unity, either OBJ and FBX, by using right-click -> Import Asset… and choosing the OBJ / FBX file (do not care about the MTL, it'll get used automatically upon import), and this would only work if I had dropped my PNG texture into the project first. If I did it later on, I'd have to create another material, assign it to my object and fill the properties myself (Albedo texture, etc.), regardless of format (OBJ/FBX). To summarize, this kind of seems to work, and I kind of can make sense of it, but it seems hugely complex and really wouldn't make sense why some artists provide only the OBJ and no material info, but STILL provide a texture and embed UV maps. Am I missing something here? On your end, what's your usual workflow? Thanks
    16. itachii

      Concept

      have you made any progress on the game
    17. Are you content with the fact that a D3D12 port would only be able to run on Windows 10?
    18. Rutin

      collision sprite

      Sadly I'm a sucker for wanting to help people even though I made a pretty good conclusion this will never go anywhere no matter what I type... Even my wife was telling me why I even bother and to not waste my time. Either way, that's on me for doing so. After looking through those links I'm lost for words. At least if someone else has a similar issue, maybe some of my posts might help them, who knows.... Going forward I wont be engaging.
    19. CrazyCdn

      collision sprite

      I would just like to nominate @JTippetts for post of the year. I know you're a moderator but it's still impressive. I'm curious, it seems like an elaborate troll. I knew he went way back and I always read his initial post because I find it hilarious that people still reply to him over and over again like @Rutin has, but didn't realize he went THAT far back. That is perseverance trolling to say the least. There has to be anti-trolling rules on the forums, if not time to consider them haha.
    20. That's true too! I mean the majority of my project can be done in but a few hours, Its just the little extra bits to add in for flavor that need some tweaking but I started again mainly because I ended up changing my mind and some ideas so I got the first version to work 'fully' and now I'm trying to do it again for my own sake I guess. I don't think I've hit any horrendous events situations just yet but I definitely am NOT looking forward to them
    21. Zemlaynin

      The Great Tribes

      Album for The Great Tribes
    22. You have to remember that Switch Statements and If Statements have their own pros and cons. I personally will mix and match depending on what I'm trying to accomplish. One can truly over think and even over engineer their games which is just a waste of time in my opinion. Unless what you're doing is going to cause a massive chain of horrendous events down the road, you can usually go back and optimize as needed, and you'll find that you get more done by solving the issue and moving on because it works. Don't get this mistaken for doing "band-aid" style coding. Your project isn't massive enough to worry about such things.
    23. Nick Griffith

      Sprites & backgrounds for 2d platformer

      Ok, I updated my question.
    24. Kaina

      Guess The Number

      Guess The Number Since I am still learning how to code in GM:S, I decided to start small and work my way up. So that's why I made the most easiest game ever, but, I do wanna take this game somewhere further. So I decided to make a game... within a game. Now obviously there's only the number guessing feature in this game so far but here's a list of things I wanna implement/change in the game somewhere in the future: A puzzle game if you fail to guess the correct number too much. Number of correct guesses you made. Main Menu. Add some background music. Add the ability to change the resolution. Some spooky events that I didn't think of yet, so that'll be fun. Change the way that the game tells you if you Failed or Won so instead of another text window to pop up, the text will appear in-game, so if you play on Fullscreen, the screen won't turn white. This is a bug more-less. And that's it for now. Do you have suggestions on what I should implement/change in the game? I'd love to hear them!
    25. JTippetts

      collision sprite

      phil's been putting this particular dead horse out there to get beaten for 14 years now, so apparently we don't grow tired of it. That poor horse just keeps getting beaten unrecognizable. For anyone who may be new to this guy's schtick, just go ahead and check his posting history. Then be aware that for some reason a lot of that posting history is no longer there. There've been a few forum migrations since the horse was first killed. I was unable to access anything from before 2012 (page 39 in his profile history) directly from his profile. Google can help ya, though! For instance, a quick search turns up hex grids from 2005, where he opens with his usual statement-as-a-question, expecting people to do the all the work, and follows it up with a blatant failure to listen. It's a pattern you might find eerily familiar. A bit of advice to people currently in this loop of madness, and to those who might be tempted to dive right in thinking that they just happen to have the magic that'll make phil listen and learn: It's a waste of time. If this comment of his from 2013 is to be believed, he has a BS in computer science, so if 4 years of university and a subsequent decade of posting on gd.net have failed to teach him anything, then I highly doubt anyone can. You would probably have better outcome by finding an ACTUAL dead horse to beat.
    26. That's true, I mean 'it works' was the overall goal for this project anyway but I'd like to learn 'best practices'. I'm thinking I can see areas where a switch statement would be much better/cleaner at least. (I recently 'restarted' the tower defense to 'clean it' so I have a full working version and that's like the online/live one, I'm currently redoing it all and seeing what I can remember/do better)
    27. Guy Fleegman

      Sprites & backgrounds for 2d platformer

      Hey, Nick. You should let people know what it is that you're wanting. Artists typically need inspiration to function and the details of what you're looking for will fuel that. Do you want a half-dinosaur, half robot character stomping around on an alien world? Is it pixel art, hi-res painterly or cell shaded vector your looking for? Food for thought, man.
    28. Yesterday
    29. Jason Goepel

      Template Factory Return Type Bug

      My application is experiencing a crash in a template object's factory, because the asITypeInfo pointer being passed to the factory does not have a valid subtype. I've tried to track down the cause of this bug, and I suspect that the reference counting of template function return types may be incorrect. When a module contains a template instantiation, function objects are added to the script engine. Building a second module with an identical script will reuse those function objects. After discarding the first module though, the return types of those function objects are no longer valid. Below I have constructed a simple example which crashes due to a null engine pointer in the return type of a factory function. class MyTmpl { public: MyTmpl(asITypeInfo *t) { refCount = 1; type = t; OutputDebugStringA(asGetActiveContext()->GetFunction(0)->GetDeclaration()); type->AddRef(); } ~MyTmpl() { if( type ) type->Release(); } void AddRef() { refCount++; } void Release() { if( --refCount == 0 ) delete this; } asITypeInfo *type; int refCount; }; MyTmpl *MyTmpl_factory(asITypeInfo *type) { return new MyTmpl(type); } asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION); engine->RegisterObjectType("MyTmpl<class T>", 0, asOBJ_REF | asOBJ_TEMPLATE); engine->RegisterObjectBehaviour("MyTmpl<T>", asBEHAVE_FACTORY, "MyTmpl<T> @f(int&in)", asFUNCTIONPR(MyTmpl_factory, (asITypeInfo*), MyTmpl*), asCALL_CDECL); engine->RegisterObjectBehaviour("MyTmpl<T>", asBEHAVE_ADDREF, "void f()", asMETHOD(MyTmpl, AddRef), asCALL_THISCALL); engine->RegisterObjectBehaviour("MyTmpl<T>", asBEHAVE_RELEASE, "void f()", asMETHOD(MyTmpl, Release), asCALL_THISCALL); asIScriptModule *mod1 = engine->GetModule("m1", asGM_ALWAYS_CREATE); asIScriptModule *mod2 = engine->GetModule("m2", asGM_ALWAYS_CREATE); const char* script_text = "void main() { MyTmpl<int> s; }"; mod1->AddScriptSection("test1", script_text); mod1->Build(); mod2->AddScriptSection("test2", script_text); mod2->Build(); mod1->Discard(); asIScriptContext *ctx = engine->CreateContext(); asIScriptFunction *func = mod2->GetFunctionByDecl("void main()"); ctx->Prepare(func); ctx->Execute(); ctx->Release(); engine->Release();
    30. phil67rpg

      collision sprite

      I put in freeglut in vs 2017
    31. As long as it works and your method isn't hindering performance or your ability to manage the code then you're good to go!
    32. Just an fyi... I failed figuring out the Switch stuff but I think I actually understand it now I got it working my old IF IF IF way so will use to clean up BUT... it's working!!! Nothing Clicked (Watch the blue box) One tower is selected.. (Blue Box Will Display Upgrade Info) Can really screenshot clicks but trust me I'm clicking the blue area and its staying selected.. Clicking another tower it switches to that one, and clicking off... It clicks off So it works! Woo
    33. Nick Griffith

      Sprites & backgrounds for 2d platformer

      I've got placeholder assets, I just have some specific stuff I need done.
    34. Hi guys, I've got a little problem which is irritating me as there must be a simple solution but Google isn't necessarily being my friend right now. In my new game, I've got a set of projectiles for which I need to check for collisions with typically rectangular shapes (but which aren't axis aligned). My general approach is to create an axis aligned bounding box for both the projectile's movement and the target object. If there's a match on the broad phase, then I want to check whether the projectile collides with any of the edges of the collision and then report the first collision (i.e. if the projectile would have gone through multiple lines then I want to know the first collision so I can display the explosion animation in the right place). I represent my shapes as a series of line segments (there's a future question about colliding with semi-circles and circles, but that's later). Can anyone 'refresh my memory' on being able to test for the interaction of line segments? Thanks Steve
    35. Here are my thoughts, I consider myself to still be a noob (5 year hobbyist) KISS, keep it simple and in modules, ie start with openGL stuff then move on to inputs, audio etc, then iterate. Look for simple engine examples, I like this one: https://github.com/Marzac/le3d/tree/master/engine Focus on design (data structures and functions) of the underlying tech and simple abstractions, ie mesh'es to openGL and wav files to audio system etc. But don't get hooked on OOP/ECS design, messaging or other non core systems at the start, these are actually far more complex then a simple engine exercise is, so KISS! Re: Game Engine Architecture, I think it's too academic to be of any benefit to a noob, instead I recommend http://www.mcshaffry.com/GameCode/ It's not perfect, but a lot more practical! Re big engine source code, it's great that it's open, but too complex to understand it all, especially as a beginner. Even Doom source code today is hard to understand, and that's magnitudes smaller. I don't see why the need for a disclaimer "academic purposes", if you make it, why not use it? commercially or free.. as long as it's not buggy and deemed finished, I don't see why it has to be purely academic. Edit: gameplay3d engine is very understandable, but IMO abit on the big side: https://github.com/gameplay3d/GamePlay Edit, while I'm on github, here are a few good C++ smaller engines: includes animation, a bit dated, but still relevant. https://github.com/horde3d/Horde3D Pico, very tiny engine, no frills, no animation, but a good simple example https://github.com/AlexMartinelle/PicoEngine
    36. So there's honestly a lot to unpack here. It's awesome that you're enthusiastic about it at 18, absolutely hold on to that motivation. However, it's still best to take it a step at a time. Design is mostly written and each game needs its structure to be clear, even if its a solo project. This article might help, but it is a bit dense. Good things you've done so far: Reference other games: "i was playing lately alot of FPS (Quake champion , Law Breaker and bunch of other cool game)" Collaborate with others: "I was talkinh with my friend" Propose basic gameplay objective(s): "1- Capture the flag and bring it back to your's. If you managed to do so , the game instantly stop and you win. 2- Kill all the enemy team." Things you need to do now: Simplify the design Your first game should be very basic. Formally research other games inside the genre you're interested in (FPS) Write down the defining characteristics of each game and compare/contrast Improve technical writing skills Communication is everything for design, it's gotta be crystal clear Make a game design document Then make a project thread on gamedev.net so we can all see your progress!
    37. Looking forward to this update!!
    38. khawk

      Frogger - challenging entry

      Have you been using a different tech stack / engine for each challenge?
    39. Today, Allegorithmic announces Substance Painter’s third update of 2018, including a complete overhaul of the engine that has helped make the texturing tool an industry leader. From large-scale VFX scenes to high-quality mobile projects, the Substance Painter Fall Update improves performance across the board while simultaneously lowering the hardware requirements for all users. In order to handle large amounts of data without a drop in performance - an increasingly common requirement for VFX professionals and anyone working with massive scenes - the Substance Painter engine has been rewritten to incorporate Sparse Virtual Textures (SVT), a method of simulating large textures using less texture memory. The new memory and management system will allow for up to 300 tiles running at once, moving Substance Painter one step closer to its inevitable goal of unlimited UV tiles support. And while the new engine can easily handle massive scenes, projects of all sizes will benefit from an immediate increase in speed and ease of use. The Fall Update also brings with it new tools for mobile users, including a 2D viewport exporter designed to increase the possibilities for mobile games. High-quality PBR shaders can now be baked into a single high-resolution texture, before final exportation into an artist’s game engine of choice. Using dithering, artists will also be able to remove artifact or banding issues in their 8-bit exports, ensuring solid normal maps up and down the creation process. “Our goal isn’t just to have the best features, it’s to make sure our users have the best experience – even if that means completely rewriting an engine that has served us well for years,” said Allegorithmic founder and CEO Sebastien Deguy. “Hardware should never be a limiting factor, so Substance Painter helps them do more with less.” The Substance Painter Fall Update also introduces a host of user-requested additions, beginning with an updated Baked Lighting filter, capable of presenting environment maps that are near-perfect copies of a PBR shader. Environmental maps can now be rotated horizontally and vertically, and artists no longer have to manually account for painted details on the normal and height channels. New anisotropic patterns have also been added to help create anisotropic patterns. Additional feature sets include: Viewport Improvements Mipmapping – Textures now use mip-maps to avoid flickering on noisy surfaces. New Anisotropic Shader – New anisotropic highlights can help create realistic hair, satin, brushed metal, and glossy reflections using native Iray support. New Temporal Anti-Aliasing – New anti-aliasing methods ensure smooth edges at all times; automatic smoothing of dithering effects caused by sub-surface scattering or transparency shaders. Updated Clearcoat Shader – Adds control over coating thickness and roughness; Iray parity with new MDL shader automatically applied when selected. Symmetry and Layer Stack Improvements Deactivating Multiple Layers – Multiple layers can be clicked and dragged vertically through a stack; blending modes can be scrolled through by hand or mouse. Enhanced Symmetry Tool – Introduces ability to move the axis freely using a 3D Gizmo or within the Symmetry panel; Symmetry plane now displays as an intersection. Layer Stack UI and UX – New color swatch system allows for easy assignment and differentiation of folders and layers Black Friday/Cyber Monday Deal Allegorithmic will also be participating in Black Friday and Cyber Monday, with a sale aimed at new users. Beginning on Friday, November 23, first-time Substance users will receive a 33-percent discount on annual subscriptions, which includes Substance Painter, Substance Designer, the Substance Source material library and the upcoming AI-powered Substance Alchemist. The discount will last until November 26, making it an ideal gift for friends and family interested in digital design. Pricing/Availability The new update to Substance Painter is available today. Following the 30-day trial period, individual users will be able to subscribe to the Substance Indie or Pro plans. Substance Painter is also available for individual-license purchase, which includes 12 months of maintenance. Excluding the Black Friday deal, Subscriptions to Substance Indie cost $19.90/month; Pro plans cost $99.90/month. Enterprise and education pricing is available upon request. Students and teachers can request a license at no cost. View full story
    40. Today, Allegorithmic announces Substance Painter’s third update of 2018, including a complete overhaul of the engine that has helped make the texturing tool an industry leader. From large-scale VFX scenes to high-quality mobile projects, the Substance Painter Fall Update improves performance across the board while simultaneously lowering the hardware requirements for all users. In order to handle large amounts of data without a drop in performance - an increasingly common requirement for VFX professionals and anyone working with massive scenes - the Substance Painter engine has been rewritten to incorporate Sparse Virtual Textures (SVT), a method of simulating large textures using less texture memory. The new memory and management system will allow for up to 300 tiles running at once, moving Substance Painter one step closer to its inevitable goal of unlimited UV tiles support. And while the new engine can easily handle massive scenes, projects of all sizes will benefit from an immediate increase in speed and ease of use. The Fall Update also brings with it new tools for mobile users, including a 2D viewport exporter designed to increase the possibilities for mobile games. High-quality PBR shaders can now be baked into a single high-resolution texture, before final exportation into an artist’s game engine of choice. Using dithering, artists will also be able to remove artifact or banding issues in their 8-bit exports, ensuring solid normal maps up and down the creation process. “Our goal isn’t just to have the best features, it’s to make sure our users have the best experience – even if that means completely rewriting an engine that has served us well for years,” said Allegorithmic founder and CEO Sebastien Deguy. “Hardware should never be a limiting factor, so Substance Painter helps them do more with less.” The Substance Painter Fall Update also introduces a host of user-requested additions, beginning with an updated Baked Lighting filter, capable of presenting environment maps that are near-perfect copies of a PBR shader. Environmental maps can now be rotated horizontally and vertically, and artists no longer have to manually account for painted details on the normal and height channels. New anisotropic patterns have also been added to help create anisotropic patterns. Additional feature sets include: Viewport Improvements Mipmapping – Textures now use mip-maps to avoid flickering on noisy surfaces. New Anisotropic Shader – New anisotropic highlights can help create realistic hair, satin, brushed metal, and glossy reflections using native Iray support. New Temporal Anti-Aliasing – New anti-aliasing methods ensure smooth edges at all times; automatic smoothing of dithering effects caused by sub-surface scattering or transparency shaders. Updated Clearcoat Shader – Adds control over coating thickness and roughness; Iray parity with new MDL shader automatically applied when selected. Symmetry and Layer Stack Improvements Deactivating Multiple Layers – Multiple layers can be clicked and dragged vertically through a stack; blending modes can be scrolled through by hand or mouse. Enhanced Symmetry Tool – Introduces ability to move the axis freely using a 3D Gizmo or within the Symmetry panel; Symmetry plane now displays as an intersection. Layer Stack UI and UX – New color swatch system allows for easy assignment and differentiation of folders and layers Black Friday/Cyber Monday Deal Allegorithmic will also be participating in Black Friday and Cyber Monday, with a sale aimed at new users. Beginning on Friday, November 23, first-time Substance users will receive a 33-percent discount on annual subscriptions, which includes Substance Painter, Substance Designer, the Substance Source material library and the upcoming AI-powered Substance Alchemist. The discount will last until November 26, making it an ideal gift for friends and family interested in digital design. Pricing/Availability The new update to Substance Painter is available today. Following the 30-day trial period, individual users will be able to subscribe to the Substance Indie or Pro plans. Substance Painter is also available for individual-license purchase, which includes 12 months of maintenance. Excluding the Black Friday deal, Subscriptions to Substance Indie cost $19.90/month; Pro plans cost $99.90/month. Enterprise and education pricing is available upon request. Students and teachers can request a license at no cost.
    41. Hi there, we are still searching for a developer who like to join us and finalize this game with us. No dev here, who is interested to know more ybout our game and have a little bit time to raise his reference list? 😉 Best regards, Cologny
    42. Thank you both! @Septopus @Rutin I feel smarter!
    43. Znippy

      Sprites & backgrounds for 2d platformer

      If you are using Unity (your post is tagged with Unity) and this project is only for the learning experience I would recommend checking out the Unity Asset Store. You should be able to find a lot of great stuff that is free to use. This should also be a lot faster than finding someone who wants to create art assets.
    44. I'm making a 2d platformer game as a learning experience, and I need a character and some backgrounds. The idea is a person on the brink of death "running" through his memories. The background is his memories. This game will make minimal revenue, because it'll be a free mobile game. I'll give you more details if you respond. Thanks.
    45. Balancing gameplay is super hard. I think it is always impossible to make it ideal for every type of gamer. I think the most important thing is to be happy with the gameplay yourself. I think I have worded this badly. I got a subscription and did not buy a license. Kinda sad that you can't actually buy Photoshop anymore since I am usually not a big fan of subscriptions. I tried Krita before and never really got used to it. Not really sure why since I heard from a lot of different people that it is actually a pretty good Photoshop replacement.
    46. CrazyCdn

      collision sprite

      You've been told over and over to stop using GLUT. It was last updated in 1998, 20 years ago. Even FreeGLUT has not been updated in almost 4 years. Even though these forums are quite friendly we all eventually grow tired of beating a dead horse. You often just post code saying you're having a problem. Not what that problem is, what you've tried, what your thoughts the problem might be, etc. Then as @Rutin pointed out, when given advise like he has multiple times in this thread, you just flat out ignore it like you have with his. He actually has given you very sound advise too. If you're unsure what he meant with something, ask specific questions. Also some of your comments seem fairly pointless. You have a comment in one function for collision that says, "//draw bullet" but it's collision detection code, it should not nor does it look like it draws a bullet. It's also just calculating the position of the bullet anyways, so it's a completely useless and misleading comment which might throw you off later down the line.
    47. I feel like I am better understanding this now.. if mouse_check_button_released(mb_left) && position_meeting(mouse_x, mouse_y, id) 'id' is a built in part of Game maker which returns the instance variable... So I'm thinking If I but the code for the switch statement in the towers and use this ^^ and my condition for triggering it in the first place, it will know its own id, then I can devise a method for displaying the information that belongs to this 'id' for this 'switch' perhaps? I'm like an hour away from being to properly test it all now Guna be a fun night 😎😅 I think i'd previously misunderstood the mouse collision as if to say that I'd be checking for any collisions at all but instead yeah I'd looking for collisions with labels!
    48. Tom Sloper

      GIMP vs Adobe

      necro. locking thread.
    49. Yes, i have the same result on AMD, black texture for GL_RGBA_INTEGER/GL_RGBA8UI and uint4 vali = { 255, 0, 0, 255 }; write_imageui(outputImage, coords, vali); Also, I have some AMD forum posts about OpenCL/Vulkan. You should ask about it on AMD even if you have an invalid result on nVidia/Intel.
    50. kseh

      Frogger Challenge - Update #4

      A bit late with this week's update. Last week was spent looking at trying to do some kind of scoring and also working on some changes to the way I have scrolling. For scoring, I went with using a data field in the tiles to set how many points you get for landing on any given tile. Currently, road tiles are 25 points, tiles close to water are 1 point, and everything else is 0. This week, I think I need to work out some kind of high-score thing as well as level progression, lives, and a game over screen. Maybe some kind of improvement to the main menu I have. A few more levels would be a good idea too. I did want to add in another enemy and maybe some logs but I'm a bit concerned about time at this point. I've had complaints in other projects about the way I had scrolling so I've been spending time looking at that. I had it such that you had to approach closer to the edge of the screen before you could see what's on ahead. Which may be fine for the project that it originated in but is rather annoying in anything with an arcade kind of feel to it. I've got a much nicer smoother scroll now. While looking at this improvement, I found that the code doesn't quite do what I was expecting in general so this is an area that I'll be needing to revisit at some point in other projects. It's good to see the submissions that are coming in from everybody so far. I know there's still quite a few days left but I have to admit I'm starting to wonder if I'm further behind than I realize.
  • Advertisement
×

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!