Mattew Posted February 1, 2016 Share Posted February 1, 2016 Hello, everyone! I'm a wannabe game developer, and my current power level is, well, I managed to read a texture from a file with winapi, and display that texture with opengl. I was curious how Don't Starve works, and which API it uses. You see, I'm still not sure what to use: OpenGL or Direct3D or DirectDraw, DirectX9 or DirectX8 or DirectX12, DirectSound or OpenAL or winmm.dll, raw winapi or some wrapper. And so, I'd like to use something that other popular games use, instead of deciding for myself. This is a list of all dlls that the game loads when it starts, maybe somebody can tell something interesting about any of these? Executable modules Base Size Entry Name File version Path 00400000 00016000 0040801F XINPUT1_ 9.18.944.0000 C:\Windows\system32\XINPUT1_3.dll 01380000 002C6000 01589201 dontstar C:\Program Files\Don't Starve\bin\dontstarve.exe 65980000 0001D000 65981060 swresamp C:\Program Files\Don't Starve\bin\swresample-ttv-0.dll 6EB80000 00089000 6EB81060 libmp3la C:\Program Files\Don't Starve\bin\libmp3lame-ttv.dll 6F2A0000 00177000 6F36EE4A fmodex 4.44.07 C:\Program Files\Don't Starve\bin\fmodex.dll 6F630000 0011B000 6F6AA99F twitchsd C:\Program Files\Don't Starve\bin\twitchsdk_32_release.dll 6F880000 0006C000 6F8BED48 fmod_eve 4.44.07 C:\Program Files\Don't Starve\bin\fmod_event.dll 6F8F0000 0008E000 6F929DC7 MSVCP90 9.00.30729.4940 C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_50916076bcb9a742\MSVCP90.dll 6F9C0000 00030000 6F9DEC5C DINPUT8 6.1.7600.16385 ( C:\Windows\system32\DINPUT8.dll 6F9F0000 001C3000 6F9F1A45 d3d9 6.1.7601.17514 ( C:\Windows\system32\d3d9.dll 6FDE0000 00032000 6FDE37F1 WINMM 6.1.7600.16385 ( C:\Windows\system32\WINMM.dll 6FE20000 000D4000 6FEA9BA6 libGLESv 1.0.0.2249 C:\Program Files\Don't Starve\bin\libGLESv2.dll 70530000 00014000 70531340 MSACM32 6.1.7600.16385 ( C:\Windows\system32\MSACM32.dll 70550000 0001B000 7055ED9D libEGL 1.0.0.2249 C:\Program Files\Don't Starve\bin\libEGL.dll 70570000 00006000 705711F0 d3d8thk 6.1.7600.16385 ( C:\Windows\system32\d3d8thk.dll 70A40000 0003A000 70A41060 avutil-t C:\Program Files\Don't Starve\bin\avutil-ttv-51.dll 71F30000 000A3000 71F52D40 MSVCR90 9.00.30729.4940 C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_50916076bcb9a742\MSVCR90.dll 72030000 00013000 72031858 dwmapi 6.1.7601.18917 ( C:\Windows\system32\dwmapi.dll 73620000 00009000 73621220 VERSION 6.1.7601.17647 ( C:\Windows\system32\VERSION.dll 73E80000 00007000 73E81120 WSOCK32 6.1.7600.16385 ( C:\Windows\system32\WSOCK32.dll 74BA0000 0000C000 74BA10E1 CRYPTBAS 6.1.7601.23223 ( C:\Windows\syswow64\CRYPTBASE.dll 74BB0000 00060000 74BCA3AD SspiCli 6.1.7601.23211 ( C:\Windows\syswow64\SspiCli.dll 74C10000 000F0000 74C20569 RPCRT4 6.1.7600.16385 ( C:\Windows\syswow64\RPCRT4.dll 74D00000 00035000 74D0145D WS2_32 6.1.7600.16385 ( C:\Windows\syswow64\WS2_32.dll 74D50000 00047000 74D574E1 KERNELBA 6.1.7601.18015 ( C:\Windows\syswow64\KERNELBASE.dll 74DA0000 00090000 74DB633B GDI32 6.1.7601.18898 ( C:\Windows\syswow64\GDI32.dll 74E30000 00C4B000 74EB14F1 SHELL32 6.1.7601.17514 ( C:\Windows\syswow64\SHELL32.dll 75A80000 0015C000 75ACBA3D ole32 6.1.7600.16385 ( C:\Windows\syswow64\ole32.dll 75C10000 00057000 75C29BA6 SHLWAPI 6.1.7600.16385 ( C:\Windows\syswow64\SHLWAPI.dll 75C70000 00027000 75C758B9 CFGMGR32 6.1.7601.17621 ( C:\Windows\syswow64\CFGMGR32.dll 75CA0000 000AC000 75CAA472 msvcrt 7.0.7601.17744 ( C:\Windows\syswow64\msvcrt.dll 75D50000 00136000 75D51B35 urlmon 8.00.7600.16385 C:\Windows\syswow64\urlmon.dll 75F20000 00045000 75F211E1 WLDAP32 6.1.7600.16385 ( C:\Windows\syswow64\WLDAP32.dll 75F70000 001FB000 75F722D9 iertutil 8.00.7601.17514 C:\Windows\syswow64\iertutil.dll 76180000 0009D000 761B40EA USP10 1.0626.7601.1845 C:\Windows\syswow64\USP10.dll 76220000 00121000 7622158E CRYPT32 6.1.7601.18839 ( C:\Windows\syswow64\CRYPT32.dll 76350000 00100000 7636B6ED USER32 6.1.7601.17514 ( C:\Windows\syswow64\USER32.dll 76450000 0000A000 764536A0 LPK 6.1.7601.18985 ( C:\Windows\syswow64\LPK.dll 764E0000 00012000 764E1441 DEVOBJ 6.1.7601.17621 ( C:\Windows\syswow64\DEVOBJ.dll 76500000 000CC000 7650168B MSCTF 6.1.7600.16385 ( C:\Windows\syswow64\MSCTF.dll 76600000 0019D000 766017E7 SETUPAPI 6.1.7600.16385 ( C:\Windows\syswow64\SETUPAPI.dll 767A0000 00019000 767A4975 sechost 6.1.7600.16385 ( C:\Windows\SysWOW64\sechost.dll 76820000 00006000 76821782 NSI 6.1.7600.16385 ( C:\Windows\syswow64\NSI.dll 76830000 00110000 76843293 kernel32 6.1.7601.18015 ( C:\Windows\syswow64\kernel32.dll 769D0000 000F5000 769D1865 WININET 8.00.7600.16385 C:\Windows\syswow64\WININET.dll 76AD0000 000A0000 76AE4965 ADVAPI32 6.1.7600.16385 ( C:\Windows\syswow64\ADVAPI32.dll 76B70000 00060000 76B8158F IMM32 6.1.7601.17514 ( C:\Windows\system32\IMM32.DLL 76BD0000 0008F000 76BD3FB1 OLEAUT32 6.1.7601.18679 C:\Windows\syswow64\OLEAUT32.dll 77030000 0000C000 7703238E MSASN1 6.1.7601.17514 ( C:\Windows\syswow64\MSASN1.dll 77060000 00180000 ntdll 6.1.7600.16385 ( C:\Windows\SysWOW64\ntdll.dll Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/ Share on other sites More sharing options...
Mobbstar Posted February 1, 2016 Share Posted February 1, 2016 For starters, FMOD is the sound system and Twitch is a streaming platform. I'm not actually a programmer and hence have no idea what the rest of those dll files do (excpet maybe "kernel"). Toodleo! Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716126 Share on other sites More sharing options...
Arkathorn Posted February 1, 2016 Share Posted February 1, 2016 I suggest you try OpenGL. It is fairly easy to use (once you establish basic knowledge), has cross-platform compatibility, and is commonly used. Another platform you may want to try is Unity, which increasingly many games are being made in. I personally dislike Unity, as it is constrictive and resource hungry, but it may be a path to consider. As to the DLLs, my knowledge matches Mobbstar's. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716137 Share on other sites More sharing options...
Mattew Posted February 1, 2016 Author Share Posted February 1, 2016 7 minutes ago, Arkathorn said: I suggest you try OpenGL. It is fairly easy to use (once you establish basic knowledge), has cross-platform compatibility, and is commonly used. Another platform you may want to try is Unity, which increasingly many games are being made in. I personally dislike Unity, as it is constrictive and resource hungry, but it may be a path to consider. As to the DLLs, my knowledge matches Mobbstar's. My biggest concern against using OpenGL, is that DirectX is a de-facto standart for most of the games in the past and present right now, and that DirectX covers all functionality while OpenGL only handles graphics. What's the point of using OpenGL if I'll still use DirectX for sound and controller support? It will just bring more trouble... I need to research more about that. And what I like about OpenGL, is that it only uses C. It's a bit simplier than C++, which is probably good. Also I heard that OpenGL works better in Wine than Direct3D, but I'm not sure if that matters too much... Unity looks too hardcore for what I'm trying to do. If it supports changing game logic on the fly, I'll definily consider looking into it. It's a feature I'm looking for the most. Twitch I can ignore for now. I have nothing to stream yet. fmod, I heard about it before. Should I try to learn this too, or should I just dig into DirectSound stright away. I don't like layers of abstraction too much, they hide details from me. Especially closed-source ones, through there isn't much difference for me since just having a source ain't solving much. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716145 Share on other sites More sharing options...
Mattew Posted February 1, 2016 Author Share Posted February 1, 2016 I suppose those are for the graphics: libGLESv2.dll libEGL.dll d3d9.dll d3d8thk.dll It's possible that Don't Starve uses only one of them directly, and 3 others are just a dependency. I wish I could see a hierarchy of library usage, instead of just a list. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716146 Share on other sites More sharing options...
Arkathorn Posted February 1, 2016 Share Posted February 1, 2016 1 minute ago, Mattew said: What's the point of using OpenGL if I'll still use DirectX for sound and controller support? If it supports changing game logic on the fly, I'll definily consider looking into it. It's a feature I'm looking for the most. My main objection to DirectX is it's centralization. It's completely Microsoft controlled, and in my experience MS is pretty unreliable. My approach would/will be to use open source libraries such as OpenGL. I'm not sure what you mean by that. Do you just mean a quick Edit/Test cycle? It certainly has that, to a degree, but it' designed for pre-staged, pre-designed maps. Lighting, staging, collision... All of these are done before runtime, so if that isn't what you're looking for, I don't advise it. It's also worth noting that Unity does not support modding to any degree, the final result being very closed source. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716149 Share on other sites More sharing options...
Mattew Posted February 1, 2016 Author Share Posted February 1, 2016 7 minutes ago, Arkathorn said: I'm not sure what you mean by that. Do you just mean a quick Edit/Test cycle? It certainly has that, to a degree, but it' designed for pre-staged, pre-designed maps. Lighting, staging, collision... All of these are done before runtime, so if that isn't what you're looking for, I don't advise it. It's also worth noting that Unity does not support modding to any degree, the final result being very closed source. Yes, something like that, I guess. I was thinking about embedding a text editor inside a game, and changing game logic at runtime with it. It's called Edit And Continue, and Code Swapping. Or something. Didn't really understood what you meant by staging and collision. Unity is probably too costly for me right now anyway. Maybe one day. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716155 Share on other sites More sharing options...
Mattew Posted February 1, 2016 Author Share Posted February 1, 2016 So, I googled libGLESv2 and libEGL, and look what I found! http://gpupowered.org/node/29 https://chromium.googlesource.com/angle/angle Looks like this is an OpenGL->Direct3D converter, and it's called ANGLE. Something made by Google. So dev team used this as a crossplatform 3D rendering API. Interesting. So, ANGLE for 3d, fmod for sound, and what's for gamepad input and network? Gamepad support was added much later (judging by release log and just how everything is designed to be used with a mouse), I wonder if they just used DirectInput for that. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716174 Share on other sites More sharing options...
Mobbstar Posted February 1, 2016 Share Posted February 1, 2016 @Mattew You just blew my mind. Google does rendering stuff?! It's possible to convert one to another?! Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716186 Share on other sites More sharing options...
Mattew Posted February 1, 2016 Author Share Posted February 1, 2016 @Mobbstar Google Co writes code. They needed a crossplatform rendering library for their browser, I guess. I guess it is. They both do almost the same thing, and ANGLE only does a subset of OpenGL. App talks to ANGLE on the OpenGL language, and ANGLE talks to OS on the Direct3D language, it's a translator of sorts. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716195 Share on other sites More sharing options...
Arkathorn Posted February 1, 2016 Share Posted February 1, 2016 4 hours ago, Mattew said: Didn't really understood what you meant by staging and collision. Procedural generation is not done in Unity. Technically it can be done, but it would be abnormally difficult. I was referring to the positioning and collision data of objects/the map, which would normally be created in the editor, as opposed to at runtime. Link to comment https://forums.kleientertainment.com/forums/topic/63635-whats-the-purpose-of-those-dll-files/#findComment-716270 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now