Robot Defenders

Very often, during discussions about the correct operation of some software feature, I encounter a situation where the functionality from the user’s side looked strange, illogical. The discussion with the product owner looked something like this:

–There is clearly a behavioral problem here
– Well, we’ll release it and when users start complaining, then we’ll fix it
– ??? Well ok…

It seems to be a working scheme, right? A fairly optimal algorithm for teams with a small budget, tight deadlines, insufficient research/lack of UI/UX specialist. Users will complain if anything, no big deal.
A Google search shows that the source of this method comes from the article – “Complaint-Driven Development” by Coding Horror

Once I was punching products, including a bologna sausage for 300 rubles, through a terminal in a supermarket, I left the store with this sausage, fully confident that it was paid for – the terminal offered not to print a receipt and I agreed, so as not to waste precious paper on this receipt. During the process of “punching” the product for each product, the terminal beeped, which signals that everything worked correctly. Plus, with an audible notification, the terminal winked with the backlight from the barcode scanner.

The next day I went to the supermarket for groceries again, scanned the products through the terminal. At the exit I was met by a man of southern appearance with a thick beard, holding out his smartphone he said – “Is that you on camera?”, I looked at his phone and saw myself in a Melodic-Death-Metal T-shirt of the band Arch Enemy with skulls and all that, there was no reason to doubt.
“Yes, it’s me, what’s the matter?” the man, squinting very hard, said “You didn’t get the sausage yesterday” – wow

After a short clarification of who he was and how he made these conclusions, he showed me a video hanging on the ceiling of the store, in the video I punch a sausage, the terminal blinks with the backlight from the scanner, I put the sausage in the bag.

– The video shows how the scanner worked
– You haven’t worked anything, pay for the sausage!

Slightly taken aback by this attitude, I demanded a complaint book to write that the terminal needs software improvements, since it gives all the signs of correct operation, but in fact it simply glitches, without signaling about it on the screen.

After 10 minutes of bickering with him and his boss, who immediately came running to defend his employee and the poorly working terminal, they decided to call the administrator’s girl so that she would bring the complaint book and punch in the doctor’s sausage.

That day I realized how difficult it is for users to complain about hardware and software products, and that the mantra “people will complain – we’ll fix it” most likely works very poorly. The main reason is people who defend broken robots, broken software solutions, for simplicity I propose to introduce new terms – Defender of a Broken Robot and Defender of Broken Systems.

Ordinary users cannot complain about the malfunctioning of terminals because they are bothered by Zasroshniki, who for some reason become attached and start to love the machines they work with, perhaps considering them some kind of animate entities, forgetting that there is nothing alive there.

A similar situation occurs with ZaSS people, these people can foam at the mouth to defend some stupid shortcomings in frameworks, programming languages ​​or any other software product, despite complaints from users and other developers.
A typical conversation with a ZaSSshnik is as follows:

– Here’s something that doesn’t work, according to the documentation everything seems to be correct
– Ah, so you haven’t read that manual from 2005, where at the bottom in small letters it says that you need to add PROGRAM_START:6969
– ??? uh

Such people may not understand how they themselves contribute to the spread of problems, errors, loss of time and money for themselves and others. Because of them, everyone suffers, because digital transformation is impossible if the non-obvious, problems of software and hardware solutions are hushed up.
I know about the recent story of the Horizon bug in the British Post Office software, which has been driving people into debt, ruining marriages and lives for decades. It all happened because people kept silent about the software problems, thereby “protecting” it.

Friends, don’t be ZaSRoshniks and ZaSSoshniks, treat the tools you work with with a grain of salt, otherwise you are in danger of being totally enslaved by crappy, broken systems, like hostages in the new digital world of the future. For those who can’t – at least don’t interfere with other people trying to pay attention to non-working, interfering software/hardware, because the developers of these products agreed – “When users start complaining, then we’ll fix it”

Sources
https://blog.codinghorror.com/complaint-driven-development/< /a>
https://habr.com/ru/articles/554404/< br />
https://en.wikipedia.org/wiki/British_Post_Office_scandal

Building bgfx Emscripten application

In this note I will describe a way to build bgfx applications for the web (WebAssembly) via Emscripten.

The installation platform is Linux x86-64, such as Arch Linux.

First, install Emscripten version 3.1.51, otherwise you won’t succeed, all because of the change in the type of dynamic libraries in the latest version of Emscripten. You can read more here:
https://github.com/bkaradzic/bgfx/discussions/3266

It’s done like this:


git clone https://github.com/emscripten-core/emsdk.git



cd emsdk



./emsdk install 3.1.51



./emsdk activate 3.1.51



source ./emsdk_env.sh



Let’s assemble bgfx for WebAssembly – Emscripten:


mkdir bgfx-build-test



cd bgfx-build-test



git clone https://github.com/bkaradzic/bx.git



git clone https://github.com/bkaradzic/bimg.git



git clone https://github.com/bkaradzic/bgfx.git



cd bgfx



emmake make wasm-debug



As a result, in the .build folder you will have bitcode files with the .bc extension, which you will need to link with your bgfx application.
There should be bgfx.bc, bx.bc, bimg.bc; different builds have different names for these files, depending on the build type (release/debug)

Add a link to .bc files to the CMakeLists.txt file, for example, absolute paths to files from the bgfx-experiments project:


target_link_libraries(${PROJECT_NAME} SDL2 GL /home/demensdeum_stream/Sources/bgfx-build/bgfx/.build/wasm/bin/bgfxDebug.bc /home/demensdeum_stream/Sources/bgfx-build/bgfx/.build/wasm/bin/bxDebug.bc /home/demensdeum_stream/Sources/bgfx-build/bgfx/.build/wasm/bin/bimgDebug.bc)



Now change the native window handle in platform data on bgfx initialization:


bgfx::PlatformData platformData{};



platformData.context = NULL;



platformData.backBuffer = NULL;



platformData.backBufferDS = NULL;



platformData.nwh = (void*)"#canvas";



You also need to change the render type to OpenGL:


bgfx::Init init;



init.type = bgfx::RendererType::OpenGL;







init.resolution.width = screenWidth;



init.resolution.height = screenHeight;



init.resolution.reset = BGFX_RESET_VSYNC;



init.platformData = platformData;







if (!bgfx::init(init))



{



    throw std::runtime_error("Failed to initialize bgfx");



}



Recompile GLSL shaders for 120:


shaderc -f "VertexShader.vs" -o "VertexShader.glsl" --type "v" -p "120"



shaderc -f "FragmentShader.fs" -o "FragmentShader.glsl" --type "f" -p "120"



Of course, .glsl files need to be added to CMakeLists.txt as –preload-file:


set(CMAKE_CXX_FLAGS ... <Остальная часть>



--preload-file VertexShader.glsl \



--preload-file FragmentShader.glsl \



All that’s left is to replace the main render loop in your app with while and call the function via emscripten_set_main_loop.

You can read about it here:
https ://demensdeum.com/blog/ru/2017/03/29/porting-sdl-c-game-to-html5-emscripten/

Then build your Emscripten project as usual, everything should work.
Interestingly – it seems that the Emscripten 3.1.51 build lacks OpenAL (or maybe it’s just me).

Source code of the project that builds correctly with bgfx and Emscripten:
https://github.com/demensdeum/ bgfx-experiments/tree/main/2-emscripten-build

Sources

https://github.com/bkaradzic/bgfx/discussions/3266
https://bkaradzic.github.io/bgfx/build.html
https://emscripten.org/docs/getting_started/downloads.html
https ://demensdeum.com/blog/ru/2017/03/29/porting-sdl-c-game-to-html5-emscripten/
https://llvm.org/docs/BitCodeFormat.html

Death-Mask is open source

From today the game Death-Mask goes into open access – you can follow the progress of the game implementation at the link: (Wow!)
[Death-Mask Wild]

Currently version – 0.1 contains basic arrow controls, wsad, map generation, items (including death mask!), rendering.
There’s still a lot of work to do, and I’m really interested in your feedback – so feel free to leave comments on the wild version page.
In the final version, the game ends after the player finds the item – the Death-Mask
Enjoy the test 🙂

Авторы ресурсов

Is it possible?

Question: “Can I copy the game Demon’s Cave to my website, or blog, or my page between the cute kittens and Coelho/Statham quotes?”
No, I forbid it personally. Just kidding, not personally. Just copy and paste the HTML code:

<iframe width="640" height="384"
src= "https://mocha2005.mochahost.com/~demens/games/demonsCave/"></iframe>

Link to jsfiddle with example: https://jsfiddle.net/ovL04dqL/3/< /p>

Question: “I want to put Demon’s Cave on my ad page, is that possible?”
Yes, you can do anything.

Question: “I want to sell the game Demon’s Cave, is that possible?”
You can do whatever you want with the fsagamelibrary.js game engine, just leave a link to demensdeum.com
But graphics and music must either be purchased (the paid ones), or used by yourself. More detailed list of resources here.
If you don’t leave a link to the main site, then the demon will come into your dreams.

Question: “I want to make a mod of the game Demon’s Cave, or even make it in 3D on Unity, can I send you the link later?”
Of course. Throw vk.

Page with the indication of the authors of the resources, listing of licenses demensdeum.com/games/demonsCave/info.html

Demens Deum Manifesto

Demens Deum MiniGames Logo

Demens Deum – a team of indie developers, we create new interesting things, be it games, programs, music, comics. There are very few teams in the world now ready to experiment with ideas, technologies, and implementation. Our manifesto – down with the usual framework of genres, down with gray stamped hits – let’s hit the brain of the average person with an experiment, original universes, exciting stories, excite the hearts of those who thirst!