Jump to content
    1. Past hour
    2. EddieK

      Warfront Infinite

    3. Today
    4. WitchLord

      Problem with value type & opAssign

      Your opAssign methods are declared as 'const'. This is why the compiler is not able to use them for assignment. If your vec3 class doesn't really have any pointers or anything else that needs special treatment (which I presume is the case) you may want to register the class as asOBJ_POD which would allow you to skip the registration of the destructor. This should also allow the compiler to do a bitwise copy of the vec3 rather than having to call the opAssign or copy constructor. If you prefer not to use asOBJ_POD for some reason, you may want to register the copy constructor instead, as it would be more efficient when creating temporary copies of a vec3 value than first creating an instance then calling opAssign.
    5. Extendable prototypes are useful - Enemy->Undead->Skeleton for example. Just to not have to write so much. Using combining prototypes may be useful, but also kind of doubles the whole component thing - might well be superfluous. Creating entities from prototypes does not mandate passing parameters to whatever actually creates them. At whatever point you create an entity, you know why and what entity is to be created. You might as well just return one from the factory without passing anything other than the proto-id, and set whatever you need on the returned entity in whatever place requested it. Lets say you populate a dungeon with enemies - that generator-thing knows "right now i wanna place a skelly at X,Y" - so have it request a skeleton and have it set the proper position. If you have serialization for your entities, human readable that is (so you can manually adjust the file), you could just use that for "prototypes". create an "empty" skeleton, save it, and use that when somebody request a fresh skeleton. Another way might be to have prototypes and init-data, prototypes have an init-function that accepts init-data to set up that specific type of entity. So you can decouple specific inits away from the factory to some place more appropriate.
    6. Michael Bell

      How to Create a Mobile Game on the Cheap

      Liked your view, so good and interesting useful information 😁 Thanks a lot!
    7. This week my artist finished working on the new alien type called Fast Alien. After he finished, I spend some time incorporating it into the game, which means that I did some coding and managing animations. After I finished with this new alien, I started implementing the new GUI system. As of now I have finished settings and main menu screens. This is how it looks now: I also started preparing for the release of the game. I signed up for steam direct, sent them my documents, payed the registration fee, got my documents approved and next week I will start populating the steam store page.
    8. Normally I do sympathise with the adage of 'make games, not engines'. However text adventures are a special case, where imo it is actually EASIER to make as a generic data driven 'engine', rather than a bunch of game specific code.
    9. Right that makes sense, i'll definitely work on that. I appreciate all the help! That's fair, by text adventure i meant bare bones console describing the environment to you, typing for where you want to go and what you want to do. I understand i didn't make that clear. I appreciate the point of view. Just hearing the word 'engine' makes me feel a bit out of my depth, haven't even finished many full programs especially on the scale i plan with this one. But i will have to give that ashot as it is the most recommended option here and it seems beneficial to learn it now. Thanks for the help! (Yeah don't really know XML i'm barely scraping the surface of c# lol)
    10. Bregma

      Symbol lookup error on Linux

      Try playing with adding -Wl,--whole-archive to the LDFLAGS when building the bullet DSO. You're only doing partial linking when you're building your plugin, and the linker doesn't see the static object being used outside the library so it gets left behind in the static library. You need to tell the linker to put all of what's in the archive into the dynamic library. Creating shared libraries from static archives is tricky, that's why most build tools are a little goofy when dealing with that.
    11. Esteban5XG

      First time writer here.

      It reminds me of Monkey Island, for example. My advice is to play games like that for a while. They will bring you a lot of ideas to work on it.
    12. Hi, I try to wrap my head around operator behaviour, documentation does not say much for the C++ side, so I guess it should be probably simple but I can't get this to work: # this works vec3 a(1.0f); vec3 b(0.0f); vec3 c = a - b; # this doesn't Transform@ transform = Transform(); vec3 a(1.0f); vec3 c = a - transform.position; (70): No appropriate opAssign method found in 'vec3' for value assignment (70): Previous error occurred while attempting to create a temporary copy of object Transform register: asCHECK(engine->RegisterObjectType("Transform", 0, asOBJ_REF)); asCHECK(engine->RegisterObjectBehaviour("Transform", asBEHAVE_FACTORY, "Transform@ f()", asMETHOD(SpatialWorld, makeTransform), asCALL_THISCALL_ASGLOBAL, this)); asCHECK(engine->RegisterObjectBehaviour("Transform", asBEHAVE_ADDREF, "void f()", asMETHOD(TransformScriptProxy, addRef), asCALL_THISCALL)); asCHECK(engine->RegisterObjectBehaviour("Transform", asBEHAVE_RELEASE, "void f()", asMETHOD(TransformScriptProxy, release), asCALL_THISCALL)); asCHECK(engine->RegisterObjectMethod("Transform", "vec3 get_forward() const", asMETHOD(TransformScriptProxy, getForward), asCALL_THISCALL)); asCHECK(engine->RegisterObjectMethod("Transform", "vec3 get_position() const", asMETHOD(TransformScriptProxy, getPosition), asCALL_THISCALL)); asCHECK(engine->RegisterObjectMethod("Transform", "void set_position(const vec3 &in)", asMETHOD(TransformScriptProxy, setPosition), asCALL_THISCALL)); vec3 register: // Type & behaviours asCHECK(m_engine->RegisterObjectType("vec3", sizeof(glm::vec3), asOBJ_VALUE | asGetTypeTraits<glm::vec3>())); asCHECK(m_engine->RegisterObjectBehaviour("vec3", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(vec3_ConstructorEmpty), asCALL_CDECL_OBJLAST)); asCHECK(m_engine->RegisterObjectBehaviour("vec3", asBEHAVE_CONSTRUCT, "void f(float, float, float)", asFUNCTION(vec3_Constructor), asCALL_CDECL_OBJFIRST)); asCHECK(m_engine->RegisterObjectBehaviour("vec3", asBEHAVE_CONSTRUCT, "void f(float)", asFUNCTION(vec3_ConstructorScalar), asCALL_CDECL_OBJFIRST)); asCHECK(m_engine->RegisterObjectBehaviour("vec3", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(vec3_Destructor), asCALL_CDECL_OBJFIRST)); // Properties asCHECK(m_engine->RegisterObjectProperty("vec3", "float x", asOFFSET(glm::vec3, x))); asCHECK(m_engine->RegisterObjectProperty("vec3", "float y", asOFFSET(glm::vec3, y))); asCHECK(m_engine->RegisterObjectProperty("vec3", "float z", asOFFSET(glm::vec3, z))); // Operators asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3& opAddAssign(const vec3 &in) const", asMETHODPR(glm::vec3, operator+=, (const glm::vec3&), glm::vec3&), asCALL_THISCALL)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3& opMulAssign(const vec3 &in) const", asMETHODPR(glm::vec3, operator*=, (const glm::vec3&), glm::vec3&), asCALL_THISCALL)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3& opAssign(const vec3 &in) const", asMETHODPR(glm::vec3, operator=, (const glm::vec3&), glm::vec3&), asCALL_THISCALL)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3 opAdd(const vec3 &in) const", asFUNCTIONPR(glm::operator+, (const glm::vec3&, const glm::vec3&), glm::vec3), asCALL_CDECL_OBJLAST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3 opSub(const vec3 &in) const", asFUNCTIONPR(glm::operator-, (const glm::vec3&, const glm::vec3&), glm::vec3), asCALL_CDECL_OBJLAST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3 opMul(const vec3 &in) const", asFUNCTIONPR(glm::operator*, (const glm::vec3&, const glm::vec3&), glm::vec3), asCALL_CDECL_OBJLAST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3 opMul_r(float) const", asFUNCTIONPR(glm::operator*, (float, const glm::vec3&), glm::vec3), asCALL_CDECL_OBJLAST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3 opDiv(const vec3 &in) const", asFUNCTIONPR(glm::operator/, (const glm::vec3&, const glm::vec3&), glm::vec3), asCALL_CDECL_OBJLAST)); // Methods asCHECK(m_engine->RegisterObjectMethod("vec3", "float length() const", asFUNCTIONPR(glm::length, (const glm::vec3&), float), asCALL_CDECL_OBJFIRST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "float dot(const vec3& in) const", asFUNCTIONPR(glm::dot, (const glm::vec3&, const glm::vec3&), float), asCALL_CDECL_OBJFIRST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "vec3 normalize() const", asFUNCTIONPR(glm::normalize, (const glm::vec3&), glm::vec3), asCALL_CDECL_OBJFIRST)); asCHECK(m_engine->RegisterObjectMethod("vec3", "string str()", asFUNCTIONPR(glm::to_string, (const glm::vec3&), std::string), asCALL_CDECL_OBJLAST)); Anyone knows what might be wrong here? Also if you spot some obvious inefficiencies please let me know - vec3 is small class (it's glm::vec3) that can be copied and used by value - maybe the problem is that I return a value from Transform::get_position() instead of reference? Or that I registered vec3::opAssign as returning reference, but without it I was having errors with registers and overall breakage...
    13. Find a normalized vector from your object to target. Find projection of its vector to coordinate planes of object's local coordinate system. Now calculate angles betwin of its projections and forward axe . Use a PIDs to turn on orientation trust proportionally to its angles (or ever proportionally to just a projections of target dir vector to other local axes for simplified but much faster approach). It will follow a target point ever in case target point is moving. Say more if you will use a differences of angles calculated on 2 consequtive steps as input of PIDs it will follow a interseption point for moving targets.
    14. Esteban5XG

      any tips for writing a good dark fantasy setting?

      What makes a character so special is all the lore behind it. And so with the enemies. It is my believe that giving the necessary relevance to these characters will make the story greater. Maybe in your case it could be interesting to find out why in this universe the enemies are "the enemies" indeed. Because it sounds amazing when the user does not recognize who is the bad guy in the story.
    15. You are replying to a 6 month old topic
    16. Ed Welch

      MercTactics Poster graphic

      Yeah, I've being busy making the game production quality. I hope to release the final version this year
    17. Really angular velocity is integration of applied torque impulses. So to get a required orientation it required to apply at least 2 consequtive impulses - one to start rotation and other to stop it. On most use-cases it require a proportinal navigation , so PID regulation is better (intendent for its kind of tasks)and simpliest way to implement it.
    18. I didn't expect to, but I managed to do this, albeit only in 2D (box2D in libGDX; shouldn't be a problem to translate into 3D), without a PID controller, just with some boid tutorial. There's some wiggling at the end, but I haven't been able to program a PID controller without it either, quite frankly. Anyway, in the boid tutorial it's just a variation on linear arrival, and I found it pretty straightforward and effective.
    19. GuyWithBeard

      Symbol lookup error on Linux

      I don't doubt the Bullet source code is "correct". I meant I should check if the call in question is surrounded by #ifdefs or something similar which would explain why that one symbol is missing, maybe I am compiling it wrong. I am quite sure my building or linking to Bullet is to blame here... I should also add that I have almost no first-hand experience building for anything other than Windows. Anyway, this will have to wait until my current task is done.
    20. Alberth

      Symbol lookup error on Linux

      Source code is likely correct, you established there is a symbol not resolved that is available in the static library. (You may want to double check the name using the computer, I am at least horrible with finding minor differences between random-ish words.) More likely, there is something wrong in how you link the dynamic library. Some missing option or wrong order of options in the link command. Linking is a complicated activity, with many subtleties, that you can all express in the options. Throwing a number of libraries together, and saying "figure it out" is likely to fail at the level of complexity with mixing dynamic and static libraries. Some first thoughts that I have are that the static library was never even considered to be used, or it was treated as another dynamic library (a dynamic library version alongside the static library perhaps?). Given my level of expertise, I wouldn't be surprised if it was something else though. I have never tried what you're doing, and if I would have to, I'd trust a tool like libtool to do "the right thing", which was written for precisely this kind of jobs.
    21. GuyWithBeard

      Symbol lookup error on Linux

      Yeah, I need to have a look at Bullet's code and see if there is anything related to that one call that could cause this. Thanks!
    22. LorenzoGatti

      Begginer at writting for video games.

      You are probably interested in the large-scale writing needed for dialogue and exposition in some game genres, but there are usually titles, captions, option values, and other humble but important things that need to be expressed clearly and creatively. Some kinds of game design, like tutorials or linear levels, are also very similar to telling a story. I'd focus on developing the stories and worldbuilding a game needs (e.g. what medieval fantasy factions would go to war with zombies vs. domesticated wolves) rather than on figuring out what game could fit your worlds and characters. Related to 2 above: show that you can solve problems. A game about figuring out and/or enjoying an invented language is certainly possible, but it is an unlikely niche that, realistically, you shouldn't pursuit. Maybe invented languages can be featured in mainstream games as untranslated found inscriptions, dialogue between foreign characters, and the like. Your spelling imperfections don't inspire much faith in your translation skills, but in a team you are likely to be the only person able to read documentation and literature in certain languages and write or talk to foreign people, which can be very useful.
    23. Alberth

      Symbol lookup error on Linux

      I conclude from this error that the "happens at compile time" isn't actually happening. The dynamic library shouldn't have unresolved links to the static library. Note that in itself, a dynamic library with unresolved links is not bad. Maybe the program you dynamically link to has that code, or maybe you would load a second dynamic library with that missing code. This is why you don't get a linking error while building the dynamic library. EDIT: You may want to copy/paste the actual link command of the dynamic library being executed in a post here. While I can likely not say anything useful about it, but other people may understand what flag you should add.
    24. GuyWithBeard

      Symbol lookup error on Linux

      I don't quite understand what the problem is. I have a shared object library, libBulletBackend, which links to Bullet which is a static library. This obviously happens at compile and/or link time. Only the shared object library uses Bullet internally. My exe then loads the shared object library at runtime through dlopen() and uses its public API, ie. not Bullet. The so has a class Scene with a method step(), which is called by my exe. The step() method calls Bullet's stepSimulation() method internally. For some reason this results in the following error: symbol lookup error: libBulletBackend.so: undefined symbol: _ZN15CProfileManager5ResetEv I am quite aware that the exe does not link to Bullet, nor do I want it to. What I don't understand is why this lookup fails because Bullet should have been linked to the so already at compile/link time.
    25. Alberth

      Symbol lookup error on Linux

      I considered that question, but ended with the conclusion that it wouldn't matter. A linker only adds code for symbols that you reference, so you must be very lucky, or you must reference the exact functions that you need eg from the game program to force the linker to include it. Even if you did, I am not sure the symbol would be exported for the dynamic library to find. Anyway, dynamic libraries are added at runtime, at which point there is no linking support for adding static libraries anymore, since "static" implies "at compile time". BTW: There is an application to decode the c++ symbols: $ c++filt _ZN15CProfileManager5ResetEv CProfileManager::Reset()
    26. I don't know about your level of programming, but assuming nothing, a key concept that I see missing from the discussion so far is that for a text adventure, you should aim to make something that is 'data driven'. That is, you *can* actually make an adventure game entirely in a standard programming language such as c++ or c#, with each room taking you into a different function that displays the text for the description etc. That is a very valid way to learn some basics of a language, but to make anything bigger than a few rooms you should aim to make your own mini text adventure 'engine'. That is, you should decide upon some data structures to hold rooms, objects, and e.g. decision trees, and make it so this data can be loaded in from files, rather than being hard coded as part of the program. Once the 'story' becomes data, the role of the program becomes to do things like keep track of which room you are in (perhaps an ID?), and when entering a room, display a description of the room (maybe some text that is associated with that room ID), a list of objects in the room (a list joined to the room object?).. your inventory might be a list of objects joined to your player object? You have a choice, you can either cheat and do some research how other text adventures store their data, or as a learning exercise, go in 'blind' and try and figure it out yourself. Having a text file describe a room with an ID, and lists of objects should be fairly simple. Encoding e.g. decision trees as text might be a little more challenging but will help you learn. If you want to get a heads up on what kind of things you might be storing, I'm sure there are plenty of examples, here's one from google: Just to add to this, you don't have to achieve everything in one go. Imo, your first aim should be to store in e.g. a text data file a list of rooms, e.g. <room id="0"> "You are in a comfortable tunnel like hall. To the east there is the round green door." <exit dir="E" room="1"/> </room> <room id="1"> "You are in second room. To the west there is the first room." <exit dir="W" room="0"/> </room> load these into your program, and display the room description and be able navigate around them (you don't have to use XML btw this is just an example).
    27. Hi! Im making 2D games for directx using an old game engine. Typically the user can choose common resolutions (between 1360x768 to 1920x1080) and run in both window and fullscreen mode. I simply show less of the world in lower resolution, and place ui elements such as panels as I can along the borders (doing mostly strategy games so imagine starcraft or age of empires). A better solution would be to render all unto a texture and scale that one down if the user has chosen a lower screen setting. But the quility gets crappy (rendering to 1920x1080 and scale down to 1360x768 for example). I was given the advice to try to render to a much larger texture such as 4k x 4x and scale that down instead. Would that work? How is this normally handled? And wouldnt i get a stretched image that looks bad if the aspect ratio for the setting the player chooses isnt what I had in my original render?
    28. GuyWithBeard

      Symbol lookup error on Linux

      To be clear, I don't reference the static library outside of the shared lib that links to it. That would obviously defeat the purpose of the plugin in the first place.
    29. Alberth

      Symbol lookup error on Linux

      Not much into how libraries work, but referencing a static library from a dynamic library sounds like a problem. A static library is added to the code at compile time, which apparently didn't happen. In other words, your dynamic library should have included the static library already, I think. Something may have gone wrong while linking your dynamic library. As for fixing, I would likely use libtool. CMake may be the least worse solution for cross-platform, but in my experience it's horribly bad both in documentation and in understanding its job.
    30. MMK

      C# Programmer seeking Project

      If you are mostly interested in learning directly from the industry, and have enough passion then check these out: http://wartothecore.com/vacancies/vacancy-intern-unity-3d-developer/ http://wartothecore.com/vacancies/vacancy-intern-designer/
    31. Designing good looking collections of coloured pixels (aka, an image), is not related to a platform at all. At the end of the day you have a .png or so, which can be used at any platform. As such, any software that can produce such a file can be used. Obviously, there are a zillion such software packages. Just pick one that works for you (try a few), and use that.
    32. Exactly. If you write your big adventure now, and you pick the wrong approach at the start, you're in big trouble, as by the time you realize you should have done it differently, it's one big bulk of code. If you do the small experiments, not only write them, but also put them away for a day to a week, and then look at it again when you have plenty of time to study and think about it. How does the code look to you then? (I promise you, it'll be different from when you were just finished writing the code.) Is it good code to you? As a thought experiment, suppose I have this a 100 times larger, would it still be nice? If not, why? How can it be improved to make it nicer at the big scale? Once you decided the new way to do things, repeat the entire exercise. Do this until you think you found the proper approach to your problem. Then try it "for real", and see if you were right. You can also use this approach to try a new thing, or to compare two alternative solutions. The whole point of this small scale coding is that it's not expensive to make mistakes, and you learn a lot from it. Also, coding the solution forces you to do everything, you can't forget some part, or it won't work (A high risk if you just think about it.).
    33. I'll give it a try tomorrow and post back.
    34. Noone? Id like to know your thoughts about game balance, if ship-to-ship combat is too hard, if the quests are working properly for you etc. Or simply how I can make the game more fun! Thank you!
    35. Gnollrunner

      Destroying reference counted objects immediately

      I've never used Angelscript but I have encountered similar problems. The way I usually handle this is to create an interface object between the script and the actual C++ object. Then you have a destroy functions which deletes the C++ object and invalidates the interface object. The interface object is collected in it's own time by the GC.
    36. Rutin

      MercTactics Poster graphic

      Looking forward to it! I haven't seen anything from you since August last year 😮 !
    37. Hello! I'm currently developing a top-down RPG styled game with an Entity Component System architecture and, as the game grows in features, so does my game entities, that is, item models, enemy prototypes, etc. Those definitions are currently in JSON files but at the end of the day I still have long factory classes that read from those files and populate the entities with their respective components and properties in the most naive way. Reading through a presentation about Techniques and Strategies for Data-driven design in Game Development (slides 80–93) (warning: big pdf file) there is this "prototyping approach" where you can build up each game entity from multiple prototypes. I find this really interesting, however, the presentation doesn't mention any implementation details and I'm totally in the dark. I don't know how powerful should this system be. By the way, I'm using Java and LibGDX's engine. My first idea is making a robust prototype-instancing factory where, given a JSON file, it will be able to return an entity populated with its corresponding components. For example: Enemies.json { "skeleton" : { "id" : 0, "components" : { "HealthComponent" : { "totalHealth" : 100 }, "TextureComponent" : { "pathToTexture" : "assets/skeleton.png" } } } } If I wanted to instantiate a Skeleton entity, I would read it's prototype, iterate over it's components and somehow I would instantiate them correctly. With this approach I have the following issues: It will most likely involve using Java Reflection to instance entities from a JSON file. This is a topic that I know little about and will probably end up in dark magic code. Some instances properties can't be prototyped and will have to be passed as parameters to the factory. For example, when creating an enemy entity, an (x, y) position will have to be provided. Suddenly creating instances is not so straight forward. How powerful should this system be? Should it have this "recursive" behavior where you can extend a prototype with an other and so on? This sounds a little bit like dependency injection. Am I reinventing the wheel? Is there anything done already I can make us of? Even though it's still in it's infancy, here is a short demo (under one minute) of my game. Thank you!
    38. One more thing. Your project is using OpenGL 3.3 core but you have no VAO's set. You might get a weird error or nothing drawing without a VAO in 3.3 core. It is very frustrating and I remember cursing when I found the problem after many hours. You need to set a VAO in core profile. Put the following code right before you start calling buffer or attribute calls. Set the VAO once and forget it. Once you get to using VAO's proper, you can delete it. GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao);
    39. You'll find that a lot of suggestions on how to code something better are often simply different ways of doing a very similar thing. For instance it's quite possible to write your entire game using one giant code file with a ton of variables (enums or whatever). That would work and not really be any slower, code wise. Problem is it's horrible to look at, work with and just about everything else. First I would figure out how you want the game to play, what is the interface like? Is it like a MUD or something? Do you type in text commands like "get key"? Is it a bunch of buttons you press in a graphical app? Text based doesn't tell you a lot. You can make a console game and have the interface be vastly different, rogue-likes are a good example of this. Unfortunately it's hard to just suggest a way to code it because as I stated before, there are many different ways of doing the same thing. Some are more generic, some more specific, some work well in certain situations, some in others. Often a difficult part of coding is just deciding what method you want to use to tackle a problem.
    40. Septopus

      Taking the First Step

      1) Pick the language you want to work in. Choose one with a lot of current tutorials. And one that makes some kind of sense to you without spending hours studying it. Then stick with it until you have it DOWN. The lessons you learn well with one language will transfer to almost any other with a little effort and study. 2) Choose the kind of environment you want to work in. Do you prefer working with a simple text editor and a command line(great for web development)? Or do you want a full blown IDE like Visual Studio AND/OR a game engine like Unity or GameMaker/etc... If I had to go about learning programming today the sheer number of options would make me rage quit.. Start with those two aspects, and find your comfort zone.
    41. Rutin

      Taking the First Step

      The most important step is just to pick something and start. It doesn't matter if it's the 'web' approach, Unity, GameMaker, or any other one. I find a lot of new people get lost in all the options available and this can come with a major down side... people can sometimes jump around too much, or always second guess what the "best" tool is. At the end of the day only results matter regardless of the tool used. Pick the tool you'll stick with and adapt as you grow because Game Development in itself is very diverse with endless options.
    42. JaLue2002

      Taking the First Step

      Thanks for all the advice (And by no means stop). I have been watching tutorials online but I needed a direction as to which areas to focus on because their are alot of options.
    43. Septopus

      Taking the First Step

      If you aren't afraid of a few involved setup steps, @Rutin's recommendation is really quite a good place to start too. And probably a little more appropriate for a text game.
    44. Rutin

      Taking the First Step

      Welcome! Absolutely. If you only want it to be 'text' based and maybe a few images, you could look into just making this using HTML/CSS/Javascript with PHP for the database ('online part'). This will help you two fold - game development and web site development as you have an interest in both. I would recommend starting here to learn HTML, CSS, JAVASCRIPT, and PHP with SQL: https://www.w3schools.com/ My suggestion is to incorporate Bootstrap so your layouts are fluid and dynamic: https://getbootstrap.com/ For the Database side of things you can use mysql with phpmyadmin. Many web hosting sites will have this as a standard feature, otherwise you can setup your own. I would suggest setting up a local version anyhow for testing and development. WAMP is something you'll want for this as it contains everything you need to start! http://www.wampserver.com/en/ When using Javascript I would recommend jQuery which is a Javascript library and all that info can be found on w3schools which I linked at the top. If you need some more help let me know!
    45. Septopus

      Taking the First Step

      1) Yes. 2) It all depends on how much you know already. If that isn't at least a little bit of entry level programming, then you will not get very far towards your goal until that has happened. If that is the case, check out c# and Unity. 3) There are TONS of tutorials for the Unity game engine, and some of those start out so basic they don't even require any scripting. I recommend you start there if you are totally new to programming yet want to get your feet wet anyhow. Unity is FREE(for individuals) so don't think you need to buy a bunch of software either. YouTube, search "unity beginner tutorial", this will be the fastest way you will be able to get your feet wet and actually FEEL like you are doing something towards making an actual game. You can try the pure code route, but unless you really really really love code, go with an engine like Unity to start out.
    46. Swartz27

      Ideal rendering engine?

      Thank you so much @Hodgman I truly do appreciate it. I'm currently trying to play catch-up with your post [quote[RTX is just NVidia's marketing buzzword for "supports RTRT APIs" [/quote[ Yeah, I knew this was likely the case. I want to strangle the people at Nvidia (I ask very simple questions once in a while, but since I'm an indie dev I guess I don't matter to them). I'll do both and then map out the results for others in a blog post. I want to say for the record that my understanding of C++ is terrible: HLSL makes a lot more sense to me. Have you taken a look at Unity's upcoming "Scriptable Renderer Pipeline"? I have to admit that it seems impressive (giving the graphics programmer a lot more control, even over the rendering order).
    47. Yesterday
    48. Hodgman

      Ideal rendering engine?

      D3D v Vulkan -- for D3D v GL, I'd go with D3D without hesitation, but D12/VK are pretty much the same as each other. D12 is a bit easier IMHO. RTX is just NVidia's marketing buzzword for "supports RTRT APIs" Metalness + color VS diffuse color + specular color / roughness VS glossiness isn't much of a muchness. They're two ways of encoding the exact same information. You can easily support both (which could be useful if you're sourcing artwork from different places). Cavity maps are an additional feature that work with both encodings in the same way. Super-sampling is just rendering at a higher resolution than the screen. e.g. Draw to a 4k texture and then resize it to 1080p for display on a 1080p screen. Dynamic resolution is the same thing but you pick a different intermediate/working resolution each frame, based on your framerate. Often it's used to under-sample (render at a lower rest than the screen). If money and time aren't an issue, implement them both and see which one performs better on your specific game scenes. I've been working on an indie game in a custom engine mostly-full-time for years, so kind of doing this. Before that, I was working professionally as a graphics programmer on a game engine team, so knew what I wanted -- first and foremost, my new renderer had to be easy for a graphics programmer to work with, easy to experiment with new features, easy to change. No two games that I've worked on have ever used the same renderer, so I knew that switching out algorithms easily had to be easily supported in my ideal renderer. Our game started off as traditional deferred + traditional forward (able to switch between them at runtime), then tiled deferred + tiled forward (able to switch between them at runtime), then clustered forward (only). Other features like shadows (many techniques) , SSAO, reflection probes, SSR, motion blur, planar mirrors / portals, etc, occasionally need to be added or experimented with... So there needs to be enough flexibility to slot these (or techniques that haven't yet been invented) into the pipeline. One of my inspirations for this was Horde3D's data driven rendering pipelines, where you told the engine how to render a scene with an XML file! I managed to convert Horde3D from traditional deferred to Inferred Rendering in a weekend by only writing a little bit of XML and GLSL. That impressed me a lot as a graphics programmer (it was so much nicer than the 'professional' engine I was using at work at the time...) This concept has largely caught on and is commonly referred to now as a "frame graph". Each step of an algorithm/technique is represented as a single input->process->output node, and then a data/configuration/script file uses those nodes to build a graph of instructions on how the frame will be drawn. This makes it very easy to modify the frame rendering algorithms over time my experiment with new features, but, it also allows the engine to perform lots of optimisation when it comes to D3D12 resource transition barriers / VK render passes, render target memory allocation and aliasing, and async compute as well!
    49. Sorry, yes, build-time error. Thank you for doing as I asked, fleabay. Just what I needed, right? Josheir
    50. JaLue2002

      Taking the First Step

      First time poster. New at this whole programming thing and every journey begins with a single step so here is the first step. A little about me. I am someone whose mind is always creating ideas but they usually just end up as a very well thought out wish. With that being said, I've always had an interest in computer programming and website design which leads me to my concern. I have an idea for an online tycoon game. It is text based. Basically, players can sign up and then they can run their own Movie Studio and/or TV network. They can then create their own movies and release them in different ways (theaters, Straight to DVD, etc.) Their would be different options that the players can select and each choice has an effect on cost and quality of their films. Also a box office system and other random happenings. I know that a database is going to be needed to consist of all the data (genres, talent, etc.) I know I am far away from being able to create this and I don't know if anyone will ever play it or not. But I want to do it more or less to prove that I can. But I want it to be functional. I am perfectly fine taking the time to learn the things I need to learn but I have a couple questions. 1)Is it possible to do this? 2)What do I need to learn to make it happen? 3)Where do I start? Thanks for any responses you provide.
    51. Hmm that sounds like a good idea! I'd have some way to identify these. One could be just having a list of the classes that are registered like this (there is limited set of those) and finding all occurences of such class in a object, then releasing it. Or more generic approach with some metainfo like [autoclean] - but first solution may be better considering there won't be a lot of these classes. Thanks, for some reason I haven't thought to use built-in script reflection for this kind of cleanup!
    52. Brizzler

      UWP Indie Game Review

      Hey Everyone, I'd like to review some of your indies games! I'm interested in games made for the Universal Windows Platform (UWP). Reply to this post if your interested in having your games reviewed and youtubed on my channel: UWPdeveloper Cheers, B
    53. Septopus

      Mountain Ranges

      Well, you have the impressive factor on lock down. Truly incredible work so far.
  • 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!