Jump to content
  • Advertisement

Search the Community

Showing results for tags 'General'.

The search index is currently processing. Current results may not be complete.


More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Game Dev Loadout
  • Game Dev Unchained

Categories

  • Game Developers Conference
    • GDC 2017
    • GDC 2018
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Art Critique and Feedback
  • Community
    • GameDev Challenges
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Topical
    • Virtual and Augmented Reality
    • News
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical
  • GameDev Challenges's Topics
  • For Beginners's Forum
  • Unreal Engine Users's Unreal Engine Group Forum
  • Unity Developers's Forum
  • Unity Developers's Asset Share

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Role


Twitter


Github


Twitch


Steam

Found 283 results

  1. Hello everyone! I've decided to implement a destructible enemies system. Description: When bullet hit enemy in specific part of his body(arm fo example) armour, which covers that part of body, will fall off. Enemies in my game are robots so this means that when shooting them certain plates of their armour will fall off. All enemies will have a different amount of armour plates My solution: The only solution I came up with is to make an actor with a static mesh and attach it to the bones of enemy's skeletal mesh. When bullet hit that actor it detaches and fly away with add impulse node. Question: Maybe there is a better solution, which I'm missing and it's more efficient.
  2. This article was originally posted on LocalizeDirect's blog Ever thought about expanding your game to the MENA region but not sure where to start? Try Turkey first. It’s very much a mix of East and West, it is also the most developed games market and the video game centre of MENA. Previously Turkey attracted mostly Asian publishers, now, Western companies include it in their expansion plans too. KEY TAKEAWAYS: Turkey is the most developed games market in MENA and #18 in the world. Console and PC games generate slightly more revenue than mobile games. Localization to Turkey requires human input and QA due to numerous suffixes as strings with placeholders should be completely paraphrased (and, surprise, machines are still bad at doing that). What’s covered? Turks are fond of games. Why? We have a few interesting numbers Who is targeting Turkey? The most popular game genres Why are successful games in Turkey all localized? 9 best game localization approaches for the Turkish market How to make a foreign game #1 in Turkey Turkey is a 30 million strong gamers market, full of young gamers (this is more than the total population of many European countries!) Last year, Turkish gamers generated over $850 million in game revenue. This translated into the ranking they occupied in the top 20 most lucrative games markers globally. In 2019, Turkish online games revenues are predicted to grow at 8%, and mobile games are expected to bring 9% more revenue than in 2018. Image source Fun fact: Turkish gamers spend 70% of their time on PC, ranking 3rd after only Poland and Russia. In 2018, PC/Console games generated more revenue than mobile games. Why so? #1 Internet cafes. There are more than 20,000 cyber cafes in Turkey which are visited by 7.5 million gamers every month. This means that even those players who do not have cutting-edge technology at home, can still play complex video games elsewhere. #2 Over the last year, computer games became more affordable due to the numerous promotions on digital gaming platforms like Steam. No wonder Turkey has been called “the video game centre of the MENA region”. Some game brands that target Turkey Thanks to mobile gaming, the gamer user base grew considerably in just a few years. There are 50 million smartphone users in the country, and after the arrival of the popular “Angry Birds,” “Candy Crush” and “Fruit Ninja” games, more and more people started playing mobile games. In 2018, the popularity of video games, PlayerUnknown’s Battlegrounds and Fortnite, boosted the interest in both mobile and online games. Nintendo re-entered Turkey with the Nintendo Switch in 2018 after an absence of many years. Epic Games, Riot Games, Zynga, Netmarble and a number of other game brands have Turkey in their portfolios. What are the most popular game genres in Turkey? According to Gaming in Turkey , Turkish gamers prefer MOBA, strategy, RPG, casual, and esports game genres. Many were attracted by the “Grand Theft Auto” series and easily turned into fans afterwards. If you developed a mobile board game, definitely localize it into Turkish - almost half of all mobile sessions are related to this game genre. Image source Turkish gamers prefer free-to-play games, based on the “micro-transaction” model, when gamers play for free but pay to upgrade their accounts. Competition is an important part of gaming habits too: Turkish gamers love features like “player versus player”. Also, the content and game rules should be accessible and easy to learn. Successful games in Turkey are all localized 80% of the Turkish population don’t speak any other language but Turkish. This means - game localization is a must if you want to win over your target gaming audience. Localizing your game into the Turkish market is easier than into any of the Arabic-speaking countries. Unlike right-to-left Arabic, Turkey in written from left to right which makes it easier from the perspective of UI/UX design. However, there are some Turkish-specific characters. For instance, there are 4 i’s in the Turkish language: dotted and dotless. While the uppercase for ‘i’ in English is I, in Turkish it’s dotted İ. Some Latin characters aren’t used at all. Best game localization practices for the Turkish market Follow the recommendations of our Turkish translators on what to pay attention to in your translation process to ensure top-notch localization, whether it’s a mobile, PC or console game. #1 - Mind language length Cagdas Mandali: “In Turkish, there are many verbs that are made of one noun and one auxiliary verb. Such as, “Accept” is a noun in Turkish when translated alone (Kabul). You make it a verb by adding an auxiliary verb, and it has to become “Kabul Et”. This applies to many other buttons, such as deposit, withdraw, help, continue… The list is long.” #2 - Take suffixes seriously in the placeholders Turkish is the language of suffixes. And if in the regular translations the linguists can customize it accordingly, when it comes to the text with placeholders, it’s a real challenge for translators. Cagdas Mandali: “Say, our text is “Send Energy to {player_name}“. It is clear that the placeholder will be replaced by another player’s name. But, in Turkish, any name will have a different suffix. Depending on the letter used in the last syllable, the suffixes are conjugated as a back vowel or a front vowel. Then, we have an issue of blending letters. “To Rodrigo” is translated as “Rodrigo’ya”, and “To Elly” is translated as “Elly’ye”. “Michael’s” is translated as “Michael’ın” while “Slava’s” is translated as “Slava’nın” (extra “n” is added when the name ends with a vowel). Since there is no legit way of finding a one size fits all translation, we localize it as “Send Energy to the player whose name is {player_name}” or “X that belongs to the player named {player_name}“. Unfortunately, the only solution is to define different placeholder suffixes and also placeholders for last syllables of all nouns, which is almost impossible as long as clients send us only unified placeholder texts.” #3 - Link your game to the local culture References to the local celebrities and jokes will be appreciated although don’t overdo culturalization. If gamers are playing a game featuring Italian mafia, no need to turn it into Turkish gangsters. Collaboration with local celebrities can be also useful. When localizing its F2P title “League of Legends”, Riot Games hired Turkish celebrities as voice actors. It paid off: the game became super popular and attracted thousands Turkish gamers to the Internet cafes to play LoL. #4 - Adjust formatting to the Turkish locale If your original game was developed in the US or for the US audience, change dates, time, decimal separators, currency. Remember The Witcher 3 by CD Projekt that took the hit by localizing the price? Some basic rules: a) Date format: DD.MM.YYYY Example: 17.12.2020 for 12.17.2020 in the US b) Time format: HH:MM[:SS] Ex: 20:00 for 08:00 pm, and 08:00 for 08:00 am c) Numeric format: 999.999,99 with comma as decimal separator and period as a grouping character. Currency symbol positioned after number. Example: 123.455,25₺ vs $123,455.25 Ali Yucel: “We put the percentage sign before the number rather than after it. We don’t use single quotation marks unless it’s a quote within a quote. And our rules for using commas are quite different from that of English.” #5 - Allow mistakes and international words if needed In some cases, the street version of the language would be preferred over the academic one. Plus, many international words became an indispensable part of Turkish daily vocabulary. So to say, there is no need to translate sushi as the “Japanese raw fish dish” - sushi is sushi, full stop. Cagdas Mandali: “One game that I localized features kids - uneducated, rude, swearing all the time. I translated their dialogues in the same manner as Turkish street kids would talk, without attention to grammar, misspelling some words. However, the developers decided to go with the “proofed and corrected” version of the text where those kids were talking like ladies and barons. Luckily, after the texts went online, the developers consulted a 3rd party, and decided to change the already live texts for the “street version.” #6 - Evaluate your in-game content for the sensitive element Religion (Islam) can become a sensitive issue, but there’s always a work-around. Casino games are banned in Turkey although no other games with microtransactions or in-game purchases are at risk. As in many other countries, ultra violent games or those that “undermine” Islam find themselves on shaky ground, especially if they target a young audience. #7 - Translate tutorials and guidelines Turks have trouble finding tutorials or walkthroughs in Turkish. If they don’t understand sophisticated games such as World of Warcraft, they quit. League of Legends gained a lot of popularity after it was localized into Turkish and it still has a HUGE community in Turkey (over 13 million active accounts). Ali Yucel: “To give an example, even at the height of WoW, all non-English speaking Turkish gamers preferred Knight Online over it, because it was very simple, and it didn’t require much knowledge of English. It was simply a hack and slash MMO. Yet, there were thousands of Turkish websites, forums and blogs dedicated to Knight Online.” #8 - QA game after localization Allow Turkish translators and native-speaking testers to PLAY the game to spot any inconsistencies and errors. Usually, professional game translation services have proofreading as part of their localization process, without LQA, they track grammar mistakes rather than language-related issues. Ali Yucel: “Many publishers/developers will pay for the QA of the translations, but not for actually playing the game and making note of the issues there. Professional publishers pay for at least 5 hours of play time, with developer access, and that solves a lot of problems. Sometimes, even the same sentences/expressions will need to be translated differently depending on the context. You cannot always catch that by simply looking at the Excel or MemoQ screen. At least that’s the case in Turkish.” Game localization costs into Turkish start from $0.15/word while Turkish game testing - at €30/hour. #9 - Translate ads and marketing materials Ali Yucel: “I keep seeing Instagram and Facebook ads that were translated very badly. That’s a huge turn off. Even a single line can make a bad impression. It has to sound right, and that’s impossible with literal translation.” How to market your game in Turkey? Now, after you’ve localized your in- and out-game text, how are you going to promote it? As games are entertainment products, they should be marketed like movies or concerts. You’ll need a media plan and, probably, cooperation with a local marketing agency. Influencer marketing, Google and Facebook ads are key if you want to get installs and reach a younger audience. Traditional media can be of use too. For instance, to promote its game Paramanya/Travelling Millionaire - a fully localized version of Modoo Marble, South Korean mobile game company Netmarble shared a fake news story about a mysterious man spreading money all around Istanbul, and involved fake anchors to report on it. Screenshot of one of the fake reports. Source: Youtube The campaign went viral and even made its way to a popular TV show when the truth was revealed. As a result, Paramanya became the top grossing game in Turkey (and later in Saudi Arabia). Make Turkish gamers discover your game now and book your spot at the top of the MENA region. Contact us to discuss Turkish localization services, your title potential or play with the game translation tool to get the quote estimates for MENA localization.
  3. In the 5th PixelCast, Jeremy shares some fond memories of Castlevania IV now that it's October and Halloween gaming is on. Jeremy also dives into the news and covers an issue that's been on his heart and mind lately; the increasing number of game developers who seem to be passing away in their 40's and 50's.
  4. In the 5th PixelCast, Jeremy shares some fond memories of Castlevania IV now that it's October and Halloween gaming is on. Jeremy also dives into the news and covers an issue that's been on his heart and mind lately; the increasing number of game developers who seem to be passing away in their 40's and 50's. View full story
  5. Our studio is looking for a social media person. Someone who will deal with our Facebook, Twitter, Discord etc. What is something we should look for in a person that would be doing that job?
  6. Hello, I have a few problems trying to run the samples from the book "Programming a Multiplayer FPS in DirectX". I have directx 9.0c installed and use windows 10. I can run the sample project 7 and the projects from chapter 2 - 5, but have problems with projects 6 and 7 - 10. After I compile any of those and click on the according exe files in the debug folder they close immediately after the initial dialog. Furthermore, I get the following error, when trying to compile the last 2 projects: "The value of ESP was not properly saved across a function call". I greatly appreciate any help!
  7. JeremyAlessi

    PixelCast 2

    In episode #2, Jeremy adds some formatting by covering the news, reflecting on the inspiration for PixelFest, and delving into an important developer lesson; that period of time everyone faces when they have to decide whether to play a game or make a game with their time. https://youtu.be/fvaG_pIIUYM
  8. JeremyAlessi

    PixelCast 2

    In episode #2, Jeremy adds some formatting by covering the news, reflecting on the inspiration for PixelFest, and delving into an important developer lesson; that period of time everyone faces when they have to decide whether to play a game or make a game with their time. https://youtu.be/fvaG_pIIUYM View full story
  9. TheFever716

    Solid Dell PC Currently on Sale

    Via PC Gamer, the G5 Gaming Desktop is on sale for $813.99. It comes packed with a Nvidia GeForce GTX 1660, 6-core/12-thread Intel Core i5-9400 processor, a 360W PSU, 8GB of DDR4 RAM, a 1TB 7200 RPM hard drive, a Qualcomm SW1810 Wi-Fi and Bluetooth 4.2 wireless card. You can check out the PC for yourself here.
  10. TheFever716

    Solid Dell PC Currently on Sale

    Via PC Gamer, the G5 Gaming Desktop is on sale for $813.99. It comes packed with a Nvidia GeForce GTX 1660, 6-core/12-thread Intel Core i5-9400 processor, a 360W PSU, 8GB of DDR4 RAM, a 1TB 7200 RPM hard drive, a Qualcomm SW1810 Wi-Fi and Bluetooth 4.2 wireless card. You can check out the PC for yourself here. View full story
  11. I just had a thought, and I don't know how I feel about it ethically. Right, so imagine a free game. Good game, you play the game, it's a fun game. But, you can buy DLC. We'll say there are 4 expansion packs (picture Blood and Wine, Hearts of Stone, etc). In each of these is a thing you can find, like a secret key. If you get all 4 keys, then you can unlock a secret expansion pack. And it wouldn't be advertised anywhere. It would be a total secret (until the internet grabs a hold of it of course). Kind of acts as a little gift to the people who supported the game from the original through all the DLC. Naturally I can see people getting mad at it, but I feel like this would be a pretty cool thing to do. What do you guys think?
  12. Hi anybody using Spine in Unity ? Actually I am facing a problem with latest plugin of Spine, When I use the spine and import it in Unity it says "InvalidCastException : Specified cast is not valid. Error reading Skeleton Json file. " so can you give me an idea how to solve it ? As I am having too many files for the spine, I can not export it from older version of Spine. I have to use the newer version of the spine . So please help me with the Binary files and Skeleton json file to use it properly. Thanks, Gaurang
  13. Hello guys, I have a question about programming gameplay mechanics ( the game engine used is irrelevant). When building a game, let's say an fps, Which approach should you use to get the most efficient results. 1) Build the basic mechanic first e.g A gun that can damage the ai. Then add from there. Or 2) Build the properties separately to a game worthy state, build the gun, the reload, the ammo, the animations, build the ai enemies, build their animations, their weapons, then link both at the ending. I have a team, but this is assuming you are a solo dev. Expecting replies.
  14. I am looking for people to take a look at my Logging class and see if there are any things structure wise or anything else they would do different. I have 3 basic approaches... 1. Log is a singleton class. You can get the instance by calling "getInstance()". 2. Log is mainly manipulated by using operator<<. You can put in numbers, strings, objects that are loggable, LogLevels and LogOptions. LogOptions put predefined Input into the Log (e.g. Stacktrace) , perform predefined actions (e.g. write log to file) or put the Log into states in which it expects certain types of input (e.g. name of logfile). 3. The entire Log is stored in a single std::string. /* Example usage of Log.h Appends a LogEntry to the Log with Warning LogLevel, a Timestamp, the message "This is a warning!" and a Stacktrace. This LogEntry is printed to console and written to the default logfile "stdlog.txt". */ Log::getInstance() << LogOption::PTC << LogLevel::WARNING << LogOption::TIMESTAMP << "This is a warning!" << LogOption::STACKTRACE << LogOption::END << LogOption::WTF; // This is the console output from main function executed in Visual Studio 2019 /* WARNING | Wed Aug 7 13:40:09 2019 | This is a warning! 0# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::frame> >::init at C:\Programming\Libraries\boost_1_70_0\boost\stacktrace\stacktrace.hpp:75 1# ProjectSpace::Log::operator<< at C:\Programming\Projekte\ProjectSpace\src\header\Log.h:176 2# main at C:\Programming\Projekte\ProjectSpace\src\main.cpp:122 3# __scrt_common_main_seh at d:\agent\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288 4# BaseThreadInitThunk in KERNEL32 5# RtlUserThreadStart in ntdll*/ // Log.h #pragma once #include <string> #include <ctime> #include <iostream> #include <fstream> #include <algorithm> #include <boost/stacktrace.hpp> #include "Logable.h" /* _CRT_SECURE_NO_WARNINGS is defined because of C's Time functions. https://docs.microsoft.com/de-de/cpp/c-runtime-library/security-features-in-the-crt?view=vs-2019 TODO: Seperate Thread for Logging ? TODO: Write to file in destructor ? Possible IO-Exceptions. TODO: Serialize Log Object ? */ namespace ProjectSpace { enum class LogLevel { STATUS, // Mark LogEntry as a Status LogEntry. Status LogEntries exist for general logging. Low priority. WARNING, // Mark LogEntry as Warning LogEntry. Warning LogEntries exist for issues that don't break the program, but should be looked at. Mid Priority. ERR // Mark LogEntry as Error LogEntry. Error LogEntries exist for issues that break the program and need to be looked at immediately. High priority. }; using ll = LogLevel; enum class LogOption { ENABLE, // Enable all Logging functionality. DISABLE, // Disable all Logging functionality(After disabling, LogOption::ENABLE and LogOption::DISABLE are still processed.) STACKTRACE, // Append Stacktrace to LogEntry. TIMESTAMP, // Append Timestamp to LogEntry. PTC, // Print next LogEntry to console. End of LogEntry is signaled with LogOption::END. END, // Signal end of LogEntry. WTF, // Write Log(Set of all LogEntries) to the LogFile. APPEND, // Append to existing file contents on LogOption::WTF(Write to file). OVERWRITE, // Overwrite existing file contents on LogOption::WTF(Write to file). FILENAME, // Set Logfile name(i.e. Path to Logfile). RESET, // Reset the Log to it's initial state(Remove all LogEntries and reset variables to their initial state.) CLEAR, // Remove all LogEntries. EXIT // Write log to file/Save log then exit the program. For situations when it doesn't make sense to keep the program running. }; using lo = LogOption; class Log { public: static Log& getInstance() { /* Memory for singleton is only allocated on the first call of getInstance(). * singleton is avaible for every subsequent call of getInstance(). */ static Log singleton; return singleton; } // Mache es unmöglich den Kopierkonstruktor aufzurufen. Log(Log const&) = delete; // Mache es unmöglich den Zuweisungsoperator aufzurufen. void operator=(Log const&) = delete; /* Appends a LogEntry with a timestamp, stacktrace, the given message and loglevel and prints it to the console. */ void defaultLog(std::string const& message, LogLevel logLevel) { *this << lo::PTC << logLevel << lo::TIMESTAMP << message << lo::STACKTRACE << lo::END; } // Only allow numeric types. template< typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type> Log& operator<<(T const& t) { if (disabled) { return *this; } std::string temp = std::to_string(t); if (printNextEntryToConsole) { tempLogEntry.append(temp); } logString.append(temp); return *this; } Log& operator<<(Logable const& l) { if (disabled) { return *this; } std::string temp = l.toString(); if (printNextEntryToConsole) { tempLogEntry.append(temp); } logString.append(temp); return *this; } Log& operator<<(std::string const& s) { if (disabled) { return *this; } if (setFilename) { logFileName = s; setFilename = false; } else { if (printNextEntryToConsole) { tempLogEntry.append(s); } logString.append(s); } return *this; } Log& operator<<(LogOption const& lo) { if (lo == LogOption::ENABLE || lo == LogOption::DISABLE) { std::string temp{}; time_t now = time(NULL); temp.append(ctime(&now)); // temp.erase(std::remove(temp.begin(), temp.end(), '\n'), temp.end()); temp.erase(temp.size() - 1); temp.append(" "); if (lo == LogOption::ENABLE) { disabled = false; temp.append("Logging Enabled\n"); } else if (lo == LogOption::DISABLE) { disabled = true; temp.append("Logging Disabled\n"); } std::cout << temp; logString.append(temp); } else { if (disabled) { return *this; } std::string temp{}; switch (lo) { case LogOption::STACKTRACE: { temp = boost::stacktrace::to_string(boost::stacktrace::stacktrace()); replaceAll(temp, "\n", "\n\t"); temp.insert(temp.begin(), '\n'); temp.insert(temp.begin() + 1, '\t'); temp.erase(temp.end() - 1); break; } case LogOption::TIMESTAMP: { time_t now = time(NULL); temp.append(ctime(&now)); temp.erase(temp.size() - 1); temp.append(" | "); break; } case LogOption::PTC: { printNextEntryToConsole = true; break; } case LogOption::END: { if (printNextEntryToConsole) { std::cout << tempLogEntry; tempLogEntry.clear(); printNextEntryToConsole = false; } break; } case LogOption::WTF: { if (appendToFile) { std::ofstream out(logFileName, std::ofstream::app); out << logString; out.close(); } else { std::ofstream out(logFileName); out << logString; out.close(); } break; } case LogOption::APPEND: { appendToFile = true; break; } case LogOption::OVERWRITE: { appendToFile = false; break; } case LogOption::FILENAME: { setFilename = true; break; } case LogOption::RESET: { logString.clear(); disabled = false; printNextEntryToConsole = false; tempLogEntry.clear(); appendToFile = true; logFileName = "stdlog.txt"; break; } case LogOption::CLEAR: { logString.clear(); tempLogEntry.clear(); break; } case LogOption::EXIT: { // TODO: Log Objekt persistent speichern. *this << lo::PTC << lo::TIMESTAMP << "Exiting program due to unsalvageable state. Press Enter to exit...\n" << lo::END; std::cin.get(); *this << lo::WTF; exit(1); break; } default: { temp.append("Unknown LogOption."); } } if (printNextEntryToConsole) { tempLogEntry.append(temp); } logString.append(temp); } return *this; } Log& operator<<(LogLevel const& ll) { if (disabled) { return *this; } std::string temp; switch (ll) { case LogLevel::STATUS: { temp.append("STATUS | "); break; } case LogLevel::WARNING: { temp.append("WARNING | "); break; } case LogLevel::ERR: { temp.append("ERROR | "); break; } default: { temp.append("Unknown LogLevel | "); } } if (printNextEntryToConsole) { tempLogEntry.append(temp); } logString.append(temp); return *this; } private: Log() : logString{ "" }, disabled{false}, printNextEntryToConsole{ false }, tempLogEntry{""}, appendToFile{ true }, logFileName{"stdlog.txt"}, setFilename{false} {} ~Log() { } std::string logString; bool disabled; bool printNextEntryToConsole; /* Falls nächster Logeintrag auf Konsole geprinted werden soll, muss das Ergebnis der verschiedenen Stream-Operatoren als ein Logeintrag in einem string festgehalten werden. */ std::string tempLogEntry; bool appendToFile; std::string logFileName; bool setFilename; private: // Replaces all occurences of "from" in "str" to "to". void replaceAll(std::string& str, std::string const& from, std::string const& to) { if (from.empty()) return; size_t start_pos = 0; while ((start_pos = str.find(from, start_pos)) != std::string::npos) { str.replace(start_pos, from.length(), to); start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx' } } }; } Thanks.
  15. Mikael Henriksson

    Twelfth entry - 8 August 2019

    Hello! This is the twelfth entry of my development blog for my project 'Tracked Mind'. I wasn't completely happy with the current inventory system, so the game now has a new system. You can see what it looks like in one of the screenshots that I'm uploading. The problem I had with the old one is now gone, and t