• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

1065 Excellent


About Shaarigan

  • Rank

Personal Information

  • Interests


  • Github
  1. What was the error you achieved here? Normally any .Net class that takes a stream is compatible with any stream so there should be no difference with MemoryStream against FileStream. You might have provided too few data for your in memory image or too few space
  2. Modular 3d Engine Idea Feasability Question

    You need to take a look at basic computer graphics on modern harware. Then you will see that you always need to specify not only the 3D model but also a program running on your graphics chip that tells the GPU how those collections of vertices/texture and normal coords are to be processed to get the completed model. Those programs are the Shaders that are transpiled and translated to something the hardware could understand and work with. It is GLSL in OpenGL, SpirV in Vulkan and HLSL in DX that are the language standards. Those are then passed to a compile function that is part of the vendor specific hardware driver. What most engines do is comming with a previous set of those shaders for some purposes like Diffuse Rendering, Pixel Shading or Alpha for Transparency. Anyone who is experienced (or in the above telled Node Based Editing case anyone) can then modify the render pipeline to achieve whatever effect he or she wants. Make a game in sepia look, just adjust the color channel; make a game in pixel graphics, just use a rasterization shader. Some custom game engines (as mine) have the possibility to graphical change the complete render-pipeline so all you need is the editor tool and no needs for plugins here
  3. Unity Proper use of scriptable objects in unity 2d

    Thats normally the way it works in Unity
  4. C++ Making an UI in c++

    I tend these days to a HTML5 driven UI as pointed out for some more times in this forum. HTML5 has the advantage that changes could be made easily without any tool or grphical editor just by editing the source file, style changes made with CSS keep the (possible compiled) source clean and make look-and-feel changes a thing of just replacing a file. DOM traversel is also very fast (if you implement it fast) and could be very memory efficient. HTML5 has a strict standard as same as CSS so you wont have to invent your own and just take what is already there. There are also articles arround how a web browser does its rendering of the DOM to have an entry point for your UI renderer. While this is for a simple quick-and-dirty project, you could also code anything hard into your software for a more rapid solution
  5. It isnt. We use the same technics in our commercial software to clearly differ for Loca-Ids, Resource-Ids, Manager-Ids ... to have some kind of debugging and error handling inside the code. You cant for example call a loka string from a resource id and this will give your public API a more clear access as a simple numerical id could. The question should be if the code this kind of structure is intended to is sealed or part of a framework (not API, thats a difference). In the sealed way, you have to change the enum while you are in development what is part of code evolution and mostly you are not really able to predict what types your enum will have at the end. Also you will have a finite list of types that run through this id struct in opposite to the public framework case In the public framework case, you might be right but as long as we dont knoe about that, we assume the sealed code case. In dubio pro reo. But I like the traits solution
  6. New questions?

    You could start with learning C++, especially the strict memory modell will help you understanding other languages. It is more easy for some people to go from C++ to C# and for others the other way round, depends on the person. If you want quick success just learn C# first because getting started here is way more comfortable than it is in C++. You basically dont need any game engine to develop for Android as you dont need any game engine to make a game. It is harder to solve and you waiver for a lot of convinience, but it is possible. Developing for Android is much harder. This platform has a wired architecture where any of your apps is running inside a Java VM and is potentially written in Java, at least to startup anything else. There is the NDK you could use for making C++ code run in the Java VM by either call your C++ functions directly or use the Unity 3D way and have a simple startup routine in Java that calls into your C++ startup code. You dont need Android Studio for this per se while Visual Studio C++ 2015 (dont know about 2017) provides an Android project template that creates all the necessary files you need to build an APK file from your source code and run it on Android. They also provide some emulation software you could test and debug your app in first. But I have never worked really with that, just played a little arround so at the end you need to get started on yourself. I would recommend to first learn how to code and later go to such a diffcult platform as Android is. This will help getting a better knowledge of how you debug your code and how you have to write it
  7. Unity Proper use of scriptable objects in unity 2d

    Using ScriptableObject for dynamic entities is the wrong way! We ever have at least two classes that are a special database for our entities (whatever it is, maybe an NPC or a merchant) which is setup on a ScriptableObject and a standard MonoBehavior class for this entity (like Merchant, Goblin, whatever) that is instantiated from the database object to pass all the values to it. Adding Buffs/Debuffs is adding a function to a list of state effects on that entity. This functions are called with the basic value for lets say health or armor on evaluation, so a x1.5 multiplier will depending on its position in that list do UInt16 Evaluate(UInt16 health) { return Mathf.Round((float)health * 1.5f); }
  8. The problem with blind people and (developing) games is that games are mostly something visual that are mostly made of well looking graphics and less for auto reading. The problem is the game genre itself, you can perfectly play a visual novell or text adventure but how do you like to play a platformer or shooter game without any unfaire advantage against seeing people? I think there is only a small to no market for such games and so studios wont make such games or even invest man-power to design alternatives. VR as an evolution in game experience is what makes gaming also more impossible to blind people. The only way I think would be possible to such people to make (and propably play) games is when the editor supports HTML5 and access to the content as main UI system so your reader could tell you the menu structure of the tool but this wont help you placing the visual part like where to put a character model, what character model have I choosen and does it fit into the level geometry, what texture do I add to it and how does it fit onto the modell etc. I hope you understand what the backdraws are
  9. Alternative for an open world

    You could also go for some Super Mario Odyssey kind of terrain that is a sized but open level per world where the bounds are surrounded by emptyness Depending or your level design you could also use high cliff walls (like in the forest level) !WARNING SPOILER This would lead to the feeling of beeing open world with some edge cases. You could describe that with a world that is made from islands (as Spellforce 1 did) connected by some kind of transport (like a portal or Ship) so a player can travel through the world and you have to design just single level maps
  10. C++ Savegame headers?

    Version compatibility is always a topic not just for savegames but also for anything that is serialized/deserialized. A text or property file format could help here so unknown properties will be skipped while new ones will be held empty. The option to have some kind of header in your save files is currently the best one for your situation because a save file is the main entity you need to maintain, when storing metadata, you need to know if a file has moved, was replaced or renamed what may become a huge management overhead while you just want to "simply show some information". On the other hand you then will have file access every time you just want to see what your last save files are so the "database" solution has the advantage of keeping disk access as small as possible. Some games prefer this solution when for example the player has made his own character you would like to show as seen here A middle course solution would be to gather a players save files at startup of the game or as a background task when you are sure your player wont have access to the save game area for a few seconds to generate your meta database at this point from disk until you update it next time
  11. Unreal Memory Allocation

    As it points in the Unreal Docs bool GetRaw ( const ERGBFormat::Type InFormat, int32 InBitDepth, const TArray < uint8 > *& OutRawData ) your passed array is an out parameter so this function is creating a new array on every call and that slowly leads to a memory overflow. You should call the destructor when you are done with the uncompressed image or better find a way to handle the same memory on every call so you wont need to do a costly reallocation of new memory blocks. These memory reallocation is what makes your app slow during runtime and leads to the crashes after some time. Garbage collection is also a very slow operation because Unreal Engine needs to find all unused resources in memory and give them back to the OS (I dont know how they manage memory but I think they use some kind of memory block management to prevent memory fragmentation)
  12. Idiot friendly point & click engine

    It was very often in Steam and other sales bundles this year and they gave out free keys for a year license so you might keep an eye on store sales
  13. Yes Unity uses polling as its primary input request method. It means you explicitely query for input in your update loops like using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public void Update() { if (Input.GetButtonDown("Fire1")) { Debug.Log(Input.mousePosition); } } } as to what they write in there docs. But as I wrote above with Rewired you get some event based input (you still need to handle when your game loop has priority to run) Best way would be to try to run your own thing if (and only if) your input latency is higher than between 28 ms and 14 ms. I use a global message queue in my custom engine that has an input latency of an avarage of a few milliseconds where an OS message is processed using HID API and immediatly pushing the result into the writing end of the event queue
  14. OpenCL/Cuda is mostly used to make physics computation faster for the drawback of consuming some GPU power. It has some advantage in heavy computing situations but a good designed and tested game loop (for example in a multithreaded task based environment) does the job as well without OpenCL/Cuda
  15. Idiot friendly point & click engine

    What you need is less an engine but more a story design tool like Articy that is fully capable of what you are trying to achieve here. They already have a 2D point n' click demo project you could download to see how it is made and how it works either in there own software, in Unity or Unreal
  • Advertisement