Jump to content
The Dark Mod Forums

Search the Community

Searched results for '/tags/forums/open spaces/' or tags 'forums/open spaces/q=/tags/forums/open spaces/&'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Discussion
    • News & Announcements
    • The Dark Mod
    • Fan Missions
    • Off-Topic
  • Feedback and Support
    • TDM Tech Support
    • DarkRadiant Feedback and Development
    • I want to Help
  • Editing and Design
    • TDM Editors Guild
    • Art Assets
    • Music & SFX

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Sure! My first draft for a wiki article "Lightgem" would look like this: " [[File:Hud.jpg|right|thumb|The lightgem is shown as part of the [[The_Dark_Mod_Gameplay#HUD_(Heads-Up_Display)|HUD]]:<br/>2. A breath indicator when underwater<br/>3. The lightgem itself<br/>4. A health indicator.<br/>Two wings flank the lightgem indicating if the player is crouching.]] The '''lightgem''' is a light indigator on the [[The_Dark_Mod_Gameplay#HUD_(Heads-Up_Display)|HUD]] and an important part of [[The Dark Mod Gameplay]]. The lightgem itself indicates how visible the player is. The visibility is based on how much light is hitting the player, but also depends on whether you are crouched, moving, have a weapon drawn, or being under water. The wings on either side of the gem indicates when the player is crouching. Below the lightgem is a health indicator. When the player is injured, a small red bar appears below the lightgem. The bar shows how much health you have left and decreases from right to left. Health potions and various types of food will replenish health. The bar remains visible until the health is fully restored. Above the lightgem is a breath indicator. When the player is under water, a small blue bar appears above the lightgem. The bar shows how much air you have left and decreases from right to left. When the bar runs out, you'll begin to take damage. Surfacing or using a Breath Potion will restore your air bar. The lightgem is an object that the player always carries and is not visible in the [[inventory]]. A user can disable the lightgem and the wings in Settings - Gameplay - General - Hide Lightgem. The health indicator and breath indicator will remain visible. [[Category:Equipment]] " (With the caveat that I would need to use the preview-functionality to fix any formatting errors I may have made before publishing it.) I would also * link "BREATH INDICATOR", "LIGHTGEM", and "HEALTH INDICATOR" from "The_Dark_Mod_Gameplay#HUD_(Heads-Up_Display)" to the new article "Lightgem". * create "health indicator" redirecting to "lightgem" ("#redirect[[lightgem]]") * create "breath indicator" redirecting to "lightgem" I registered on The Dark Mod Bugtracker on 29 December and I have since reported 68 issues from a personal log of issues that I had assembled during hours of testing TDM 2.11. The reports are not perfect, but I think they show my intentions are good. I understand the reluctance, especially if there have been incidents of spammers on the wiki, but as an open source project relying on volunteer work it is also important to keep a low threshold for contributing to the product. If I'm not up to par, you'll discover it quickly. Or, rather, you would have already discovered it in the Bugtracker.
  2. tdm_show_viewpos cvar and screenshot_viewpos command: https://forums.thedarkmod.com/index.php?/topic/22310-212-viewpos-on-player-hud-and-screenshots/
  3. It definitely sounds like instancing would help on outdoor maps with lots of trees / bushes / rocks. We don't have many of them at the moment, likely because performance is already a concern given the difficulty of vis-portaling huge open spaces: This could perhaps help improve that, since if an open field only has trees and rocks repeating the same mesh this might reduce the impact of large portal rooms enough to make it bearable. Of course lighting would remain a concern since instancing doesn't save you from the need to calculate each object and shadows in their own draw call, you'd need to add just a few torches to such a place. Other things might still tank performance in this scenario, but still it's a nice thought: I'm sure I'm not the only one who imagined what giant nature spaces might look like in a TDM FM.
  4. We used to have a more open policy about wiki access but got burned by spammers who acted in bad faith. If you have a wiki idea, please post a document and other members with wiki access can vet it and add it. Once you have proven your long-term viability, you will likely gain access to self-edit. Nothing guarantees that a spammer isn't "playing the long game" and waiting for such access but it increases the barrier of entry and makes the endeavor less enticing. I refrained from commenting on this thread because I do not have privileges to add users to the wiki and therefore generally do not feel comfortable speaking on behalf of those who do have such privileges.
  5. Relax @Näkki, it's great to hear you enjoyed the game. My personal expectations were just a bit different when I read the Steam page, although the various trailers should have been a warning that stealth maybe wasn't the biggest priority of the devs. From the Steam page: "Weird west legends meet eldritch horror in BLOOD WEST, an immersive stealth FPS." Also "Blood West is a stealth FPS inspired by the genre classics such as the Thief series (whose fans will be happy to hear the voice of Stephen Russell, the actor voicing the master-thief Garrett, returning here as the protagonist), S.T.A.L.K.E.R. games, or - from the contemporary catalog - Hunt: Showdown. The gameplay rewards the careful approach: scouting the area, stalking your enemies, and striking from the shadows. Can you figure out a way to clear a fort full of ghouls and monsters without raising an alarm?" From my personal experience I think the game is predominantly Hunt: Showdown, a bit of S.T.A.L.K.E.R. and a very small portion Thief. Stealth is very unforgiving and makes it almost impossible early game when there are various enemies around, but hey maybe I just suck at it. I don't see Deus Ex in it, unless the skill leveling is the Deus Ex part for you and then I have to disagree with you, as that seems like the trait system in Hunt: Showdown. Edit: What I also understood from the Steam forums is that the original VA was dropped close before the release of the full version and replaced by Russell with no real explanation from the devs why this was done.
  6. I also have an Huawai, no problem to set Vivaldi as default without Root. If you have more than one browser in the system and you open a link, you have the choice to select the default one to open it, at least for me. At least in the EU, manufacturers, also Google, are required by law to allow the user to freely choose their default browser. In Windows , it also intent to make EDGE as default and it's not enough to set in your browser to use it as default, there you must do it also in the Windows Default apps setting, to avoid the use of EDGE in some links. Also no Google search in my mobile, but my default search i use in Vivaldi, also as PWA searchbar on my homescreen, with all the other search engines, which i can sellect, synced with all other data (bookmarks, notes, passwords, etc) from my Vivaldi from the PC, no Google search in between. Vivaldi has inbuild a own mail client, feed reader, calendar and some other usefull thingies. https://yewtu.be/watch?v=y1nZSowjv08 https://www.technipages.com/how-to-change-the-default-browser-on-android/ https://cellularnews.com/mobile-operating-systems/android/how-to-set-default-browser-android/
  7. Just checked out from the Gitlab repo, can't compile source now. @OrbWeaver Severity Code Description Project File Line Suppression State Error C2504 'IUserControl': base class undefined (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h 11 Error C3668 'ui::GameConnectionControl::getControlName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h 16 Error C3668 'ui::GameConnectionControl::getDisplayName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h 21 Error C3668 'ui::GameConnectionControl::getIcon': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h 26 Error C3668 'ui::GameConnectionControl::createWidget': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h 31 Error C2664 'void ui::IUserInterfaceModule::registerControl(ui::IUserControlCreator::Ptr)': cannot convert argument 1 from 'std::shared_ptr<ui::GameConnectionControl>' to 'ui::IUserControlCreator::Ptr' dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnection.cpp 829 Message No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnection.cpp 829 Message see declaration of 'ui::IUserInterfaceModule::registerControl' (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\include\ui\iuserinterface.h 33 Message while trying to match the argument list '(std::shared_ptr<ui::GameConnectionControl>)' dm.gameconnection C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnection.cpp 829 Error C2504 'IUserControl': base class undefined (compiling source file ..\..\plugins\dm.editing\plugin.cpp) dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h 11 Error C3668 'ui::AIEditingControl::getControlName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h 16 Error C3668 'ui::AIEditingControl::getDisplayName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h 21 Error C3668 'ui::AIEditingControl::getIcon': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h 26 Error C3668 'ui::AIEditingControl::createWidget': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h 31 Error C2664 'void ui::IUserInterfaceModule::registerControl(ui::IUserControlCreator::Ptr)': cannot convert argument 1 from 'std::shared_ptr<ui::AIEditingControl>' to 'ui::IUserControlCreator::Ptr' dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\plugin.cpp 84 Message No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\plugin.cpp 84 Message see declaration of 'ui::IUserInterfaceModule::registerControl' (compiling source file ..\..\plugins\dm.editing\plugin.cpp) dm.editing C:\source_code\darkradiant_svn\DarkRadiant\include\ui\iuserinterface.h 33 Message while trying to match the argument list '(std::shared_ptr<ui::AIEditingControl>)' dm.editing C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\plugin.cpp 84 Error C2664 'void (GLenum,GLsizei,GLenum,void *,GLint)': cannot convert argument 4 from 'const unsigned int *const ' to 'void *' DarkRadiantCore C:\source_code\darkradiant_svn\DarkRadiant\radiantcore\rendersystem\backend\ObjectRenderer.cpp 50 Message Conversion loses qualifiers DarkRadiantCore C:\source_code\darkradiant_svn\DarkRadiant\radiantcore\rendersystem\backend\ObjectRenderer.cpp 50 Error C1083 Cannot open source file: '..\..\radiant\xyview\XYWnd.cpp': No such file or directory DarkRadiant C:\source_code\darkradiant_svn\DarkRadiant\tools\msvc\c1xx 1 VS2022 shows: Build started... 1>------ Build started: Project: DependencyCheck, Configuration: Debug x64 ------ 1>Ensure Windows Dependencies are downloaded and extracted 1>Checking latest windeps package... 1>Found package windeps.7z (32.9 MB) 1>Downloading dependencies package (32.9 MB) 1>Cleaning up old dependencies... 1>Extracting dependencies package... 1> 1>7-Zip (a) 19.00 (x86) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21 1> 1>Scanning the drive for archives: 1>1 file, 34494860 bytes (33 MiB) 1> 1>Extracting archive: C:\source_code\darkradiant_svn\DarkRadiant\tools\DependencyCheck\..\..\windeps_85508622.7z 1>-- 1>Path = C:\source_code\darkradiant_svn\DarkRadiant\tools\DependencyCheck\..\..\windeps_85508622.7z 1>Type = 7z 1>Physical Size = 34494860 1>Headers Size = 29691 1>Method = LZMA2:26 LZMA:20 BCJ2 1>Solid = + 1>Blocks = 2 1> 1>Everything is Ok 1> 1>Folders: 177 1>Files: 2417 1>Size: 275169913 1>Compressed: 34494860 2>------ Build started: Project: modulelib, Configuration: Debug x64 ------ 3>------ Build started: Project: libs, Configuration: Debug x64 ------ 4>------ Build started: Project: include, Configuration: Debug x64 ------ 5>------ Build started: Project: scenelib, Configuration: Debug x64 ------ 6>------ Build started: Project: xmlutillib, Configuration: Debug x64 ------ 7>------ Build started: Project: mathlib, Configuration: Debug x64 ------ 2>ApplicationContextBase.cpp 2>CoreModule.cpp 2>DynamicLibrary.cpp 2>StaticModule.cpp 5>ChildPrimitives.cpp 5>InstanceWalkers.cpp 7>AABB.cpp 7>Frustum.cpp 7>Matrix4.cpp 7>Plane3.cpp 7>SHA256.cpp 5>LayerUsageBreakdown.cpp 5>ModelFinder.cpp 5>Node.cpp 5>SelectableNode.cpp 5>SelectionIndex.cpp 5>TraversableNodeSet.cpp 5>Traverse.cpp 6>Document.cpp 6>Node.cpp 6>XmlModule.cpp 6>xmlutillib.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\build\libs\x64\Debug\xmlutillib.lib 2>modulelib.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\build\libs\x64\Debug\modulelib.lib 7>mathlib.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\build\libs\x64\Debug\mathlib.lib 5>GraphComparer.cpp 5>MergeActionNode.cpp 5>MergeOperation.cpp 5>MergeOperationBase.cpp 5>ThreeWayMergeOperation.cpp 5>scenelib.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\build\libs\x64\Debug\scenelib.lib 8>------ Build started: Project: DarkRadiantCore, Configuration: Debug x64 ------ 9>------ Build started: Project: wxutillib, Configuration: Debug x64 ------ 9>ConsoleView.cpp 9>DirChooser.cpp 9>EntityClassChooser.cpp 9>FileChooser.cpp 9>FreezePointer.cpp 9>GLWidget.cpp 9>ModalProgressDialog.cpp 9>MouseToolHandler.cpp 9>PanedPosition.cpp 9>PathEntry.cpp 9>SerialisableWidgets.cpp 9>Splitter.cpp 9>WindowPosition.cpp 9>WindowState.cpp 8>precompiled.cpp 8>Brush.cpp 8>BrushModule.cpp 8>BrushNode.cpp 8>Face.cpp 8>FaceInstance.cpp 8>FacePlane.cpp 8>FixedWinding.cpp 8>RenderableBrushVertices.cpp 8>TextureMatrix.cpp 8>TextureProjection.cpp 8>Winding.cpp 9>DeclarationTreeView.cpp 9>KeyValueTable.cpp 9>ResourceTreeView.cpp 9>ResourceTreeViewToolbar.cpp 9>ThreadedResourceTreePopulator.cpp 9>TreeModel.cpp 9>TreeModelFilter.cpp 9>TreeView.cpp 9>VFSTreePopulator.cpp 8>CSG.cpp 8>CollisionModel.cpp 8>Camera.cpp 8>CameraManager.cpp 9>DeclarationSelector.cpp 9>DeclarationSelectorDialog.cpp 8>BrushByPlaneClipper.cpp 8>Clipper.cpp 8>ClipPoint.cpp 8>SplitAlgorithm.cpp 8>DeclarationFolderParser.cpp 8>DeclarationManager.cpp 8>FavouritesManager.cpp 9>Dialog.cpp 9>DialogBase.cpp 9>MessageBox.cpp 8>EClassColourManager.cpp 8>EClassManager.cpp 8>EntityClass.cpp 8>AngleKey.cpp 8>AttachmentData.cpp 8>EntityModule.cpp 8>EntityNode.cpp 8>EntitySettings.cpp 8>KeyValue.cpp 8>KeyValueObserver.cpp 8>ModelKey.cpp 8>NameKeyObserver.cpp 8>NamespaceManager.cpp 8>RenderableArrow.cpp 8>RenderableEntityBox.cpp 8>RenderableEntityName.cpp 8>RotationKey.cpp 8>RotationMatrix.cpp 8>ShaderParms.cpp 8>SpawnArgs.cpp 9>FileSystemView.cpp 9>Populator.cpp 8>Curve.cpp 8>CurveCatmullRom.cpp 8>CurveEditInstance.cpp 8>CurveNURBS.cpp 8>StaticGeometryNode.cpp 9>FilterPopupMenu.cpp 9>PopupMenu.cpp 8>EclassModelNode.cpp 8>GenericEntityNode.cpp 9>EntityPreview.cpp 9>GuiRenderer.cpp 9>GuiView.cpp 9>ModelPreview.cpp 9>ParticlePreview.cpp 9>RenderPreview.cpp 8>LightNode.cpp 8>Renderables.cpp 8>SpeakerNode.cpp 8>SpeakerRenderables.cpp 8>TargetableNode.cpp 8>TargetKey.cpp 8>TargetKeyCollection.cpp 8>TargetLineNode.cpp 8>TargetManager.cpp 8>FileTypeRegistry.cpp 8>BasicFilterSystem.cpp 8>XMLFilter.cpp 8>XmlFilterEventAdapter.cpp 8>FontLoader.cpp 8>FontManager.cpp 8>GlyphInfo.cpp 8>GlyphSet.cpp 8>FxAction.cpp 8>FxDeclaration.cpp 8>FxManager.cpp 8>GridManager.cpp 9>DeclarationSourceView.cpp 9>DefinitionView.cpp 9>SourceView.cpp 8>BMPLoader.cpp 8>dds.cpp 8>ddslib.cpp 8>ImageLoader.cpp 8>JPEGLoader.cpp 8>PNGLoader.cpp 8>TGALoader.cpp 8>LayerInfoFileModule.cpp 8>LayerManager.cpp 8>LayerModule.cpp 8>SegFaultHandler.cpp 8>COutRedirector.cpp 8>LogFile.cpp 8>LogStream.cpp 8>LogStreamBuf.cpp 8>LogWriter.cpp 8>StringLogDevice.cpp 8>AasFileManager.cpp 8>Doom3AasFile.cpp 8>Doom3AasFileLoader.cpp 8>Doom3AasFileSettings.cpp 8>Export.cpp 8>Import.cpp 8>MapExporter.cpp 8>MapImporter.cpp 8>Models.cpp 8>ArchivedMapResource.cpp 8>CounterManager.cpp 8>EditingStopwatch.cpp 8>EditingStopwatchInfoFileModule.cpp 8>Map.cpp 8>MapFileManager.cpp 8>MapModules.cpp 8>MapPosition.cpp 8>MapPositionManager.cpp 8>MapPropertyInfoFileModule.cpp 8>MapResource.cpp 8>MapResourceLoader.cpp 8>MapResourceManager.cpp 8>PointFile.cpp 8>RegionManager.cpp 8>RootNode.cpp 8>VcsMapResource.cpp 9>wxutillib.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\build\libs\x64\Debug\wxutillib.lib 10>------ Build started: Project: vcs, Configuration: Debug x64 ------ 11>------ Build started: Project: dm.gameconnection, Configuration: Debug x64 ------ 12>------ Build started: Project: dm.gui, Configuration: Debug x64 ------ 13>------ Build started: Project: dm.editing, Configuration: Debug x64 ------ 14>------ Build started: Project: script, Configuration: Debug x64 ------ 15>------ Build started: Project: dm.conversation, Configuration: Debug x64 ------ 16>------ Build started: Project: dm.difficulty, Configuration: Debug x64 ------ 17>------ Build started: Project: dm.objectives, Configuration: Debug x64 ------ 18>------ Build started: Project: dm.stimresponse, Configuration: Debug x64 ------ 19>------ Build started: Project: sound, Configuration: Debug x64 ------ 20>------ Build started: Project: DarkRadiant, Configuration: Debug x64 ------ 10>GitModule.cpp 10>Index.cpp 10>Repository.cpp 11>AutomationEngine.cpp 11>DiffDoom3MapWriter.cpp 11>GameConnection.cpp 11>GameConnectionPanel.cpp 11>MapObserver.cpp 11>MessageTcp.cpp 15>CommandArgumentItem.cpp 12>GuiSelector.cpp 12>plugin.cpp 16>ClassNameStore.cpp 13>AIEditingPanel.cpp 17>precompiled.cpp 15>CommandEditor.cpp 15>ConversationCommand.cpp 15>ConversationCommandInfo.cpp 15>ConversationCommandLibrary.cpp 15>ConversationDialog.cpp 12>ReadableEditorDialog.cpp 12>ReadableGuiView.cpp 12>XData.cpp 12>XDataLoader.cpp 16>DifficultyDialog.cpp 16>DifficultyEditor.cpp 16>DifficultyEntity.cpp 13>AIHeadChooserDialog.cpp 13>AIHeadPropertyEditor.cpp 13>AIVocalSetChooserDialog.cpp 13>AIVocalSetPreview.cpp 13>AIVocalSetPropertyEditor.cpp 13>DarkmodTxt.cpp 13>FixupMap.cpp 13>FixupMapDialog.cpp 13>MissionInfoEditDialog.cpp 15>ConversationEditor.cpp 15>ConversationKeyExtractor.cpp 15>ConversationEntity.cpp 15>plugin.cpp 12>XDataSelector.cpp 12>XdFileChooserDialog.cpp 16>DifficultySettings.cpp 16>DifficultySettingsManager.cpp 16>plugin.cpp 16>Setting.cpp 18>precompiled.cpp 8>AutoSaver.cpp 13>MissionInfoGuiView.cpp 13>MissionInfoTextFile.cpp 13>MissionReadmeDialog.cpp 13>plugin.cpp 13>ReadmeTxt.cpp 14>precompiled.cpp 19>sound.cpp 19>SoundManager.cpp 19>SoundPlayer.cpp 19>SoundShader.cpp 20>precompiled.cpp 8>Doom3MapFormat.cpp 8>Doom3MapReader.cpp 8>Doom3MapWriter.cpp 8>Doom3PrefabFormat.cpp 8>MapFormatManager.cpp 8>Quake3MapFormat.cpp 8>Quake3MapReader.cpp 8>Quake4MapFormat.cpp 8>Quake4MapReader.cpp 17>Component.cpp 17>ComponentsDialog.cpp 17>ComponentType.cpp 17>DifficultyPanel.cpp 17>LogicEditor.cpp 17>MissionLogicDialog.cpp 17>ObjectiveConditionsDialog.cpp 17>ObjectiveEntity.cpp 17>ObjectiveEntityFinder.cpp 17>ObjectiveKeyExtractor.cpp 17>objectives.cpp 17>ObjectivesEditor.cpp 17>Specifier.cpp 17>SpecifierType.cpp 8>PortableMapFormat.cpp 8>PortableMapReader.cpp 8>PortableMapWriter.cpp 18>ClassEditor.cpp 18>CustomStimEditor.cpp 18>EffectArgumentItem.cpp 18>EffectEditor.cpp 18>plugin.cpp 18>ResponseEditor.cpp 18>ResponseEffect.cpp 18>ResponseEffectTypes.cpp 18>SREntity.cpp 18>SRPropertyLoader.cpp 18>SRPropertyRemover.cpp 18>SRPropertySaver.cpp 18>StimEditor.cpp 18>StimResponse.cpp 18>StimResponseEditor.cpp 18>StimTypes.cpp 8>BrushDef.cpp 8>BrushDef3.cpp 8>Patch.cpp 8>PatchDef2.cpp 8>PatchDef3.cpp 14>CameraInterface.cpp 14>DeclarationManagerInterface.cpp 14>FxManagerInterface.cpp 14>LayerInterface.cpp 14>SceneGraphInterface.cpp 14>SelectionGroupInterface.cpp 14>BrushInterface.cpp 14>CommandSystemInterface.cpp 14>DialogInterface.cpp 14>EClassInterface.cpp 14>EntityInterface.cpp 14>FileSystemInterface.cpp 14>GameInterface.cpp 14>GridInterface.cpp 14>MapInterface.cpp 14>MathInterface.cpp 8>InfoFile.cpp 8>InfoFileExporter.cpp 8>InfoFileManager.cpp 20>CameraWndManager.cpp 20>CameraSettings.cpp 20>CamWnd.cpp 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h(11,12): error C2504: 'IUserControl': base class undefined (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h(16,17): error C3668: 'ui::GameConnectionControl::getControlName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h(21,17): error C3668: 'ui::GameConnectionControl::getDisplayName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h(26,17): error C3668: 'ui::GameConnectionControl::getIcon': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnectionControl.h(31,15): error C3668: 'ui::GameConnectionControl::createWidget': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnection.cpp(829,26): error C2664: 'void ui::IUserInterfaceModule::registerControl(ui::IUserControlCreator::Ptr)': cannot convert argument 1 from 'std::shared_ptr<ui::GameConnectionControl>' to 'ui::IUserControlCreator::Ptr' 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnection.cpp(829,86): message : No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 11>C:\source_code\darkradiant_svn\DarkRadiant\include\ui\iuserinterface.h(33,18): message : see declaration of 'ui::IUserInterfaceModule::registerControl' (compiling source file ..\..\plugins\dm.gameconnection\GameConnection.cpp) 11>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gameconnection\GameConnection.cpp(829,26): message : while trying to match the argument list '(std::shared_ptr<ui::GameConnectionControl>)' 14>ModelInterface.cpp 14>PatchInterface.cpp 14>RadiantInterface.cpp 14>SelectionInterface.cpp 14>SelectionSetInterface.cpp 14>ShaderSystemInterface.cpp 14>SkinInterface.cpp 14>SoundInterface.cpp 8>MRU.cpp 19>libvorbis-d-vc143.lib(vorbisfile.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(vorbisfile.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(framing.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(framing.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(info.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(info.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(block.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(block.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(synthesis.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(synthesis.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(bitwise.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(bitwise.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(sharedbook.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(sharedbook.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(codebook.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(codebook.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(psy.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(psy.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(registry.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(registry.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(mdct.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(mdct.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(envelope.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(envelope.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(smallft.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(smallft.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(bitrate.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(bitrate.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(window.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(window.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(lpc.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(lpc.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(floor0.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(floor0.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(floor1.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(floor1.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(res0.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(res0.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(mapping0.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(mapping0.obj)' or at ''; linking object as if no debug info 19>libvorbis-d-vc143.lib(lsp.obj) : warning LNK4099: PDB '' was not found with 'libvorbis-d-vc143.lib(lsp.obj)' or at ''; linking object as if no debug info 19> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\modules\sound.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\modules\sound.exp 8>ComplexName.cpp 8>Namespace.cpp 8>NamespaceFactory.cpp 19>sound.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\modules\sound.dll 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h(11,12): error C2504: 'IUserControl': base class undefined (compiling source file ..\..\plugins\dm.editing\plugin.cpp) 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h(16,17): error C3668: 'ui::AIEditingControl::getControlName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h(21,17): error C3668: 'ui::AIEditingControl::getDisplayName': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h(26,17): error C3668: 'ui::AIEditingControl::getIcon': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\AIEditingControl.h(31,15): error C3668: 'ui::AIEditingControl::createWidget': method with override specifier 'override' did not override any base class methods (compiling source file ..\..\plugins\dm.editing\plugin.cpp) 8>AseExporter.cpp 8>Lwo2Chunk.cpp 20>ClipboardModule.cpp 8>Lwo2Exporter.cpp 8>ModelExporter.cpp 8>ModelScalePreserver.cpp 8>PatchSurface.cpp 8>ScaledModelExporter.cpp 8>WavefrontExporter.cpp 19>Done building project "sound.vcxproj". 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\plugin.cpp(84,30): error C2664: 'void ui::IUserInterfaceModule::registerControl(ui::IUserControlCreator::Ptr)': cannot convert argument 1 from 'std::shared_ptr<ui::AIEditingControl>' to 'ui::IUserControlCreator::Ptr' 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\plugin.cpp(84,85): message : No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 13>C:\source_code\darkradiant_svn\DarkRadiant\include\ui\iuserinterface.h(33,18): message : see declaration of 'ui::IUserInterfaceModule::registerControl' (compiling source file ..\..\plugins\dm.editing\plugin.cpp) 13>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.editing\plugin.cpp(84,30): message : while trying to match the argument list '(std::shared_ptr<ui::AIEditingControl>)' 20>Accelerator.cpp 20>EventManager.cpp 20>GlobalKeyEventFilter.cpp 20>MouseToolGroup.cpp 11>Done building project "dm.gameconnection.vcxproj" -- FAILED. 20>MouseToolManager.cpp 20>Statement.cpp 20>Toggle.cpp 20>WidgetToggle.cpp 17>AIFindBodyComponentEditor.cpp 17>AIFindItemComponentEditor.cpp 17>AlertComponentEditor.cpp 17>ComponentEditorFactory.cpp 17>CustomClockedComponentEditor.cpp 17>CustomComponentEditor.cpp 17>DestroyComponentEditor.cpp 17>DistanceComponentEditor.cpp 17>InfoLocationComponentEditor.cpp 17>ItemComponentEditor.cpp 17>KillComponentEditor.cpp 17>KnockoutComponentEditor.cpp 17>LocationComponentEditor.cpp 17>PickpocketComponentEditor.cpp 17>ReadableClosedComponentEditor.cpp 17>ReadableOpenedComponentEditor.cpp 10>VcsStatus.cpp 17>ReadablePageReachedComponentEditor.cpp 18> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.stimresponse.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.stimresponse.exp 8>AseModel.cpp 8>AseModelLoader.cpp 8>FbxModelLoader.cpp 8>ModelImporterBase.cpp 14>PythonModule.cpp 14>SceneNodeBuffer.cpp 14>ScriptCommand.cpp 14>ScriptingSystem.cpp 14>ScriptModule.cpp 17>SpecifierEditCombo.cpp 20>main.cpp 20>RadiantApp.cpp 18>dm.stimresponse.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.stimresponse.dll 8>ofbx.cpp 20>AutoSaveTimer.cpp 20>StartupMapLoader.cpp 17>AIInnocenceSpecifierPanel.cpp 13>Done building project "dm.editing.vcxproj" -- FAILED. 17>AITeamSpecifierPanel.cpp 17>AITypeSpecifierPanel.cpp 17>ClassnameSpecifierPanel.cpp 17>EntityNameSpecifierPanel.cpp 17>GroupSpecifierPanel.cpp 17>SpawnClassSpecifierPanel.cpp 17>SpecifierPanelFactory.cpp 17>TextSpecifierPanel.cpp 8>MD5Anim.cpp 20>ManipulateMouseTool.cpp 8>MD5AnimationCache.cpp 8>MD5Model.cpp 8>MD5ModelLoader.cpp 8>MD5ModelNode.cpp 8>MD5Module.cpp 8>MD5Skeleton.cpp 8>MD5Surface.cpp 14> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\modules\script.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\modules\script.exp 20>SceneManipulateMouseTool.cpp 20>SelectionMouseTools.cpp 15> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.conversation.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.conversation.exp 14>script.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\modules\script.dll 15>dm.conversation.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.conversation.dll 12>GuiExpression.cpp 12>Gui.cpp 12>GuiManager.cpp 12>GuiScript.cpp 12>GuiWindowDef.cpp 12>RenderableCharacterBatch.cpp 12>RenderableText.cpp 12>Variable.cpp 20>LocalisationModule.cpp 20>LocalisationProvider.cpp 16> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.difficulty.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.difficulty.exp 20>Win32Registry.cpp 16>dm.difficulty.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.difficulty.dll 8>ModelCache.cpp 8>ModelFormatManager.cpp 8>ModelNodeBase.cpp 8>NullModel.cpp 8>NullModelNode.cpp 8>StaticModel.cpp 8>StaticModelNode.cpp 8>StaticModelSurface.cpp 20>TextureToolManipulateMouseTool.cpp 10>libgit2-d.lib(tree.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(tree.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(object_api.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(object_api.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(blob.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(blob.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(errors.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(errors.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(global.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(global.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(index.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(index.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(buffer.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(buffer.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(oid.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(oid.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(repository.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(repository.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(object.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(object.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(refs.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(refs.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_generate.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_generate.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(branch.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(branch.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(checkout.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(checkout.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(merge.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(merge.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(credential.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(credential.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(remote.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(remote.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(commit.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(commit.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(config.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(config.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(status.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(status.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(reset.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(reset.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(revwalk.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(revwalk.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(signature.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(signature.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(annotated_commit.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(annotated_commit.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(vector.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(vector.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(util.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(util.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(odb.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(odb.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(strmap.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(strmap.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pool.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pool.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(path.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(path.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(tree-cache.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(tree-cache.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(alloc.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(alloc.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(posix.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(posix.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(posix_w32.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(posix_w32.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(futils.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(futils.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(filter.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(filter.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(filebuf.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(filebuf.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(buf_text.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(buf_text.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(error.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(error.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(mwindow.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(mwindow.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(hash.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(hash.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(sysdir.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(sysdir.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(merge_driver.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(merge_driver.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(registry.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(registry.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(mbedtls.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(mbedtls.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(openssl.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(openssl.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(ssh.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(ssh.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(thread.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(thread.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(submodule.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(submodule.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(idxmap.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(idxmap.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(config_cache.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(config_cache.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(ignore.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(ignore.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(iterator.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(iterator.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pathspec.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pathspec.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(varint.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(varint.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(attrcache.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(attrcache.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(strarray.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(strarray.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(worktree.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(worktree.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(path_w32.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(path_w32.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(w32_util.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(w32_util.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(cache.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(cache.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(refdb.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(refdb.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_driver.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_driver.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(tag.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(tag.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_print.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_print.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_stats.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_stats.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(date.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(date.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(patch.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(patch.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_tform.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_tform.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(attr_file.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(attr_file.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(patch_generate.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(patch_generate.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(refspec.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(refspec.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(merge_file.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(merge_file.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(oidarray.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(oidarray.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(commit_list.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(commit_list.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(oidmap.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(oidmap.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pqueue.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pqueue.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(transport.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(transport.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(fetch.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(fetch.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(fetchhead.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(fetchhead.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(push.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(push.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(mailmap.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(mailmap.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(config_file.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(config_file.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(regexp.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(regexp.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(transaction.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(transaction.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(wildmatch.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(wildmatch.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(revparse.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(revparse.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(tsort.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(tsort.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(utf-conv.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(utf-conv.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(w32_buffer.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(w32_buffer.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(odb_pack.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(odb_pack.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(odb_loose.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(odb_loose.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(map.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(map.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(dir.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(dir.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(stdalloc.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(stdalloc.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(attr.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(attr.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(crlf.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(crlf.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(ident.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(ident.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pack.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pack.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(collisiondetect.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(collisiondetect.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(findfile.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(findfile.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(clone.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(clone.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(refdb_fs.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(refdb_fs.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(hashsig.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(hashsig.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_file.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_file.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(diff_xdiff.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(diff_xdiff.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(zstream.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(zstream.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(delta.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(delta.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xmerge.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xmerge.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(local.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(local.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(smart.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(smart.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(winhttp.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(winhttp.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(git.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(git.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(net.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(net.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pack-objects.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pack-objects.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(parse.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(parse.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(config_snapshot.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(config_snapshot.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(config_entries.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(config_entries.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(config_parse.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(config_parse.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pcre_compile.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pcre_compile.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pcre_exec.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pcre_exec.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pcre_globals.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pcre_globals.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(reflog.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(reflog.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(indexer.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(indexer.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(offmap.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(offmap.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(sha1.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(sha1.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(sortedcache.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(sortedcache.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xdiffi.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xdiffi.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xutils.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xutils.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xprepare.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xprepare.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(netops.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(netops.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(smart_protocol.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(smart_protocol.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(smart_pkt.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(smart_pkt.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(proxy.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(proxy.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(settings.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(settings.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(socket.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(socket.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(http_parser.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(http_parser.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(thread-utils.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(thread-utils.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pcre_newline.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pcre_newline.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pcre_tables.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pcre_tables.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(pcre_chartables.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(pcre_chartables.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(ubc_check.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(ubc_check.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xemit.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xemit.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xpatience.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xpatience.obj)' or at ''; linking object as if no debug info 10>libgit2-d.lib(xhistogram.obj) : warning LNK4099: PDB '' was not found with 'libgit2-d.lib(xhistogram.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(deflate.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(deflate.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(inflate.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(inflate.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(crc32.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(crc32.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(adler32.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(adler32.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(zutil.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(zutil.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(trees.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(trees.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(inftrees.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(inftrees.obj)' or at ''; linking object as if no debug info 10>libzlib-d-vc143.lib(inffast.obj) : warning LNK4099: PDB '' was not found with 'libzlib-d-vc143.lib(inffast.obj)' or at ''; linking object as if no debug info 10> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\vcs.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\vcs.exp 10>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library 20>AasFileControl.cpp 20>AasVisualisationPanel.cpp 20>RenderableAasFile.cpp 10>vcs.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\vcs.dll 10>Done building project "vcs.vcxproj". 12>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gui\gui\GuiScript.cpp(148,14): warning C4834: discarding return value of function with 'nodiscard' attribute 12>C:\source_code\darkradiant_svn\DarkRadiant\plugins\dm.gui\gui\GuiWindowDef.cpp(371,14): warning C4834: discarding return value of function with 'nodiscard' attribute 8>clip.c 8>envelope.c 8>list.c 8>lwio.c 8>lwo2.c 8>lwob.c 8>pntspols.c 8>surface.c 8>vecmath.c 8>vmap.c 8>picointernal.c 8>picomodel.c 8>picomodules.c 8>pm_3ds.c 8>pm_fm.c 8>pm_iqm.c 8>pm_lwo.c 8>pm_md2.c 8>pm_md3.c 8>pm_mdc.c 8>pm_ms3d.c 8>pm_obj.c 8>pm_terrain.c 20>AnimationPreview.cpp 20>MD5AnimationChooser.cpp 20>MD5AnimationViewer.cpp 8>PicoModelLoader.cpp 8>PicoModelModule.cpp 17> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.objectives.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.objectives.exp 8>ParticleDef.cpp 8>ParticleNode.cpp 8>ParticleParameter.cpp 8>ParticlesManager.cpp 8>RenderableParticle.cpp 8>RenderableParticleBunch.cpp 8>RenderableParticleStage.cpp 8>StageDef.cpp 17>dm.objectives.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.objectives.dll 20>FindBrush.cpp 20>QuerySidesDialog.cpp 8>General.cpp 8>Prefab.cpp 20>ColourSchemeEditor.cpp 12> Creating library C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.gui.lib and object C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.gui.exp 20>DialogManager.cpp 20>ImageFilePopulator.cpp 20>ImageFileSelector.cpp 20>SkinChooser.cpp 20>SoundChooser.cpp 20>SoundShaderPreview.cpp 20>EntityChooser.cpp 20>MapPreview.cpp 20>TexturePreviewCombo.cpp 12>dm.gui.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\plugins\dm.gui.dll 12>Done building project "dm.gui.vcxproj". 8>Patch.cpp 8>PatchModule.cpp 8>PatchNode.cpp 8>PatchRenderables.cpp 8>PatchTesselation.cpp 8>Radiant.cpp 20>CommandEntry.cpp 20>Console.cpp 8>CommandSystem.cpp 20>DispatchEvent.cpp 20>Documentation.cpp 20>LongRunningOperationHandler.cpp 20>MapCommands.cpp 20>MapFileProgressHandler.cpp 20>PointFileChooser.cpp 20>UserInterfaceModule.cpp 20>C:\source_code\darkradiant_svn\DarkRadiant\radiant\ui\Documentation.cpp(23,32): warning C4189: 'ctx': local variable is initialized but not referenced 8>ModuleLoader.cpp 8>ModuleRegistry.cpp 8>BlendLight.cpp 8>BuiltInShader.cpp 8>ColourShader.cpp 8>DepthFillPass.cpp 8>FullBrightRenderer.cpp 8>GLProgramFactory.cpp 8>InteractionPass.cpp 8>LightingModeRenderer.cpp 8>ObjectRenderer.cpp 8>OpenGLShader.cpp 8>OpenGLShaderPass.cpp 8>RegularLight.cpp 8>SceneRenderer.cpp 8>C:\source_code\darkradiant_svn\DarkRadiant\radiantcore\rendersystem\backend\ObjectRenderer.cpp(50,38): error C2664: 'void (GLenum,GLsizei,GLenum,void *,GLint)': cannot convert argument 4 from 'const unsigned int *const ' to 'void *' 8>C:\source_code\darkradiant_svn\DarkRadiant\radiantcore\rendersystem\backend\ObjectRenderer.cpp(50,38): message : Conversion loses qualifiers 20>EClassTree.cpp 20>EClassTreeBuilder.cpp 8>Done building project "DarkRadiantCore.vcxproj" -- FAILED. 21>------ Build started: Project: Tests, Configuration: Debug x64 ------ 21>Basic.cpp 21>Brush.cpp 21>Camera.cpp 21>Clipboard.cpp 21>CodeTokeniser.cpp 21>ColourSchemes.cpp 21>CommandSystem.cpp 21>ContinuousBuffer.cpp 21>CSG.cpp 21>Curves.cpp 21>DeclManager.cpp 21>DefBlockSyntaxParser.cpp 21>DefTokenisers.cpp 21>Entity.cpp 21>EntityClass.cpp 21>EntityInspector.cpp 20>EntityInspectorModule.cpp 20>FxPropertyEditor.cpp 20>AddPropertyDialog.cpp 20>AnglePropertyEditor.cpp 20>BooleanPropertyEditor.cpp 20>ClassnamePropertyEditor.cpp 20>ColourPropertyEditor.cpp 20>EntityInspector.cpp 20>EntityPropertyEditor.cpp 20>FloatPropertyEditor.cpp 20>ModelPropertyEditor.cpp 20>PropertyEditor.cpp 20>PropertyEditorFactory.cpp 20>SkinPropertyEditor.cpp 20>SoundPropertyEditor.cpp 20>TexturePropertyEditor.cpp 20>Vector3PropertyEditor.cpp 21>Favourites.cpp 21>FileTypes.cpp 21>Filters.cpp 20>EntityList.cpp 21>Fx.cpp 20>GraphTreeModel.cpp 21>Game.cpp 21>GeometryStore.cpp 21>Grid.cpp 21>HeadlessOpenGLContext.cpp 21>ImageLoading.cpp 20>FavouritesBrowser.cpp 20>FavouritesUserInterfaceModule.cpp 21>LayerManipulation.cpp 21>MapExport.cpp 21>MapMerging.cpp 20>FilterDialog.cpp 20>FilterEditor.cpp 21>MapSavingLoading.cpp 21>MaterialExport.cpp 21>Materials.cpp 21>MessageBus.cpp 21>ModelExport.cpp 21>Models.cpp 21>ModelScale.cpp 21>Particles.cpp 21>Patch.cpp 20>FilterContextMenu.cpp 20>FilterOrthoContextMenuItem.cpp 21>PatchIterators.cpp 20>FiltersMainMenu.cpp 20>FilterUserInterface.cpp 21>PatchWelding.cpp 20>FxChooser.cpp 21>PointTrace.cpp 20>WxGLWidgetManager.cpp 21>Prefabs.cpp 20>GridUserInterface.cpp 21>Renderer.cpp 21>SceneNode.cpp 21>SceneStatistics.cpp 20>CreateLayerDialog.cpp 20>LayerControlPanel.cpp 20>LayerContextMenu.cpp 20>LayerOrthoContextMenuItem.cpp 21>Selection.cpp 21>SelectionAlgorithm.cpp 21>Settings.cpp 21>Skin.cpp 20>AuiFloatingFrame.cpp 20>AuiLayout.cpp 20>AuiManager.cpp 21>SoundManager.cpp 20>PropertyNotebook.cpp 20>TopLevelFrame.cpp 20>ViewMenu.cpp 20>MainFrame.cpp 20>ScreenUpdateBlocker.cpp 21>TextureManipulation.cpp 21>TextureTool.cpp 21>Transformation.cpp 21>UndoRedo.cpp 21>VFS.cpp 21>WindingRendering.cpp 21>WorldspawnColour.cpp 20>LayerInfoTab.cpp 20>EntityInfoTab.cpp 20>MapInfoDialog.cpp 20>ModelInfoTab.cpp 20>ShaderInfoTab.cpp 21>XmlUtil.cpp 20>MapSelector.cpp 20>MaterialEditor.cpp 20>MaterialEditorModule.cpp 20>MaterialPreview.cpp 20>MaterialChooser.cpp 20>MaterialPopulator.cpp 20>MaterialSelector.cpp 20>MaterialTreeView.cpp 21>Matrix3.cpp 21>Matrix4.cpp 21>Plane3.cpp 21>Quaternion.cpp 21>Vector.cpp 20>MediaBrowserModule.cpp 20>MediaBrowserTreeView.cpp 20>MediaBrowser.cpp 20>MenuBar.cpp 20>MenuElement.cpp 20>MenuFolder.cpp 20>MenuItem.cpp 20>MenuManager.cpp 20>MenuSeparator.cpp 20>MapMergePanel.cpp 20>ConvertModelDialog.cpp 20>ExportAsModelDialog.cpp 20>ExportCollisionModelDialog.cpp 20>MaterialsList.cpp 20>ModelSelector.cpp 20>ModelTreeView.cpp 21>Tests.vcxproj -> C:\source_code\darkradiant_svn\DarkRadiant\install\Tests.exe 20>TexTool.cpp 20>AboutDialog.cpp 20>CommandList.cpp 20>ShortcutChooser.cpp 20>FindShader.cpp 20>LightInspector.cpp 20>BindToolDialog.cpp 20>ToolMappingDialog.cpp 20>OrthoContextMenu.cpp 20>OrthoBackgroundPanel.cpp 20>Overlay.cpp 20>ParticleChooserDialog.cpp 20>ParticleEditor.cpp 20>ParticleSelector.cpp 20>BulgePatchDialog.cpp 20>CapDialog.cpp 20>PatchCreateDialog.cpp 20>PatchInspector.cpp 20>PatchThickenDialog.cpp 20>PrefabSelector.cpp 20>GameSetupDialog.cpp 20>GameSetupPage.cpp 20>GameSetupPageIdTech.cpp 20>GameSetupPageTdm.cpp 20>PrefDialog.cpp 20>PreferenceItem.cpp 20>PrefPage.cpp 20>ScriptMenu.cpp 20>ScriptUserInterfaceModule.cpp 20>ScriptWindow.cpp 20>SelectionSetToolmenu.cpp 20>SkinEditor.cpp 20>SkinEditorTreeView.cpp 20>CommandStatus.cpp 20>EditingStopwatchStatus.cpp 20>MapStatistics.cpp 20>StatusBarManager.cpp 20>MapTextureBrowser.cpp 20>TextureBrowserManager.cpp 20>TextureBrowserPanel.cpp 20>TextureThumbnailBrowser.cpp 20>ToolbarManager.cpp 20>Splash.cpp 20>SurfaceInspector.cpp 20>TransformPanel.cpp 20>GlobalXYWnd.cpp 20>XYWnd.cpp 20>c1xx : fatal error C1083: Cannot open source file: '..\..\radiant\xyview\XYWnd.cpp': No such file or directory 20>Done building project "DarkRadiant.vcxproj" -- FAILED. ========== Build: 17 succeeded, 4 failed, 0 up-to-date, 0 skipped ========== ========== Build started at 13:16 and took 01:54.291 minutes ==========
  8. Very interesting reading, Welli. Here is a different spin when it comes to new players. The number one selling point of TDM within its genre is content. Thanks to talented and dedicated artists such as yourself we now have around 175 self contained stories. I would say TDM crossed the barrier from medium to high selling point with the 100th release. From this point on it doesn't matter if the game offers a hundred or a thousand maps. A hundred maps is A LOT already. Want content? Look no further. Requisite fulfilled. The number two selling point is... you tell me. Free? Open Source? Multi OS? Map editor? Being maintained? Just like with any form of entertainment people will either love TDM at first sight, tolerate it and even get to like it, or simply dismiss it. No amount of small tweaks can fundamentally change TDM and certain changes may end up dividing the community. My ultimate goal here is to make this community aware of the potential of a healthy modding scene to attract artists and experts in all departments and feed hungry and demanding players. Mods can be the second selling point of TDM: thief it your way.
  9. Edit: in post 5 I discovered Whisper which does this task MUCH better. So don't use vosk. Some of the info till post 5 is still relevant for subtitle editing in Kdenlive in general. I previously posted about this in a status update. To make it a bit more in-view for the future I post the info also in this topic. I recently figured out how to make subtitles work for missions following this wiki guide: https://wiki.thedarkmod.com/index.php?title=Subtitles You can type in the subtitle-text manually either in the .subs or .srt files (in a text-editor) or use an video editor for that (recomended for .srt). What is also possible on some advanced editors including the free and open source multiplatform (Windows, Linux and Intel-Mac) Kdenlive editor is to auto generate the subtitle text for you from the audio or video file. You can then export to an .srt file that works directly in tdm. If you want to use the subs files for shorter sentences, you can just copy text from the .srt files. In Kdenlive you can install speech to text libraries from VOSK. For this to work you have to download and install Python. Info how to do the process of installation and usage can be seen in the following video (6.5 minutes): To sum it up: Configure first time: Install Python. (on Windows) During setup, you have to select Advanced Options and there mark Add Python to environment variables (super important!). In Kdenlive go to menu settings, click on configure Kdenlive. In that configure window, click in the left menu on Speech to text. There you click on the link to download speech models. On the website ( https://alphacephei.com/vosk/models ) you can click on a model download link, but keep the click pressed and move your mouse with the link to the configure Kdenlive window. Kdenlive then asks to install the model from url. vosk-model-en-us-0.22-lgraph is probably decent for most use cases. but you can install and test them all. To use it: First load an audio or video file into the view by dragging the file in one of the audio or video bars at the bottom (video: v1, v2 or audio: a1, a2). Click on menu Project > Subtitles > Edit Subtitle tool. You see an extra Subtitles bar on top. Now you select the audio or video file (it is sellected when it is outlined with an orange border) in the specific bar and then click on menu Project > Subtitles > Speech recognition. In the Speech recognition dialog, you select the correct language model and choose option Selected clip. After generation, you can preview the generated subtitles via the top right window. Make sure it is at starter position for playback. Using an audio file, you see a black background with the subtitles on top. Now you can tweek the position and edit the text directly in the Subtitles bar. This takes up the most time. Unfortunatelly the generation is not flawless, so you have to correct some words. Tweeking the subtitles for Requiem took me hours, becouse I wanted them to line up differently. Usually the subtitles are not generated as full senteces. This looks sloppy. If you want to add subtitles quickly without spending much time on it, it can be done this way. If you want to do it right, it still takes a lot of time in my experience. To export to .srt is shown in the following video: Although actually it's just one step: Click on menu Project > Subtitles > Export subtitle file. Alternativelly you can just save the kdenlive project and then the srt is exported as well. Every save will update the srt file. I might create a wiki article about it later. Kdenlive edit window:
  10. So, if I understand you, no Thief Gold FM does sound and text notifications of completed objectives? The missions in The Black Parade surely did. I'm completely confused now. I was sure that original Thief Gold had those objective complete notifications (at least the sound). Reading this thread suggests otherwise though: https://www.ttlg.com/forums/showthread.php?t=132977
  11. Of course, it is one of the reasons for the decline of online forums, since the advent of mobile phones. Forums on a mobile are a pain in the ass, but on the other hand, for certain things there are no real alternatives to forums, social networks cannot be with their sequential threads, where it is almost impossible to retrieve answers to a question that is asked. has done days ago. For devs for internal communication, the only thing offered is a collaborative app, such as System D (not to be confused with systemd). FOSS, free and anonymous registration, access further members only by invitation, full encrypted and private. https://www.system-d.org
  12. There is exactly one - quite overused Wall mounted Oil lamp (in bronze and Rusty bronze oooh). Its an indoor lamp fixture, used outdoors and as its a 'fancy' design - often in areas of lower-economic means too. It just looks 'wrong' in many outdoor places. While I'd believe there is a Guild / Utility monopoly that mandates all same-age electric lamp fixtures to be exactly the 'same'...Mass-produced metal things can be hammered out by any Half-Ape Tinsmith with Metal-Shears and a Hammer, 3 an hour. Just look at these random examples; These are a mixed assortment of 'Whale' Oil , Coal-Oil & Kerosene; Lanterns. They work mostly how you'd expect - except the outdoor models ARE weather-proof, meaning the glass doors need to be open to be affected by water arrows / snuffed-out... Also this; a Gimbal equipped Oil-lamp, could present quite the challenge as even IF it gets knocked over / tips - it stays burning!
  13. Hello, everyone! In this multi-part, comprehensive tutorial I will introduce you to a new light type that has been available in The Dark Mod since version 2.06, what it does, why you would want to use it and how to implement it in your Fan Missions. This tutorial is aimed at the intermediate mapper. Explanations of how to use DarkRadiant, write material files, etc. are outside of its scope. I will, however, aim to be thorough and explain the relevant concepts comprehensively. Let us begin by delineating the sections of the tutorial: Part 1 will walk you through four, distinct ways to add ambient light to a scene, the last way using irradiance environment maps (or IEMs). Lighting a scene with an IEM is considered image-based lighting. Explaining this concept is not in the scope of this tutorial; rather, we will compare and contrast our currently available methods with this new one. If you already understand the benefits IBL confers, you may consider this introductory section superfluous. Part 2 will review the current state of cubemap lights in TDM, brief you on capturing an environment cubemap inside TDM and note limitations you may run into. Three cubemap filtering applications will be introduced and reviewed. Part 3 will go into further detail of the types of inputs and outputs required by each program and give a walkthrough of the simplest way to get an irradiance map working in-game. Part 4 will guide you through two additional, different workflows of how to convert your cubemap to an irradiance map and unstitch it back to the six separate image files that the engine needs. Part 5 will conclude the tutorial with some considerations as to the scalability of the methods hitherto explained and will enumerate some good practices in creating IEMs. Typical scenes will be considered. Essential links and resources will be posted here and a succinct list of the steps and tools needed for each workflow will be summarized, for quick reference. Without further ado, let us begin. Part 1 Imagine the scene. You’ve just made a great environment for your map, you’ve got your geometry exactly how you want it… but there’s a problem. Nobody can appreciate your efforts if they can’t see anything! [Fig. 1] This will be the test scene for the rest of our tutorial — I would tell you to “get acquainted with it” but it’s rather hard to, at the moment. The Dark Mod is a game where the interplay between light and shadow is of great importance. Placing lights is designing gameplay. In this example scene, a corridor with two windows, I have decided to place 3 lights for the player to stealth his way around. Two lights from the windows streak down across the floor and a third, placeholder light for a fixture later to be added, is shining behind me, at one end of the corridor. Strictly speaking, this is sufficient for gameplay in my case. It is plainly obvious, however, that the scene looks bad, incomplete. “Gameplay” lights aside, the rest of the environment is pitch black. This is undesirable for two reasons. It looks wrong. In real life, lights bounce off surfaces and diffuse in all directions. This diffused, omni-directional lighting is called ambient lighting and its emitment can be termed irradiance. You may contrast this with directional lighting radiating from a point, which is called point lighting and its emitment — radiance. One can argue that ambient lighting sells the realism of a scene. Be that as it may, suppose we disregard scary, real-life optics and set concerns of “realism” aside… It’s bad gameplay. Being in darkness is a positive for the player avatar, but looking at darkness is a negative for the player, themselves. They need to differentiate obstacles and objects in the environment to move their avatar. Our current light level makes the scene illegible. The eye strain involved in reading the environment in these light conditions may well give your player a headache, figurative and literal, and greatly distract them from enjoying your level. This tutorial assumes you use DarkRadiant or are at least aware of idtech4’s light types. From my earlier explanation, you can see the parallels between the real life point/ambient light dichotomy and the aptly named “point” and “ambient” light types that you can use in the editor. For further review, you can consult our wiki. Seeing as how there is a danger in confusing the terms here, I will hereafter refer to real life ambient light as “irradiant light”, to differentiate it from the TDM ambient lights, which are our engine’s practical implementation of the optical phenomenon. A similar distinction between “radiant light” and point lights will be made for the same reason. Back to our problem. Knowing, now, that most all your scenes should have irradiant light in addition to radiant light, let’s try (and fail, instructionally) to fix up our gloomy corridor. [Fig. 2] The easiest and ugliest solution: ambient lights. Atdm:ambient_world is a game entity that is basically an ambient light with no falloff, modifiable by the location system. One of the first things we all do when starting a new map is putting an ambient_world in it. In the above image, the darkness problem is solved by raising the ambient light level using ambient_world (or via an info_location entity). Practically every Dark Mod mission solves its darkness problem1 like this. Entirely relying on the global ambient light, however, is far from ideal and I argue that it solves neither of our two, aforementioned problems. Ambient_world provides irradiant light and you may further modulate its color and brightness per location. However, said color and brightness are constant across the entire scene. This is neither realistic, nor does it reduce eye strain. It only makes the scene marginally more legible. Let’s abandon this uniform lighting approach and try a different solution that’s more scene-specific. [Fig. 3] Non-uniform, but has unintended consequences. Our global ambient now down to a negligible level, the next logical approach would be hand-placed ambient lights with falloff, like ambient_biground. Two are placed here, supplementing our window point lights. Combining ambient and point lights may not be standard TDM practice, but multiple idtech4 tutorials extol the virtues of this method. I, myself, have used it in King of Diamonds. For instance, in the Parkins residence, the red room with the fireplace has ambient lights coupled to both the electric light and the fire flame. They color the shadows and enrich the scene, and they get toggled alongside their parent (point) lights, whenever they change state (extinguished/relit). This is markedly better than before, but to be honest anything is, and you may notice some unintended side-effects. The AI I’ve placed in the middle of the ambient light’s volume gets omnidirectionally illuminated far more than any of the walls, by virtue of how light projection in the engine works. Moving the ambient lights’ centers closer to the windows would alleviate this, but would introduce another issue — the wall would get lit on the other side as well. Ambient lights don’t cast shadows, meaning they go through walls. You could solve this by creating custom ambient light projection textures, but at this point we are three ad hocs in and this is getting needlessly complicated. I concede that this method has limited use cases but illuminating big spaces that AI can move through, like our corridor, isn’t one of them. Let’s move on. [Fig. 4] More directional, but looks off. I have personally been using this method in my WIP maps a lot. For development (vs. release), I even recommend it. A point light instead of an ambient light is used here. The texture is either “biground1” or “defaultpointlight” (the latter here). The light does not cast shadows, and its light origin is set at one side of the corridor, illuminating it at an angle. This solves the problem of omnidirectional illumination for props or AI in the middle of the light volume, you can now see that the AI is lit from the back rather than from all sides. In addition, the point light provides that which the ambient one cannot, namely specular and normal interaction, two very important features that help our players read the environment better. This is about as good as you can get but there are still some niggling problems. The scene still looks too monochromatic and dark. From experience, I can tell you that this method looks good in certain scenes, but this is clearly not one of them. Sure, we can use two, non-shadowcasting point lights instead of one, aligned to our windows like in the previous example, we can even artfully combine local and global ambient lights to furnish the scene further, but by this point we will have multiple light entities placed, which is unwieldy to work with and possibly detrimental to performance. Another problem is that a point light’s movable light origin helps combat ambient omnidirectionality, but its projection texture still illuminates things the strongest in the middle of its volume. I have made multiple experiments with editing the Z-projection falloff texture of these lights and the results have all left me unsatisfied. It just does not look right. A final, more intellectual criticism against this method is that this does not, in a technical sense, supply irradiant light. Nothing here is diffuse, this is just radiant light pretending the best it can. [Fig. 5] The irradiance map method provides the best looking solution to imbuing your scene with an ambient glow. This is the corridor lit with irradiance map lights, a new lighting method introduced in The Dark Mod 2.06. Note the subtle gradients on the left wall and the bounced, orange light on the right column. Note the agreeable light on the AI. Comparing the previous methods and this, it is plainly obvious that an irradiance environment map looks the most realistic and defines the environment far better than any of the other solutions. Why exactly does this image look better than the others? You can inform yourself on image-based lighting and the nature of diffuse irradiance, but images speak louder than words. As you can see, the fact of the matter is that the effect, subtle as it may be, substantially improves the realism of the scene, at least compared to the methods previously available to us. Procuring irradiance environment maps for use in lighting your level will hereafter be the chief subject of this tutorial. The next part will review environment cubemap capture in TDM, the makeIrradiance keyword and three external applications that you can use to convert a TDM cubemap into an irradiance map. 1 “ Note that the color buffer is cleared to black: Doom3 world is naturally pitch black since there is no "ambient" light: In order to be visible a surface/polygon must interact. with a light. This explains why Doom3 was so dark ! “ [source] Part 2 Cubemaps are not new to The Dark Mod. The skybox materials in some of our prefabs are cubemaps, some glass and polished tile materials use cubemaps to fake reflections for cheap. Cubemap lights, however, are comparatively new. The wiki page linked earlier describes these two, new light types that were added in TDM 2.05. cubicLight is a shadow-casting light with true spherical falloff. An example of such a light can be found in the core files, “lights/cubic/tdm_lampshade_cubic”. ambientCubicLight is the light type we will be focusing on. Prior to TDM 2.06, it acted as a movable, on-demand reflection dispenser, making surfaces in its radius reflect a pre-set cubemap, much like glass. After 2.06, the old behavior was discarded and ambientCubicLight was converted to accept industry standard irradiance environment maps. Irradiance environment maps (IEMs) are what we want to make, so perhaps the first thing to make clear is that they aren’t really “handmade”. An IEM is the output of a filtering process (convolution) which requires an input in the form of a regular environment cubemap. In other words, if we want to make an IEM, we need a regular cubemap, ideally one depicting our environment — in this case, the corridor. I say a snapshot of the environment is ideal for lighting it because this emulates how irradiant light in the real world works. All radiating surfaces are recorded in our cubemap, our ambient optic array as it were, then blurred, or convoluted, to approximate light scatter and diffusion, then the in-game light “shines” this approximation of irradiant light back to the surfaces. There is a bit of a “chicken and the egg” situation here, if your scene is dark to begin with, wouldn’t you just get a dark irradiance map and accomplish nothing? In the captured cubemap faces in Fig. 6, you may notice that the environment looks different than what I’ve shown so far. I used two ambient lights to brighten up the windows for a better final irradiance result. I’ve “primed the pump”, so to speak. You can ignore this conundrum for the moment, ways to set up your scenes for better results, or priming the pump correctly, will be discussed at the end of the tutorial. Capturing the Environment The wiki has a tutorial on capturing cubemaps by angua, but it is woefully out of date. Let me run you through the process for 2.07 really briefly. To start with, I fly to approx. the center of the corridor with noclip. I then type “envshot t 256” in the console. This outputs six .tga images in the <root>/env folder, simply named “t”, sized 256x256 px and constituting the six sides of a cube and depicting the entire environment. This is how they look in the folder: [Fig. 6] The six cube faces in the folder. Of note here is that I do not need to switch to a 640x480 resolution, neither do I need to rename these files, they can already be used in an ambientCubicLight. Setting Up the Lights For brevity’s sake, I’ll skip explaining material definitions, if you’ve ever added a custom texture to your map, you know how to do this. Suffice it to say, it is much the same with custom lights. In your <root>/materials/my_cool_cubemaps.mtr file, you should have something like this: lights/ambientcube/my_test_IEM_light { ambientCubicLight { forceHighQuality //cameraCubeMap makeIrradiance(env/t) cameraCubeMap env/t colored zeroClamp } } We’ll play with the commented out line in just a bit. Firstly, let’s place the actual light in DarkRadiant. It’s as simple as creating a new light or two and setting them up in much the same way you would a regular ambient light. I select the appropriate light texture from the list, “my_test_IEM_light” in the “ambientcube” subfolder and I leave the light colored pure white. [Fig. 7] The corridor in DR, top view, with the ambient cubic lights highlighted. I can place one that fills the volume or two that stagger the effect somewhat. Remember that these lights still have a spherical falloff. Preference and experimentation will prove what looks best to you. Please note that what the material we defined does is load a cubemap while we established that ambientCubicLights only work with irradiance maps. Let’s see if this causes any problems in-game. I save the map and run it in game to see the results. If I already have TDM running, I type “reloadDecls” in the console to reload my material files and “reloadImages” to reload the .tga images in the /env folder. [Fig. 8] Well this looks completely wrong, big surprise. Wouldn’t you know it, putting a cubemap in the place of an irradiance map doesn’t quite work. Everything in the scene, especially the AI, looks to be bathed in slick oil. Even if a material doesn’t have a specular map, it won’t matter, the ambientCubicLight will produce specular reflections like this. Let’s compare how our cubemap .tga files compares with the IEM .tgas we’ll have by the end of the tutorial: [Fig. 9] t_back.tga is the back face of the environment cubemap, tIEM_back.tga is the back face of the irradiance map derived from it. As you can see, the IEM image looks very different. If I were to use “env/tIEM” instead of “env/t” in the material definition above, I would get the proper result, as seen in the last screenshot of part 1. So it is that we need a properly filtered IEM for our lights to work correctly. Speaking of that mtr def though, let’s not invoke an irradiance map we haven’t learned to convert yet. Let’s try an automatic, in-engine way to convert cubemaps to IEMs, namely the makeIrradiance material keyword. makeIrradiance and Its Limitations Let’s uncomment the sixth line in that definition and comment out the seventh. cameraCubeMap makeIrradiance(env/t) //cameraCubeMap env/t Here is a picture of how a cubemap ran through the makeIrradiance keyword looks like: [Fig. 10] Say ‘Hi’ to our friend in the back, the normalmap test cylinder. It’s a custom texture I’ve made to demonstrate cubemap interactions in a clean way. Hey now, this looks pretty nice! The scene is a bit greener than before, but you may even argue it looks more pleasing to the eyes. Unfortunately, the devil is in the details. Let’s compare the makeIrradiance keyword’s output with the custom made irradiance map setup seen at the end of part 1. [Fig. 11, 12] A closer look at the brick texture reveals that the undesired specular highlighting is still present. The normal map test cylinder confirms that the reason for this is the noisy output of the makeIrradiance keyword. The in-engine conversion is algorithmic, more specifically, it doesn't allow us to directly compare .tga files like we did above. Were we able to, however, I'm sure the makeIrradiance IEM would look grainy and rough compared to the smooth gradient of the IEM you’ll have by the end of this tutorial. The makeIrradiance keyword is good for quick testing but it won’t allow you fine control over your irradiance map. If we want the light to look proper, we need a dedicated cubemap filtering software. A Review of Cubemap Filtering Software Here I’ll introduce three programs you can produce an irradiance map with. In the coming parts, I will present you with a guide for working with each one of them. I should also note that installing all of these is trivial, so I’ll skip that instructional step when describing their workflows. I will not relay you any ad copy, as you can already read it on these programs’ websites. I’ll just list the advantages and disadvantages that concern us. Lys https://www.knaldtech.com/lys/ Advantages: Good UI, rich image manipulation options, working radiance/specular map filtering with multiple convolution algorithms. Disadvantages: $50 price tag, limited import/export options, only available on Windows 64-bit systems. cmftStudio https://github.com/dariomanesku/cmftStudio Advantages: Available on Windows, OSX and Linux, free, open source software, command line interface available. Disadvantages: Somewhat confusing UI, limited import options, missing features (radiance/specular map filtering is broken, fullscreen doesn’t work), 32-bit binaries need to be built from source (I will provide a 32-bit Windows executable at the end of the tutorial). Modified CubeMapGen https://seblagarde.wordpress.com/2012/06/10/amd-cubemapgen-for-physically-based-rendering/ Advantages: Free software, quickest to work with (clarified later). Disadvantages: Bad UI, only Windows binaries available, subpar IEM export due to bad image adjustment options. Let’s take a break at this point and come back to these programs in part 3. A lot of caveats need to be expounded on as to which of these three is the “best” software for making an irradiance map for our purposes. Neither of these programs has a discreet workflow; rather, the workflow will include or exclude certain additional programs and steps depending on which app you choose to work with. It will dovetail and be similar in all cases. Part 3 The aim of this tutorial is twofold. First, it aims to provide the most hands-free and time-efficient method of converting an envshot, environment cubemap to an IEM and getting it working in-game. The second is using as few applications as possible and keeping them all free software that is available for download, much like TDM itself. The tutorial was originally going to only cover IEM production through Lys, as that was the app I used to test the whole process with. I soon realized that it would be inconsiderate of me to suggest you buy a fifty dollar product for a single step in a process that adds comparatively little to the value of a FM, if we’re being honest (if you asked me, the community would benefit far more from a level design tutorial than a technical one like this, but hey, maybe later, I’m filling a niche right now that nobody else has filled). This led me to seek out open-source alternatives to Lys, such as Cubemapgen, which I knew of and cmftStudio, which I did not. I will preempt my own explanations and tell you right away that, in my opinion, cmftStudio is the program you should use for IEM creation. This comes with one big caveat, however, which I’m about to get into. Six Faces on a Cross and The Photoshop Problem Let’s review. Taking an envshot in-game gives you six separate images that are game-ready. Meaning, you get six, split cubemap faces as an output, you need six, split irradiance map faces as an input. This is a problem, because neither Lys nor cmftStudio accept a sequence of images as such. They need to be stitched together in a cube cross, a single image of the unwrapped cube, like this: [Fig. 13] From Lys. Our cubemap has been stitched into a cross and the “Debug Cube Map Face Position” option has been checked, showing the orientations of each face. In Lys only panoramas, sphere maps and cube maps can be loaded into the program. The first two do not concern us, the third specifically refers to a single image file. Therefore, to import a TDM envshot into Lys you need to stitch your cubemap into a cross. Furthermore, Lys’ export also outputs a cubemap cross, therefore you also need to unstitch the cubemap into its faces afterwards if you want to use it in TDM. In cmftStudio you can import single map faces! Well… no, you can’t. The readme on GitHub boasts “Input and output types: cubemap, cube cross, latlong, face list, horizontal and vertical strip.” but this is false. The UI will not allow you to select multiple files on import, rendering the “face list” input type impossible.2 Therefore, to import a TDM envshot into cmftStudio you need to stitch your cubemap into a cross. Fortunately, the “face list” export type does work! Therefore, you don’t need to unstitch the cubemap manually, cmftStudio will export individual faces for you. In both of these cases, then, you need a cubemap cross. For this tutorial I will use Adobe Photoshop, a commercial piece of software, to stitch our faces into a cubemap in an automated fashion (using Photoshop’s Actions). This is the big caveat to using cmftStudio, even if you do not want to buy Lys, PS is still a prerequisite for working with both programs. There are, of course, open source alternatives to Photoshop, such as GIMP, but it is specifically Photoshop’s Action functionality that will power these workflows. GIMP has its own Actions in the form of Macros, but they are written with python. GIMP is not a software suite that I use, neither is python a language I am proficient with. Out of deference for those who don’t have, or like working with, Photoshop, I will later go through the steps I take inside the image editor in some detail, in order for the studious reader to reconstruct them, if they so desire, in their image editing software of choice. At any rate, and at the risk of sounding a little presumptuous, I take it that, as creative types, most of you already have Photoshop on your computers. 2 An asterisk regarding the “impossibility” of this. cmftStudio is a GUI for cmft, a command line interface that does the same stuff but inside a command prompt. I need to stress that I am certain multiple faces can be inputted in the command line, but messing with unwieldy prompts or writing batch files is neither time-saving nor user-friendly. This tutorial is aimed at the average mapper, but a coder might find the versatility offered in cmft interesting. The Cubemapgen Workflow You will have noticed that I purposefully omitted Cubemapgen from the previous discussion. This is because working with Cubemapgen, wonderfully, does not need Photoshop to be involved! Cubemapgen both accepts individual cubemap faces as input and exports individual irradiance map faces as output. Why, then, did I even waste your time with all the talk of Lys, cmftStudio and Photoshop? Well, woefully, Cubemapgen’s irradiance maps look poor at worst and inconsistent at best. Comparing IEMs exported from Lys and cmftStudio, you will see that both look practically the same, which is good! An IEM exported from Cubemapgen, by default, is far too desaturated and the confusing UI does not help in bringing it to parity with the other two programs. If you work solely with Cubemapgen, you won’t even know what ‘parity’ is, since you won’t have a standard to compare to. [Fig. 14] A comparison between the same irradiance map face, exported with the different apps at their respective, default settings. Brightened and enlarged for legibility. This may not bother you and I concede that it is a small price to pay for those not interested in working with Photoshop. The Cubemapgen workflow is so easy to describe that I will in fact do just that, now. After I do so, however, I will argue that it flies in the face of one of the aims of this tutorial, namely: efficiency. Step 1: Load the cubemap faces into Cubemapgen. Returning to specifics, you will remember that we have, at the moment, six .tga cubemap faces in a folder that we want to convert to six irradiance map faces. With Cubemapgen open, direct your attention to these buttons: [Fig. 15] You can load a cubemap face by pressing the corresponding button or using the hotkey ‘F’. To ensure the image faces the correct way, you must load it in the corresponding “slot”, from the Select Cubemap Face dropdown menu above, or by pressing the 1-6 number keys on your keyboard. Here is a helpful list: X+ Face <1> corresponds to *_right X- Face <2> corresponds to *_left Y+ Face <3> corresponds to *_up Y- Face <4> corresponds to *_down Z+ Face <5> corresponds to *_forward Z- Face <6> corresponds to *_back ...with the asterisk representing the name of your cubemap. With enough practice, you can get quite proficient in loading cubemap faces using keyboard shortcuts. Note that the ‘Skybox’ option in the blue panel is checked, I recommend you use it. Step 2: Generate the Irradiance Map [Fig. 16] The corridor environment cubemap loaded in and filtered to an irradiance map. The options on the right are my attempt to get the IEM to look right, though they are by no means prescriptive. Generating an IEM with Modified CubeMapGen 1.66 is as easy as checking the ‘Irradiance cubemap’ checkbox and hitting ‘Filter Cubemap’ in the red panel. There are numerous other options there, but most will have no effect with the checkbox on. For more information, consult the Sébastien Lagarde blog post that you got the app from. I leave it to you to experiment with the input and output gamma sliders, you really have no set standard on how your irradiance map is supposed to look, so unfortunately you’ll have to eyeball it and rely on trial and error. Two things are important to note. The ‘Output Cube Size’ box in the red panel is the resolution that you want your IEM to export to. In the yellow panel, make sure you set the output as RGB rather than RGBA! We don’t need alpha channels in our images. Step 3: Export Irradiance Map Faces Back in the green panel, click the ‘Save CubeMap to Images’ button. Save the images as .tga with a descriptive name. [Fig. 17] The exported irradiance map faces in the folder. These files still need to be renamed with appropriate suffixes in order to constitute a readable cubemap for the engine. The nomenclature is the same as the table above: “c00” is the X+ Face, to be renamed “right”, “c01” is the X- Face and so on. Right left, up down, forward and back. That’s the order! This is all there is to this workflow. A “cameraCubeMap env/testshot” in the light material will give us a result that will look, at the very least, better than the inbuilt makeIrradiance material keyword. [Fig. 17] The map ended up being a little bright. Feel free to open Fig. 4 and this in seperate tabs and compare the Lys/cmft export with the cubemapgen one. A Review of the Workflow Time for the promised criticism to this workflow. I already stated my distaste for the lack of a standardised set of filtering values with this method. The lack of any kind of preset system for saving the values you like makes working with Cubemapgen even more slipshod. Additionally, in part 2, I said that Cubemapgen is the fastest to work with, but this needs to be qualified. What we just did was convert one cubemap to an irradiance map, but a typical game level ought to use more than a single IEM. Premeditation and capturing fake, “generic” environment cubemaps (e.g. setting up a “blue light on the right, orange on the left” room or a “bright skylight above, brown floor” room, then capturing them with envshot) might allow for some judicious reuse and keep your distinct IEM light definition count down to single digits, but you can only go so far with that. I am not arguing here for an ambient cubic light in every scene either, certainly only those that you deem need the extra attention, or those for which the regular lighting methods enumerated in Part 1 do not quite work. I do tentatively assume, though, that for an average level you would use between one and two dozen distinct IEMs. Keep in mind that commercial games, with their automated probe systems for capturing environment shots, use many, many more than that. With about 20 cubemaps to be converted and 6 faces each to load into Cubemapgen, you’ll be going through the same motions 120 whole times (saving and renaming not included). If you decide to do this in one sitting (and you should, as Cubemapgen, to reiterate, does not keep settings between sessions), you are in for a very tedious process that, while effective, is not very efficient. The simple fact is that loading six things one by one is just slower than loading a single thing once! The “single thing” I’m referring to is, of course, the single, stitched cubemap cross texture. In the next part, I will go into detail regarding how to make a cubemap cross in Photoshop in preparation for cmftStudio and Lys. It will initially seem a far more time-consuming process to you than the Cubemapgen workflow, but through the magic of automation and the Actions feature, you will be able to accomplish the cubemap stitch process in as little as a drag-and-drop into PS and a single click. The best thing is that after we go through the steps, you won’t have to recreate them yourself, as I will provide you with a custom Actions .atn file and save you the effort. I advise you not to skip the explanations, however. The keen-eyed among you may have noticed that you can also load a cube cross in Cubemapgen. If you want to use both Cubemapgen and Photoshop together to automate your Cubemapgen workflow, be aware that Cubemap gen takes crosses that have a different orientation than the ones Lys and cmftStudio use. My macros (actions) are designed for the latter, so if you want to adjust them for Cubemapgen you would do well to study my steps and modify them appropriately. For the moment, you’ve been given the barebones essentials needed to capture an envshot, convert it to an irradiance map and put it in your level at an appropriate location, all without needing a single piece of proprietary software. You can stop here and start cranking out irradiance maps to your heart’s content, but if you’re in the mood for some more serious automation, consider the next section.
  14. I can reproduce the issue with "Open doors on unlock" on and off so I am fairly certain this issue has nothing to do with the setting. Just open and close the panel slightly a few times and you will see the item sometimes is frobable and sometimes isn't. I would say the trigger box gets in the way of the panel (or the other way around) and the game sometimes freaks out.
  15. I'd be unhappy about this, and I think this setting has been around for as long as I can remember. I definitely prefer to open the door as a separate action after unlocking it, gives me more control with interacting with whatever is going on. It can take time to unlock a door, and having the door suddenly open when you're not ready for it can land you in trouble!
  16. Would this mean that all doors are always open on unlocking them? Because I remember another mission where this needs to be true. I don't know the name but there was a code wheel that unlocked a grate in a bank and if it didn't automatically open, you were stuck!
  17. I've just gotten through the pump house and experienced a system hang while I had to ctrl-alt-del and end the darkmod process to get any use from my computer. I will restart it and try again soon. edit: got further, having trouble finding the key for door 7C. clues/location? I needed to look more closely in Later I had a strange experience in room 11, coming down the ladder to the East side: I pressed Esc to bring up the menu, but only the cursor appeared; I didn't see menu options of hear and clanks like the cursor passed over them. Quickloading and trying again let me open the menu, but it was weird.
  18. Greetings everyone! I recently got into TDM and am already having a lot of fun playing through and ghosting missions. However, coming from Thief, I am mostly relying on the rules and my experience with that game, while there are clearly differences in how TDM works. Right now, there is talk in the ghosting discussion thread on TTLG to amend the ruleset and include clarifications pertaining to TDM. So I wanted to drop by and ask: is there an active TDM ghosting community already and have any rules for this playstyle been developed? I would also like to ask someone to take a look at the draft of this addendum to see whether everything looks correct: https://www.ttlg.com/forums/showthread.php?t=148487&page=16&p=2473352&viewfull=1#post2473352 Thanks!
  19. A Problem Arises I've paused subtitling of the Lady02 vocal set, because of a problem with the voice clips described here: https://forums.thedarkmod.com/index.php?/topic/21741-subtitles-possibilities-beyond-211/&do=findComment&comment=490151 While a way forward is being determined, I'll work on a different vocal set. Maybe manbeast, for which Kingsal just provided me the voice script.
  20. Well, if you say so. If I remove the 'areaLock' spawnarg from the rain patches, it falls through the roof and it looks the same whether the door is open or closed. I'm just saying that opening the door doesn't seem to make the rain appear inside as you suggested above. Regardless, I'm not advocating the areaLock method, just reporting observations.
  21. Particle collisions cannot be computed in realtime, particles are purely graphical effect which cannot interact with collisions. So the collisions have to be precomputed beforehand, just like dmap precomputes triangulations of brushes. Most of the nuances grow from here. It was possible in theory to run it automatically during dmap (just like e.g. you never have to run aas tool directly, because dmap calls it automatically), but I'm afraid it would annoy everyone because it may take quite a lot of time depending on settings. Now that some people have some practice with this, should we change it? Most importantly, collisions are precomputed statically. If you move the emitter, the collision information becomes wrong. All objects which seem dynamic are automatically excluded from precomputation, so the particles will still go straight through all the guards and moveables. What do you mean by "default" behavior? Default behavior of what? particles? Like make all particle emitters stop on collisions automatically? What about cases when mapper wanted particles to pierce walls? What about moving particle emitters? The goal was to reduce amount of work actually. As soon as you are able to set one huge particle emitter over the whole map, I think you don't have to mess with it any more, just remember to execute runParticle occasionally when you want up-to-date collisions. Before that, mapper had to split the rain patch into many patches and manually tweak every patch so that it stops at proper height. As far as I understand, it was very time-consuming and painful. As for areaLock, it does not restrict particles to single area. It only disables the whole system if renderer proves player does not see the specified area. As long as the door is open, you should still see rain falling indoors, no? Yeah, this is a tough question. Texture layout: Only works properly if particle evolves exactly the same way if emitted from the same location. Interacts with texturing: requires you to set non-overlapping texcoords in 0..1 range on the emitting surface. The only option in TDM 2.08. Ok for straight-falling rain, but snow is out of question. Linear layout: Only works for a periodic system, i.e. the whole system exactly repeats itself after some time. Precomputation might take a lot of time, especially if you insist on a large period. [problem for maintainers like me] If particle code is changed in TDM engine, the collisions must be recomputed. Was added in TDM 2.09. Supports pretty much any kind of particles, although snow was the main goal.
  22. Today something very strange and frustrating happened when using DR, mostly because I use the windows 10 feature, virtual desktop, to simulate more than one monitor. I forgot that I add DR open in one desktop hidden from view, so I opened another instance of DR, I worked on the map in this instance and tested it ingame, something very strange was happening some times some models would just vanish, thinking that I made something wrong, in the engine code, I closed DR and changed to my second virtual desktop that add Visual Studio Open, behind it was the second instance of DR that I didn't saw, after messing around in the code and not seeing anything wrong, I alt+tab to go to the desktop for some reason and saw the second instance of DR open, instead of closing it straight away, I instinctively clicked ctrl+s, not realizing that this version of the map was outdated and so, it undone all the changes I made to the map on the other DR instance on save, this really made my tension rise when I realized the mistake. I know it is my fault for not being more attentive but could DR warn somehow if another instance is open in the same map? Also could this cause models to disappear in game?
  23. Black Parade is released ! https://www.ttlg.com/forums/showthread.php?t=152429
  24. What a twist! I liked your mission (my PC is i9, RTX 3080 so no low FPS complaints:) because it is unlike the others - open spaces, non-hostile NPCs. Figuring out takes a while, may become boring. I would solve this by giving more specific hints - not as specific as the - e.g. making the items we discuss leak oil; or maybe "My diary, my husband invited the Builders in and they What i did not like is the bell fry and the building next to it - they are just an empty shells serving no purpose (other than lowering FPS;). "Shader missing" - that was a good one!:-) Thank you.
  25. Those assets don't look good against stock TDM assets, they're like from another world. You'd need a complete package or a whole mission made out of these exclusively, to get a coherent style. That's years of work, unfortunately. Second reason is something I saw mentioned a few times in Discord discussions – TDM assets got stolen and repurposed on more than several occasions. I know that there's no way to stop asset flippers from getting those, even from modern games, if they're desperate enough. But since pk4 is basically an open door for such people, it made me reluctant to go on with this initiative. I put way too much work over the years to get to this level of craft (which is still not super pro, but quite decent, I think). From time to time, I still do single models, as requested from FM authors; but over the last few years, all my TDM-related modelling work has been sporadic, and mostly for my own amusement. I lost access to my dropbox folders. I reuploaded those in one zip package and updated the first post.
×
×
  • Create New...