| author | b0in
<b0in@proton.me> 2023-11-25 01:12:24 UTC |
| committer | b0in
<b0in@proton.me> 2023-11-25 01:12:24 UTC |
| parent | 4e801502d8ff1a0f1d1444e3904e87aa7555b333 |
| crow.game.site/src/site/apt/faq.apt | +1 | -5 |
| crow.game.site/src/site/apt/index.apt | +2 | -2 |
| crow.game.site/src/site/markdown/devlog.md | +3 | -0 |
| crow.game.site/src/site/markdown/devlog/2023-11-24.md | +103 | -0 |
| crow.game.site/src/site/resources/bgtexture.png | +0 | -0 |
| crow.game.site/src/site/resources/css/site.css | +0 | -73 |
| crow.game.site/src/site/site.xml | +12 | -1 |
| pom.xml | +7 | -0 |
diff --git a/crow.game.site/src/site/apt/faq.apt b/crow.game.site/src/site/apt/faq.apt index b5bee9d..14d19e9 100644 --- a/crow.game.site/src/site/apt/faq.apt +++ b/crow.game.site/src/site/apt/faq.apt @@ -29,8 +29,4 @@ FAQ I am currently writing against a client named 2021-11-05_Ragexe_1636095152_patched.exe but am working writing lots of version-aware hooks based on existing rathena code. - (TODO: include patchset list if necessary) - -* Who did your website? Can I pay them thousands of dollars to do mine? /sarc - - It is purposefully OK. I'm not beating myself up over it. + (TODO: include patchset list if necessary) \ No newline at end of file diff --git a/crow.game.site/src/site/apt/index.apt b/crow.game.site/src/site/apt/index.apt index 4eff39d..4fe2358 100644 --- a/crow.game.site/src/site/apt/index.apt +++ b/crow.game.site/src/site/apt/index.apt @@ -4,9 +4,9 @@ About * Downloading the crow.game source code - You can download the source code here: {{https://b0in.xyz/crow/crow-game-latest.tar.gz}}. + You can download the source code here: TODO: link the source code download. * Binary releases: There is an OMNIBUS release which contains all the existing work so far as a runnable-jar - here: {{https://b0in.xyz/crow/releases/crow-game-omnibus-2023NNNN.tar.gz}}. \ No newline at end of file + here: TODO: build+link the runnable omnibus jar. \ No newline at end of file diff --git a/crow.game.site/src/site/markdown/devlog.md b/crow.game.site/src/site/markdown/devlog.md new file mode 100644 index 0000000..dbac497 --- /dev/null +++ b/crow.game.site/src/site/markdown/devlog.md @@ -0,0 +1,3 @@ +## Development Log + + * [devlog/2023-11-24.html](devlog/2023-11-24.html) - b0in \ No newline at end of file diff --git a/crow.game.site/src/site/markdown/devlog/2023-11-24.md b/crow.game.site/src/site/markdown/devlog/2023-11-24.md new file mode 100644 index 0000000..aca624c --- /dev/null +++ b/crow.game.site/src/site/markdown/devlog/2023-11-24.md @@ -0,0 +1,103 @@ +## Development Log - 2023-11-24 + +Author: b0in + +### The first module! + +I have the first module up, the API for the extensible codec. The server protocol +is made up of a few different groups of packets, some optional, so this shared API +provides a way for our individual servers to define their own packets and expose them +to the core netty TCP server. + +### Thoughts + +I have a proof of concept working that is the full login workflow. It has been a unique challenge +separating out this proof of concept into a more thought out, documented codebase. + +All the maven scaffolding has been a nightmare, but now I have a working maven site that I +can write with, hit save, and see results almost immediately. This is what you are +reading now! + +### Features brainstorm + +As I mentioned in the FAQ, I like the idea of having a standalone runnable jar. So some +brainstormed features have this in mind + +Embedded DB: A persistence layer based on an existing embeddable +Java DB. H2, Derby, HSQLDB... these are some old classics. Nitrate looks neat but rocksdb +requires JNI (can use mvstore, same as H2). + +Admin interfaces: A nicety and a way for quick configuration and bootstrapping. Both web +and textual interfaces, with the latter possibly being provided via OSGI and GoGo. + +### Planned modules + +We have a few planned modules I'll list here and their jobs and their statuses. Anything +unlisted would be considered near-0% completed. + +#### crow.game.codec.api - [90%] + +The shared API for serializing and deserializing packets. The bottom contains +an example of a packet handler for Ping. + +#### crow.game.codec.netty - [10-20%] + +The netty specific code (FrameCodec, PacketCodec, etc.) The code is working and done +but needs to imported in to this repository. + +#### crow.game.compat.rathena.proto - [1-10%] + +This is the packet specification for the rathena-specific calls, specifically used +for HA packets between the login, char, and map servers. + +#### crow.game.compat.rathena.components - [1%] + +The rathena components which implement behavior that would make your servers compatible +with existing rathena servers. This includes DB connectivity and querying, logic handlers +and workflow systems for connecting to and listening for connections from other servers. + +There is a proof-of-concept as part of the larger login server, but it needs separation +and design. + +#### crow.game.server.common - [1%] + +Common server components (TCP handlers, lifecycle management). + +#### crow.game.server.login - [1%-10%] + +The server which speaks the login protocol expected by the client. This has a +proof-of-concept working but requires some decoupling from the rathena specific parts +as well as error handling and in-memory state management. + +#### crow.game.release.omnibus - [0%] + +This would be the release of 100% of any server and client that is implemented as a +runnable JAR. + +### Example: PingPacketHandler.java + +This is a working packet handler for the Ping operation (`0x2719`). It's a 0-length +packet, once you remove the packet identifier. It is NOT packet version specific +so the simple `rule()` implementation works. And our needs in fromPacket and toPacket +are equally simple. + +```java +public class PingPacketHandler implements PacketHandler<Ping> { + @Override + public Ping fromPacket(Context context, ByteBuf buffer) { + // The ping packet is 0-length and requires no reading from + // the buffer. + return new Ping(); + } + + @Override + public void toPacket(Context context, ByteBuf buffer, Ping t) { + // The ping packet is 0-length and requires no writing. + } + + @Override + public PacketRule rule(Context context) { + return PacketRule.Static(0x2719, /*length=*/0, Ping.class); + } +} +``` \ No newline at end of file diff --git a/crow.game.site/src/site/resources/bgtexture.png b/crow.game.site/src/site/resources/bgtexture.png deleted file mode 100644 index 5456977..0000000 Binary files a/crow.game.site/src/site/resources/bgtexture.png and /dev/null differ diff --git a/crow.game.site/src/site/resources/css/site.css b/crow.game.site/src/site/resources/css/site.css index 73af044..e69de29 100644 --- a/crow.game.site/src/site/resources/css/site.css +++ b/crow.game.site/src/site/resources/css/site.css @@ -1,73 +0,0 @@ -body { - width: 900px; - margin: 0px auto; - margin-top: 20px; - margin-bottom: 20px; - border: 1px solid grey; - padding: 20px; - box-shadow: black 4px 4px 2px; - background-color: white; -} - -@media only screen and (max-width: 600px) { - body { - max-width: 90%; - padding: 10px; - box-shadow: none; - margin-top: 5px; - margin-bottom: 5px; - } - #leftColumn { - width: 80%; - float: none; - overflow: none; - margin: 0 auto; - margin-top: 20px; - } - - #bodyColumn { - margin-right: 30px; - margin-left:30px; - } - - #breadcrumbs { - width: 80%; - margin: 0 auto; - } - - #bannerLeft, #banner { - font-size: medium; - font-weight: bold; - margin: 0px auto; - width: 80%; - } -} - -html { - background-color: #ddbdbd; - background-image: url("../bgtexture.png"); - background-blend-mode: multiply; -} - -h2, h3, h1 { - border: none; - background-color: transparent; - padding: 2px; - text-decoration: underline; -} - -.poweredBy { - display: none; -} - -#navcolumn li.none { - padding: 5px; -} - -#navcolumn li.expanded { - padding-top: 5px; -} - -#navcolumn li.collapsed { - padding-top: 5px; -} \ No newline at end of file diff --git a/crow.game.site/src/site/site.xml b/crow.game.site/src/site/site.xml index 61ec02e..4f51b18 100644 --- a/crow.game.site/src/site/site.xml +++ b/crow.game.site/src/site/site.xml @@ -4,16 +4,27 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 https://maven.apache.org/xsd/decoration-1.3.0.xsd"> + <!-- TODO: make a custom maven skin! --> + <skin> + <groupId>org.apache.maven.skins</groupId> + <artifactId>maven-fluido-skin</artifactId> + <version>1.12.0</version> + </skin> + <version position="none"/> <bannerLeft> <name>Crow Game Server (crow.game)</name> </bannerLeft> - <publishDate position="right"/> + <publishDate position="left"/> + <custom> + + </custom> <body> <menu name="Overview"> <item name="About" href="index.html" /> <item name="FAQ" href="faq.html" /> + <item name="Devlog" href="devlog.html" /> </menu> <menu ref="reports"/> <footer><!-- x --></footer> diff --git a/pom.xml b/pom.xml index 0603779..0a65414 100644 --- a/pom.xml +++ b/pom.xml @@ -94,6 +94,13 @@ <configuration> <siteDirectory>${project.basedir}/crow.game.site/src/site</siteDirectory> </configuration> + <dependencies> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-module-markdown</artifactId> + <version>1.12.0</version> + </dependency> + </dependencies> </plugin> </plugins> </build>