-
Posts
2,600 -
Joined
-
Last visited
Content Type
Blogs
Forums
Store
Gallery
Videos
Downloads
Everything posted by reepblue
-
Sometimes we don't know what we want. 🙃
-
Vec3::Forward() and Vec3::Up() function calls.
reepblue replied to reepblue's topic in Suggestion Box
Maybe, just thought it would make the transition from other engines a lot easier. -
Ultra Engine should include static function calls that contain the following. static const Vec3 Vec3::Up() { return Vec3(0,1,0); } static const Vec3 Vec3::Forward() { return Vec3(0,0,1); } // Maybe this too? static const Vec3 Vec3::Right() { return Vec3(1,0,0); } I was following this math tutorial that was exampled in Unity and thought future users would get stuck when a guide or tutorial called for an Up() or Forward() call with them not knowing what it actually is. (Because I didn't!) Once I was able to figure out what that Vector3.Up actually was with this, I had this working in Leadwerks. This would be a nice thing to have for people coming over from your competitors.
-
There should be an option when exporting that the packager will only zip "used assets" going off what your script loads. Untick this or use an exclude file with 7zip.
-
If the Textfield fontscale is increased this happens.
reepblue replied to Vida Marcell's topic in Bug Reports
Looks like the caret position isn't being updated with the DPI scale. -
-
Whats the best linux distro for 3D development and C/C++ programming?
reepblue replied to Vida Marcell's topic in Linux
I haven't tried setting up a developer environment on it or ran any of the SteamOS tools, but it's not much different from any other Linux install. I'm stuck using GUI apps to do things as I'm not used to arch commands right now. Set up an Ultra App/Engine dev environment last night on my Mint machine using Codelite and I really enjoy it. I feel like a better and cooler programmer when using Linux. 😎 -
Whats the best linux distro for 3D development and C/C++ programming?
reepblue replied to Vida Marcell's topic in Linux
Probably because each distro tries to force their choice onto you so everything falls apart if you don't know what you're doing. That's one thing I like about Debian. It will ask you what desktop environments you want during installation and it all works. -
Whats the best linux distro for 3D development and C/C++ programming?
reepblue replied to Vida Marcell's topic in Linux
Josh, you can install any desktop environment you want in any distribution. Debian is nice because it's one of the slimmest and robust distros you can ever install. However, you are locked into only using FOSS software and drivers out of the box You'll need to configure your system to pull things like media codecs and proprietary drivers. This is not true at all. While you'll not find the latest version of software in the repositories, you're system will get the latest security updates. Ubuntu and Mint wouldn't base their distros of of Debian if it was unsecured. Personally, I keep going back to Linux Mint as a distro I would actually use. Cinnamon looks nice, it's familiar, and any system tool or codecs I'll ever need is installed by default. Sure, my programs will not be up to date, but I never updated Gimp or Blender on my dev machine. And despite thinking it's really cool, I'm not a person who would build and configure a system like you would do with a raw Arch install. I like to run the installer, update the system, and then install software. If you know the basics of how Linux works and used to Windows, I can't recommend Linux Mint enough. The developers also work hard to filter out Ubuntu's bad decisions from the good ones. -
Although I credit Oculus for not making their headsets out of Fisher Price plastic like Valve does, I don't like Meta, and I'm gonna be really sad if I'm ever forced to create an account for testing.
-
Writing unicode to a file without it looking terrible
reepblue replied to reepblue's topic in Programming
These pages were the most helpful. Maybe it's that 0xFEFF byte they talk about? Writing Unicode to a file in C++ - Stack Overflow c++ wofstream issue in unicode program - Stack Overflow Right now, I have a solution working but I need to battle test it still. -
Generic Runtime Error Report upon launching Leadwerks Game.
reepblue replied to reepblue's topic in General Discussion
That's what I ended up doing. -
Writing unicode to a file without it looking terrible
reepblue replied to reepblue's topic in Programming
Here's my logger class, removed the buffer completely. //========= Copyright Reep Softworks, All rights reserved. ============// // // Purpose: // //=====================================================================// #include "pch.h" #include "Logger.h" #include "App.h" #include <fcntl.h> //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CLogger::CLogger(IApp* pApp) { m_vLiveStream.clear(); m_pszFilePath.clear(); m_pApp = NULL; if (pApp != nullptr) { m_pApp = pApp; std::wstring filename = m_pApp->AppName() + L" - " + m_pApp->CurrentDate() + L".log"; m_pszFilePath = m_pApp->AppDataPath() + L"/" + filename; m_OutStream.open(m_pszFilePath, std::ios::out | ios_base::app | ios_base::binary); const std::locale utf8_locale = std::locale(std::locale(), new std::codecvt_utf8<wchar_t>()); m_OutStream.imbue(utf8_locale); #if defined (WINDOWS) _setmode(_fileno(stdout), _O_U16TEXT); // Might be windows exclusive?? #endif if (!m_OutStream.is_open()) { std::wcout << L"Failed to create logger outstream: \"" << m_pszFilePath << "\"" << std::endl; m_pszFilePath.clear(); } } } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CLogger::~CLogger() { m_vLiveStream.clear(); m_pszFilePath.clear(); // Close the stream. WriteOut(); m_pApp = NULL; } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- std::vector<std::wstring> CLogger::GetLiveStream() { return m_vLiveStream; } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CLogger::Log(const std::string& pszMsg, LogType iType) { std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter; std::wstring result = converter.from_bytes(pszMsg); std::wcout << result << std::endl; m_OutStream << result << std::endl; m_vLiveStream.push_back(result); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CLogger::Log(const std::wstring& pszMsg, LogType iType) { #if defined (WINDOWS) std::wcout << pszMsg << std::endl; #else std::cout << pszMsg << std::endl; #endif m_OutStream << pszMsg << std::endl; m_vLiveStream.push_back(pszMsg); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CLogger::WriteOut() { // Close the stream. if (m_OutStream.is_open()) { m_OutStream.flush(); m_OutStream.close(); } } -
I'm currently working on an application with the App Kit but I took time to make my own logging system and I didn't want my log dump file to be trash. Not sure you've figured this out on your end. I ended up storing everything within a vector wstring container, then dumping all of its contents on shutdown. I might make the logging its own smart pointer class, so it'll dump its contents once it goes out of scope. I found it on stackoverflow and it seems to work. //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseApp::Log(const std::string& pszMsg) { std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter; std::wstring result = converter.from_bytes(pszMsg); std::wcout << result << std::endl; m_vLogOutStream.push_back(result); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseApp::Log(const std::wstring& pszMsg) { #if defined (WINDOWS) _setmode(_fileno(stdout), _O_U16TEXT); std::wcout << pszMsg << std::endl; #else std::cout << pszMsg << std::endl; #endif m_vLogOutStream.push_back(pszMsg); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseApp::Shutdown() { if (m_vLogOutStream.size() > 0) { std::wstring filename = AppName() + L" - " + CurrentDate() + L".log"; std::wofstream outstream(filename, std::ios::out | ios_base::app | ios_base::binary); wchar_t buffer1[128]; outstream.rdbuf()->pubsetbuf(buffer1, 128); outstream.put(0xFEFF); for (const auto& input : m_vLogOutStream) { outstream << input << std::endl; } outstream.close(); } } int main(int argc, const char* argv[]) { CBaseApp* app = new CBaseApp(); app->Log("Hello World!"); app->Log(L"AppData Path: " + app->AppDataPath()); app->Log(L"App Path: " + app->AppDirectory()); app->Log(L"Привет! This is awesome."); for (int i = 0; i < 16; i++) { app->Log(L"Тестирование Юникода!"); } app->Log("Back to english."); app->Shutdown(); return 0; } My log file looks like this. Hello World! AppData Path: C:/Users/reepb/AppData/Local/Untitled App App Path: C:/Users/reepb/Documents/Leadwerks/Projects/AddonCreator Привет! This is awesome. Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Тестирование Юникода! Back to english.
-
After sixteen months of week-by-week development, I'm happy to announce that the anticipated spiritual successor of the Portal mod, Blue Portals is now available for sale as an Early Access title on Steam! I want to take a moment to thank [b]everyone[/b] who has played the demo and gave feedback. There's still work to be done! Being an Early Access title allows Cyclone to continue keep players involved in the development process to help it evolve into the best it can be! I hope you're all excited as I am to see where Cyclone will be in the near future! Please enjoy!
-
Where do they get all that speed from?
reepblue replied to havenphillip's topic in General Discussion
I would think this would have to do with VRAM and how much your scene and system is using. -
One thing I missed coming from Source was animated textures. Glad we'll have them in Ultra
-
I got a report on my game in which an end user got a popup telling them "This application has requested the Runtime to terminate it in an unusual way". i.e: Something like this (This is an example image): I've updated my Steamworks to include and install the Visual C++ Redist 2022 (Which includes 2015 - 2019 as well) but they said that didn't fix it. I can't really tell you how much effort they put into trying to fix this, but I thought I should ask about it here. Maybe someone here had the same issue at some point? I've included the installers for both the Redist and OpenAL in my game folder for cases like this. So far, it's only one person, but it might be more when the game releases. Actually a better question - What versions of Visual C++ Redist should we check off in Steam?
-
Crash after file write creates an empty file
reepblue replied to EvilTurtleProductions's topic in Programming
If your game is crashing, you have bigger problems to sort out imo. -
I see the examples are updated to use the module approach, so I assume you got it working. Did you try this on macOS and Linux yet?
-
It seems the edits were done on files that no longer exist.
-