lördag 22 februari 2020

Connect 4 Forever

Okay so creating this Connect 4 game using SDL is taking way longer than I thought. However, it is starting to come together. I realize that my C# .DLL game logic file is not that flexible. What I want to do in the game is to point and click with the mouse to select pieces to drop. The DLL is quite adapted to accept input from the console, but it is possible to use it in a way that don't require the console. Using the console helps when testing out the code, but for exporting the functionality, it is not good to require any console input at all ever. I also realized that exporting the client/server functionality may be even more complicated. For these reasons, it may be possible that I just finish off the single player aspect or playing on the same computer aspect. As I have other things to achieve, and this board game may not be that useful honestly speaking.

torsdag 6 februari 2020

Slow Board Game Progress

After looking at Win2D for a bit, I realized that it's perhaps not for me. I would need to learn quite a bit about how the Win2D API works, and it seems to be a bit slow to compile. I felt that I either had the choice of taking the easy Unity route or doing something more radical. I really do not want to have a Unity splash logo for something as simple as a board game, like the one I am currently making, "connect four". I knew from earlier about SDL since I had made an entire platformer gaming using it. Therefore, I decided to take my server-client game in C# and transform it into a DLL file (easy actually). Then I created a C++ project and imported the DLL file, the bad thing about this approach is that I have a setting in Visual Studio called crt. Having crt enables garbage collection for the DLL and makes it easy to access internal C# methods and classes with C++. However, crt supposedly also makes the application less optimized in terms of performance. For board games or simple applications, I strongly think that no one will notice though. So far everything is going fine, it is taking longer creating everything as well as the UI from scratch, but I am having a lot of fun coding it. More fun than I think I would have with doing things the easy way with Unity. Also, I plan to use Lua to load UI elements from a text file. Whenever I make edits to the text-file while the app is running, I will try to make it update the window for me. This way, I will be able to make edits to the UI in real-time so that I do not have to re-compile the program every time I want to visualize the changes I make to the code.

måndag 3 februari 2020

Fast UI

Lately I have been finishing up the base code for my connect four game. The game logic along with a basic controller went really fast to complete. I am using C# to code this, and it's convenient to use. Perhaps it's not suitable for super-optimization like C++, but it's not often that anyone notice a difference for simple applications. I think C# is perfect for creating logic for board games. Although, the AI would benefit from being created separately with C++ and then linked via a DLL. My current AI only make random moves so there’s nothing to worry about there yet when it comes to performance. Creating a good AI can hog quite a bit of CPU resources. Anyways, the basics of the game is working. Also, I created a way to ping sweep a LAN (with some help from StackOverflow). I do that to retrieve all IPs that are easily available. These addresses are used to make it possible to easily find and play the game with others on the same network. The ability to manually connect to an IP might be added, but I think this will only benefit advanced users that are familiar with port forwarding. I did things a bit overly complicated by using UDP instead of TCP for internet connection. UDP is good to get used to if I plan to make real-time multiplayer games. Right now, most if not all important things work smoothly. The internet part could be fixed somewhat for handling special cases like loss of connection. The main thing that remains now is to add visuals. I could do a full-scale 3D app, but it would take some time doing it with C++, OpenGL and GLFW. Therefore, I did some research online and found an API called Win2D. Win2D is a free to use library that makes it simple to render 2D graphics and UI elements. I was first considering using Unity to quickly create 2D games, but I felt that Unity would be overkill for board games, and I also don't want to have to pay Unity money in the long run.

I haven't started using Win2D, but I will check it out. I think once I get a grasp of using it, I will quickly be able to create a standard UI that I can use for other upcoming games as well. Then, I will be able to produce maybe one board game per week and release them for free on the Microsoft Store. There already exist many board games on the MS store, but I hope to gain attention with my "FullRune" trademark and internet capabilities. Once I have become popular, I may be able to charge money for in-game items. At the very least this ought to boost my CV as a .NET C# developer. My favorite language is still C++ nonetheless.