Jump to content

martyj

Members
  • Posts

    544
  • Joined

  • Last visited

Everything posted by martyj

  1. What does Context::GetWidth() and Context::GetHeight show compared to Window::GetWidth() and Window::GetHeight()?
  2. @macklebee is that on the link I posted? Here is my friend running the app. As you can see there is a steam_appid file. The message that prints is around this code. if (!Steamworks::Initialize()) { System::Print("Error: Failed to initialize Steam."); return false; }
  3. Even with the file there, it won't work. I'll try having it set to 480. Right now it is set to 355500. Edit ------------- Even with the value set to 480 the game doesn't work. You can download it here if you want to give it a shot. http://dl.worldfactions.net/pre_alpha_0.2.7z
  4. I cannot get Steamworks to initialize on anybody else steam account. Do I have to have an app approved through greenlight in order for users to play my game attached to steam?
  5. Window* window = Window::Create("Stuff") Context* context = Context::Create(window);
  6. I've updated my info in my profile, although you really don't have to send me anything. It was no trouble at all . Just happy to have this support.
  7. Can't wait to use it. Of course you have permission.
  8. Why use an external library when it can be added to the engine itself? That way nobody else has to add their own support for the audio. Also it could work in 3D whereas that library is 2d only.
  9. So here is what I have at the moment. http://martyj.net/OggSound.zip The sample program is in the OggSound folder. The ogg decoding code basically comes from this link https://svn.xiph.org/trunk/vorbis/examples/decoder_example.c With some slight modification to improve readability a tiny bit and to integrate it with Leadwerks Streams. The sample program requires two static libs. libogg_static.lib and libvorbis_static.lib The way it works is that ogg is the container format and vorbis is the actual compressed audio data format. They can be found at this path relative to that folder. libvorbis-1.3.5\libvorbis-1.3.5\win32\VS2010 and libogg-1.3.2\libogg-1.3.2\win32\VS2010 Just open the project in VS2015, fix the include and linking paths. Build and Profit! When I run my demo app for some reason OpenALSound isn't initialized with my example Sound class using ogg file, but it works great for wave. I've compared the output in Sound->data, and it matches an expected decompressed audio file using 16 bit little endian PCM @ 44100hz. So hopefully Josh can figure that out to get it to actually play. If there's anything else I can do to help implement this, let me know.
  10. It's not a switch with vs2015, it's a switch with Leadwerks integrating OpenSSL. Both happened around the same time.
  11. @cassius Project->Properties->Linker->Input Then select Additional Dependencies.
  12. I found it really hard to make your own zip. In fact I was unable to make my own. If someone has a tutorial of how to do this, it would be great! ------------- In other news, am working on implementing Ogg audio files. I've separated the Sound::Reload function that Josh sent into two different code paths for audio importing. I wrote a test script to import two audio files and compare their data to make sure the decompression is working. I've also just compiled libogg and libvorbis to be used into my program. I should have a working version some time tomorrow hopefully.
  13. If I write a bank or a stream class that decompresses ogg would you implement it into Leadwerks? What class should I use as a base?
  14. World Factions only has 250 MB of Audio as wave data. The conversations in WF for 3 quests amounts to 19 MB in files. In fact music is the biggest usage of space. 10 songs @ 200 MB. Also 1 GB for a game is fairly small. Isn't ESO like 60 GB? I think the thing that would be better than having compressed audio, is the ability to "update" the game without needing to download all the assets again. Considering ADG is on Steam now, users will have to start updating any time there's a patch. @Josh, does Leadwerks use Streams to play Audio with the Sound class? Or is all the wave data loaded into memory when the sound is loaded?
  15. So there's been some instance of my code which would be extremely beneficial to have unit testing for. Especially in the networking aspects of my game. Along with some Generic libraries. I was wondering if anyone has used unit testing in C/C++. Google Test looks nice, except for it doesn't work with VS 2015 installed with NuGet. I've used CUnit before. Has anyone else used something else? I'd like something with very minimalist setup. Preferably not having to list all of my tests. Just write code, then run it.
  16. martyj

    evp.h

    You have to add the following to your C++ Include Path. $(LeadwerksHeaderPath)\Libraries\openssl\include You also have to add the following libraries in your Linker Input dependencies. msimg32.lib libcryptoMT.lib libsslMT.lib Rpcrt4.lib crypt32.lib libcurl.lib ws2_32.lib
  17. Maybe I just don't have a graphics eye, what am I not seeing that is an apparent problem?
  18. @josh. I wouldn't expect object scripts to be ran in edit mode, but to pause all execution of them, edit the map, then resume the scripts when the editing is finished.
  19. So I've wanted this feature in an engine for a really long time, it's just a very difficult task. It would be nice if Leadwerks could have the ability to modify the map then immediately play the game without having to run a separate application. If you could "pause" your game logic in editing mode, then resume to test out new features. I think the phrasing would be seamless integration. Lua code would be easy to reload into the engine, whereas with C++ you would have to use calls like dlopen http://man7.org/linux/man-pages/man3/dlopen.3.html to reload compiled binaries. This may be come easier with the C++ Action Class. I could modify my game to support this, but I would require the ability save a Map out. It would be nice to also toggle Leadwerks UI elements such as the Assets pane, or terrain editing. At least for me, it would save a ton of time to not have to reload the game to test a feature. I spend a lot of time in my loading screen.
  20. Does Analytics only work if Steam is initialized?
  21. Might be easier and more reliable to store them in a queue, then use an std::thread which checks the queue for events to be sent off. That way if the game crashes, (which in C++ land happens a lot), you can still have the data.
  22. Are network requests ran on a separate thread? Or will this be something that could lock up the UI?
  23. I would buy an AMD APU instead of an R7 240. It would be cheaper overall. http://www.newegg.com/Product/Product.aspx?Item=9SIA1N85343534 Way better graphics performance. $50 cheaper. DDR4 will NOT work on AMD processors. You need DDR3. 8 gigs is plenty for most users.
  24. I though it would be best to share a lesson that I've learned while working on the networking aspect of my game. In my game I use C sockets for network code. The server side is written in Golang. With game networking, you can't really use JSON as a data layer as the performance hits for serializing and deserializing data are too big. So the best option is to write out your data in a "file" struct format. My game has a few types of structs. PacketHeader, PlayerPosition, PlayerInit, PlayerQuit, PlayerMessage, ItemPickup, ItemDrop, StatusEffect. I ran into a problem with writing code to handle players dropping items across all clients. Sample Struct: struct ItemDrop { unsigned short itemId; float positionX; float positionY; float positionZ; } On the Golang side the struct was something like this: type ItemDrop struct { ItemId uint16 X float32 Y float32 Z float32 } They look exactly alike! In C++, sizeof(ItemDrop) => 16. In Golang, unsafe.Sizeof(ItemDrop) => 16 Everything should be perfect right? No. Notice how there are 3 float32s giving us 12 bytes, a uint16 should only be two bytes. Yet it takes up 32 bits of data. On network serializing: binary.Size(ItemDrop) => 14. This means that when the C++ side sends 16 bytes, golang reads 14 bytes, then re-transmits as 14 bytes. There are two problems that occurs. When a client is expecting to read a packet size of 16, it blocks on the read when Golang only sends 14 bytes. This also means that when Golang reads 14 bytes instead of the full 16, it corrupts future packets from that buffer by shifting the data 2 bytes. So why Golang for the server code? Easier to write. C/C++ networking is a pain. Golang has the native support that C/C++ has, with nice modern libraries built out for it. Because of situations like this, I will be re-writing the network code for client and server to use golang.
  25. I am really excited for this functionality. I'm delaying a demo version update for this content as well. If there's anything more I can do to help, let me know!
×
×
  • Create New...