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.

fredag 31 januari 2020

Connect Four

The thing that I have been working on lately is a simple Connect Four game. The game logic works and was quite simple to implement using C#. I used the Model-View-Controller pattern when I created the logic. I have an idea which is to start making board games, rapidly, while also allowing players to compete against each other over LAN connections. If I create many of these board games in a way that ooze quality, a lot of people might just start downloading these. Presumably, the market for board games is rather big, but the competition still high. However, most free board games are of very low quality, so if I make things good, players may start searching for games specifically made by me. I guess the main goal of this project is to get a good foundation of network programming while gaining attention.

onsdag 29 januari 2020

Unreal Engine 4 & Future Plans

Someone told me online that I should check out Unreal Engine 4, as I have pretty much used Unity as a professional game engine. So, I did check it out, downloaded it and installed necessary files. I noted that I could not use the game engine properly on my laptop since it was too demanding. My laptop does not have a graphics card which probably is the biggest explanation to why. Anyways, it did work on my desktop computer. I set up some example programs and looked up an Unreal tutorial series on Udemy. There was a sale in January 2020 where all courses only cost 119 dollars instead of their normal prices. So, it was not really a big deal buying one. I did not follow all the videos completely, but I did notice some peculiarities. In Unreal Engine, you can apparently only have one animation per skeleton. Clearly, it would be much better if an animation could apply to any skeleton. This is a major issue, but I guess it's not much easier in other engines either. Unity has a technology they call Mecanim that allows the same animation to be used on different models. When I tried Mecanim, I did not get 100% desirable results.

I fast forwarded in the Unreal tutorial series. It appeared to me that at least 50% or more of the development process when using this engine involves setting up something called Blueprints. This is not programming, but instead a copy/paste process where you connect dots. While it could probably be used efficiently when creating games, it poses no intellectual challenge that I can appreciate. When you do everything from code, you get to solve puzzles in your head. Only connecting dots however quickly becomes very boring in my opinion, and it's not something that I am interested in spending a lot of time doing at all. Also, most of the tutorial heavily focused on technologies that are heavily coupled to the Unreal engine, for instance when creating multiplayer, you seem to heavily rely on existing functions only for the engine. This makes it very difficult to separate code logic from the engine itself or have detailed knowledge about how the network programming works. Maybe I haven't seen enough videos about this, but so far this is the overall impression that I got.

The dilemmas that I am considering as for today are what type of game I should try to make. While a 3D game is fully possible, it would require a lot of animations, and I am not interested in creating animations. It would be helpful to find an animator that works for free, but that is not a reasonable thought. I know that a character should be cosmetically customizable, because if it isn't there is little motivation to level up or use money in a game. By having upgrades games quickly becomes addicting. This is sort of what I want to achieve, make a game addicting.

Intuitively, I strongly believe that I perhaps should go back to creating 2D games, either completely from scratch or by using Unity where I get to do more coding.

torsdag 23 januari 2020

GunzGame: Delaying

It might happen that I put this project on ice. If not, there will probably be major changes and simplifications to how this game is made. The main issue right now is that the playable character would need quite a bit of animations. I am not a fan of creating animations, and have little interest in learning that skill right now. So the options that remain are to either find someone to make the animations for me or make things simpler. For instance, instead of allowing swords, I could start by just letting the player have a gun. I found a free Unity asset that may be interesting, but it requires me to update my current Unity version. Sadly, my computer disk space has been full for a long time. Will probably need to free it up a bit...

onsdag 22 januari 2020

Gambling in Games

A lot of games feature some element of randomness combined with betting. Examples being poker, roulette, loot crates (CS:GO) etc. Not that I would call poker or roulette real games. Or well, maybe card games can be seen as games, but roulette is just like the lottery. I do like card games, perhaps there should be more of them easily available for multiplayer online. I guess I could make a website app via Unity pretty easily, but the server would need to be hosted somewhere. I guess I could host it on my Raspberry PI now that I think of it. Card games are mostly turn-based and people don't notice if turn-based games lag at all. Apparently you can get some good ideas while you are writing. On the flip side, it would not bring in any money, but it would be a merit to have people play my games.

Should there be more gambling involved in games? GTA V had an update where they added a casino. Early on after this update, a lot of cheaters gathered millions or billions of GTA money from the casino since it was not made securely. I am not sure if they completely fixed that, but shortly after they also started banning people who were cheating using the casino. At least people have claimed to be banned. Unless you are cheating, there is not really much of a reason to gamble in GTA since you will just end up loosing money. Gambling could be done if you play against other players.