summaryrefslogtreecommitdiff
path: root/starshatter_open_dev_update_2022_04.html
blob: d9100aee7fb88514cdef69cc31814f0588fa133f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="aki">
<meta name="tags" content="starshatter, starshatter: the open source project, development blog">
<meta name="published-on" content="2022-04-08T20:13:00+02:00">
<link rel="icon" type="image/png" href="favicon.png">
<link rel="stylesheet" href="style.css">

<title>Starshatter: The Open Source Project - Dev Update - April 2022</title>

<header>
<nav><a href="https://ignore.pl">ignore.pl</a></nav>
<time>8 April 2022</time>
<h1>Starshatter: The Open Source Project<br>Dev Update - April 2022</h1>
</header>

<article>
<p>Around two months have passed since last development update for my for of Starshatter source. In this time I had a
few activity spikes and got some work done. Sad news I'm still at the stage of breaking things rather than implementing
novel things in the game. This theme will keep up until I will feel comfortable with the project structure enough to
add new things to the pile.
<p>Let's get over highlights!
<h2>MSVC Support</h2>
<p>One of the first things I did when I started working on Starshatter was switching to CMake and then MinGW. I left
pieces of MSVC configuration in CMake files and I never actually tested them. Reason was very simple - I have only
Linux and Unix machines at home. That changed and of course first thing I did was setting up build environment there.
<p>I'm not consistent with builds with MSVC - my main focus is still MinGW - still, at least now I have confidence that
CMake configuration works and that the description in readme is valid. But there's one more thing coming from me having
this environment...
<h2>Magic Editor Builds</h2>
<p>Yup, the main obstacle in building Magic in MinGW was the fact that it is using AFX. MSVC environment enabled me to
try building it, fix some mistakes in CMake, do some clean-ups, and here we are.</p>
<img src="starshatter_open_dev_update_2022_04-1.png" alt="Magic Editor successfully running">
<h2>Headless Server Separated from Game Executable</h2>
<p>Until now <i>Starshatter.exe</i> (or <i>Stars45.exe</i>) supported <code>-server</code> CLI option that launched
game in a dedicated server mode with a small window. It used WinApi to exist and I just couldn't tolerate that. It had
to be purged. In its place I added new executable <i>Starserver.exe</i> that operates in console mode. I pretty much
kept removing and cutting the class that implemented the server until I got rid off most of the unwanted parts. After
that I shuffled some interface methods around and this allowed me to cut the structure of the project creating a new
library called <b>StarsEx</b> containing most of the logic and two modules producing own executables:
<b>Starshatter</b> and <b>Starserver</b>.
<p>The plan for now is to keep cutting the <b>StarsEx</b> module in order to limit strong relationships within it,
which in turn will enable me to create new smaller modules that will focus on certain functionality like the current
<b>NetEx</b>. I designated a milestone in this effort which I call "a headless server," which is basically the
<i>Starserver.exe</i> but it doesn't link directly to DirectX or WinApi libraries. Meaning I should be able to build it
on Linux host.
<h2>Overall Modernization and Other Useless Refactoring</h2>
<p>At all time I keep in mind increasing overall code quality in light of modern C++ standards. I keep moving towards
C++17 and standardized interfaces (e.g., POSIX). This effort includes the shuffles I mentioned above, but other than
the server split there are two more highlights in here: both <b>NetEx</b> and <b>FoundationEx</b> build under Linux
now.
<p>For best description of structure changes see <a href="https://git.ignore.pl/starshatter/">the repository</a>. Even
better, check the log - I sometimes write more detailed explanations of why I do certain things, especially when I
think it might not be clear in future or if there are many good options.
<h2>Website Launched</h2>
<p>This happened some time ago, but I sit down and created a website for the project. You can see it
<a href="https://ignore.pl/starshatter/">here</a>. It includes downloadable pre-built executables of the game.
<h2>What's Next? And Some Loose Ideas</h2>
<p>My main focus remains on getting building Starshatter fully on Linux. I want to accomplish it by first getting a
completely headless dedicated server working. The intent is that it will imply a good enough separation of rendering
and controls from simulation and overall game logics.
<p>Other than that, I started thinking about some fun stuff. First being Opentrack/Freetrack support for virtual
cockpit. Second being hosting multiplayer games each few weeks or so. Last being starting a Discord server, mostly to
support these multiplayer sessions. I'm still waiting and grokking these ideas. I'll keep you updated.
</article>
<script src="https://stats.ignore.pl/track.js"></script>