<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://manicpop.org/gewiki/index.php?action=history&amp;feed=atom&amp;title=Ge-next_development</id>
	<title>Ge-next development - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://manicpop.org/gewiki/index.php?action=history&amp;feed=atom&amp;title=Ge-next_development"/>
	<link rel="alternate" type="text/html" href="https://manicpop.org/gewiki/index.php?title=Ge-next_development&amp;action=history"/>
	<updated>2026-10-20T16:28:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manicpop.org/gewiki/index.php?title=Ge-next_development&amp;diff=2194&amp;oldid=prev</id>
		<title>Manicpop at 21:16, 18 October 2026</title>
		<link rel="alternate" type="text/html" href="https://manicpop.org/gewiki/index.php?title=Ge-next_development&amp;diff=2194&amp;oldid=prev"/>
		<updated>2026-10-18T21:16:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:ge-next development}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ge-next&amp;#039;&amp;#039;&amp;#039; continues classic &amp;#039;&amp;#039;Galactic Empire&amp;#039;&amp;#039; as a persistent MajorBBS game. Its 16-bit module and MajorBBS V10 port aim to expose the same game rules while using different host interfaces and, where necessary, different internal representations. This page describes the project&amp;#039;s implementation and maintenance boundaries. For the player-facing version history and features, see [[ge-next]].&lt;br /&gt;
&lt;br /&gt;
== Source lineage and organization ==&lt;br /&gt;
The 16-bit project develops the published classic C code rather than wrapping a classic binary. The 32-bit port is maintained in a separate source tree for MajorBBS V10; it was built with Elwynor Technologies&amp;#039; port of classic GE as a guide. The two ge-next editions are intended to track the same gameplay, but their source files and build products are not interchangeable. A change made in one tree must be reviewed and carried across deliberately. See [[Versions of Galactic Empire]], [[Source code]], and [[Porting Galactic Empire]] for lineage and file-level orientation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GEMAIN.C&amp;lt;/code&amp;gt; owns the module&amp;#039;s host entry points, menus, startup, recurring work, and database lifecycle. &amp;lt;code&amp;gt;GECMDS.C&amp;lt;/code&amp;gt; handles game commands; &amp;lt;code&amp;gt;GEFUNCS.C&amp;lt;/code&amp;gt; contains much of the ship and combat machinery; &amp;lt;code&amp;gt;GECYBS.C&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GEDROIDS.C&amp;lt;/code&amp;gt; handle automated ships; &amp;lt;code&amp;gt;GEPLANET.C&amp;lt;/code&amp;gt; handles planetary records and updates; &amp;lt;code&amp;gt;GELIB.C&amp;lt;/code&amp;gt; supplies geometry and utilities. ge-next also has &amp;lt;code&amp;gt;GESCAN.C&amp;lt;/code&amp;gt; for scans and reports, which was not a separate file in classic GE. &amp;lt;code&amp;gt;GEMAIN.H&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GEGLOBAL.H&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;GEPROTO.H&amp;lt;/code&amp;gt; connect their shared types, state, and declarations. The [[Source code]] page maps files to routines without requiring every detail here.&lt;br /&gt;
&lt;br /&gt;
== Building the 16-bit module ==&lt;br /&gt;
The 16-bit build requires Borland C++ 4.52, its MAKE utility, Turbo Link 7.00, and the MajorBBS/Worldgroup development files and build utilities. The project&amp;#039;s makefile expects the normal BBS directory layout: C sources and &amp;lt;code&amp;gt;MPOGEMP.MAK&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;\WGSERV\SRC&amp;lt;/code&amp;gt;, MSG files in &amp;lt;code&amp;gt;\WGSERV&amp;lt;/code&amp;gt;, and the host&amp;#039;s libraries and scripts in their usual locations. The supplied paths also refer to Borland and Phar Lap support files under &amp;lt;code&amp;gt;\BC45&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;\RUN286&amp;lt;/code&amp;gt;. Set up the BBS development environment so &amp;lt;code&amp;gt;MAKE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tlink&amp;lt;/code&amp;gt;, and the BBS tools are available, and &amp;lt;code&amp;gt;MBBS&amp;lt;/code&amp;gt; points to the BBS directory. The author runs this DOS toolchain under DOSEMU2 on Linux.&lt;br /&gt;
&lt;br /&gt;
Run the build from the BBS&amp;#039;s &amp;lt;code&amp;gt;SRC&amp;lt;/code&amp;gt; directory, not from a detached source checkout. The &amp;lt;code&amp;gt;MKU.BAT&amp;lt;/code&amp;gt; helper in the BBS&amp;#039;s &amp;lt;code&amp;gt;SRC&amp;lt;/code&amp;gt; directory is a convenience wrapper containing &amp;lt;code&amp;gt;make -f%1&amp;lt;/code&amp;gt;, so these commands are equivalent:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
C:\&amp;gt;CD \WGSERV\SRC&lt;br /&gt;
C:\WGSERV\SRC&amp;gt;MKU MPOGEMP.MAK&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The direct invocation is &amp;lt;code&amp;gt;MAKE -fMPOGEMP.MAK&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;MKU.BAT&amp;lt;/code&amp;gt; does not set up the toolchain or change directories; the BBS build environment must already be configured.&lt;br /&gt;
&lt;br /&gt;
The standard &amp;lt;code&amp;gt;MPOGEMP.MAK&amp;lt;/code&amp;gt; compiles the C files into &amp;lt;code&amp;gt;\WGSERV\PHOBJ&amp;lt;/code&amp;gt;. Its &amp;lt;code&amp;gt;ctdll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ltdll&amp;lt;/code&amp;gt; scripts use &amp;lt;code&amp;gt;bcc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tlink&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;MPOGEMP.LNK&amp;lt;/code&amp;gt; supplies the object and library list that produces &amp;lt;code&amp;gt;\WGSERV\MPOGEMP.DLL&amp;lt;/code&amp;gt;. The build includes &amp;lt;code&amp;gt;GEDROIDS.C&amp;lt;/code&amp;gt; and does &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; link &amp;lt;code&amp;gt;GEARENA.C&amp;lt;/code&amp;gt;. It does not define &amp;lt;code&amp;gt;GE_ARENA&amp;lt;/code&amp;gt;, so &amp;lt;code&amp;gt;#ifndef GE_ARENA&amp;lt;/code&amp;gt; paths in shared files provide the persistent-game behavior.&lt;br /&gt;
&lt;br /&gt;
The makefile also invokes &amp;lt;code&amp;gt;wgsmsx&amp;lt;/code&amp;gt; for the &amp;lt;code&amp;gt;MPOGEMSG.MSG&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MPOGEHLP.MSG&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;MPOGESHP.MSG&amp;lt;/code&amp;gt; sources and their generated headers. Main messages and options, help, and ship classes are separate resources. &amp;lt;code&amp;gt;GEMAIN.H&amp;lt;/code&amp;gt; selects the matching headers and compiled message files; changing an identifier, format argument, or class-table shape requires compatible resources and code, not just a replacement text file. See [[Configuring Galactic Empire]] and [[Ship class configuration]].&lt;br /&gt;
&lt;br /&gt;
ge-next purposefully retains all &amp;lt;code&amp;gt;ifdef&amp;lt;/code&amp;gt;s necessary to compile on MajorBBS 5.x, so while it should compile in that environment, it has not been tested.&lt;br /&gt;
&lt;br /&gt;
=== Building ge-arena ===&lt;br /&gt;
From the same configured &amp;lt;code&amp;gt;\WGSERV\SRC&amp;lt;/code&amp;gt; directory, run &amp;lt;code&amp;gt;MKU MPOGA.MAK&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;MAKE -fMPOGA.MAK&amp;lt;/code&amp;gt;) instead. &amp;lt;code&amp;gt;MPOGA.MAK&amp;lt;/code&amp;gt; builds the shared files with &amp;lt;code&amp;gt;-DGE_ARENA&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;\WGSERV\GAOBJ&amp;lt;/code&amp;gt;, adds &amp;lt;code&amp;gt;GEARENA.C&amp;lt;/code&amp;gt;, and links &amp;lt;code&amp;gt;\WGSERV\MPOGA.DLL&amp;lt;/code&amp;gt;. It does not link &amp;lt;code&amp;gt;GEDROIDS.C&amp;lt;/code&amp;gt;. The build generates headers from &amp;lt;code&amp;gt;MPOGAMSG.MSG&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MPOGAHLP.MSG&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;MPOGASHP.MSG&amp;lt;/code&amp;gt;; use the corresponding arena message resources with the DLL. Keeping the two object directories separate prevents the wrong compile-time variant of a shared file from being linked. See [[ge-arena development]] for the code and resource differences.&lt;br /&gt;
&lt;br /&gt;
== Building for MajorBBS V10 ==&lt;br /&gt;
The 32-bit tree uses a Visual Studio &amp;lt;code&amp;gt;mpogemp.vcxproj&amp;lt;/code&amp;gt; project instead of the 16-bit make/link pair. It compiles the corresponding shared C files, includes &amp;lt;code&amp;gt;GEDROIDS.C&amp;lt;/code&amp;gt;, excludes &amp;lt;code&amp;gt;GEARENA.C&amp;lt;/code&amp;gt;, and links against [https://github.com/TheMajorBBS/MBBS-v10-module-SDK the MajorBBS V10 SDK libraries] and module definition. This project also leaves &amp;lt;code&amp;gt;GE_ARENA&amp;lt;/code&amp;gt; undefined. The V10 host uses different entry-point conventions, type widths, packing, and [[Btrieve]] record sizes, so this port is not simply the 16-bit build with a wider compiler. Architecture-specific code should preserve the same visible rules; [[Integer and storage assumptions]] and [[Data structures]] document the important boundaries.&lt;br /&gt;
&lt;br /&gt;
== Module identity and persistent records ==&lt;br /&gt;
The standard module identifies itself to MajorBBS separately from classic GE and [[ge-arena]]. In the shared &amp;lt;code&amp;gt;GEMAIN.C&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GEMAIN.H&amp;lt;/code&amp;gt;, the non-arena build selects the &amp;lt;code&amp;gt;mpoge&amp;lt;/code&amp;gt; module block, &amp;lt;code&amp;gt;MPOGEMP.MDF&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MPOGEMSG.MCV&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;MPOGE&amp;lt;/code&amp;gt; data prefix, and the standard roster and menu files. That separation lets the games coexist without sharing live records or message IDs. The 16-bit and 32-bit ge-next packages also use different record layouts and clean-template conventions; do not treat their databases as drop-in substitutes.&lt;br /&gt;
&lt;br /&gt;
Unlike ge-arena, standard ge-next retains long-lived user, ship, planet/sector, and mail databases. &amp;lt;code&amp;gt;MPOGETEA.DAT&amp;lt;/code&amp;gt; stores teams as a fixed-width text file rather than a Btrieve database. Ships, colonies, user preferences, cash, and scores survive sessions; planet production and other scheduled work advance this saved game over time. A module reload or new build therefore has to respect existing record sizes, keys, and migrations. [[Database files]] covers the operational file set, while [[Data structures]] explains its layout.&lt;br /&gt;
&lt;br /&gt;
== Shared code and arena boundaries ==&lt;br /&gt;
The same 16-bit ge-next source tree can produce ge-arena by defining &amp;lt;code&amp;gt;GE_ARENA&amp;lt;/code&amp;gt; and using the arena build target. Shared code is retained for movement, scanning, damage, ordnance, and other mechanics; conditional sections select where lifecycles, commands, databases, NPCs, or planets truly differ. The arena-only &amp;lt;code&amp;gt;GEARENA.C&amp;lt;/code&amp;gt; is not present in an ordinary ge-next binary. This arrangement allows a common bug fix to benefit both games without copying whole routines, but a shared edit still needs a review of its effects in both builds. See [[ge-arena development]] for that build&amp;#039;s resources and hooks.&lt;br /&gt;
&lt;br /&gt;
== Engineering and verification ==&lt;br /&gt;
Inherited defects are checked against classic source and, when relevant, against observable classic behavior before being changed. Corrections should be separated from deliberate balance or feature changes and recorded in the [[Classic bug database]] or [[ge-next release history]] as appropriate. The original causes matter: a port that only hides a symptom may retain the broken record mutation or event ordering.&lt;br /&gt;
&lt;br /&gt;
The legacy host is single-threaded and uses globals as shared workspace; maintaining it does not require threading or a wholesale rewrite of that state. Particular care is needed around MajorBBS callbacks, message-buffer ownership, delayed projectiles, Btrieve operations, cleanup, and record limits. The 16-bit edition is tested with MajorBBS and [[MBBSEmu]]; the 32-bit edition targets MajorBBS V10. A change to shared behavior should be checked in both architectures and in ge-arena where the code is also compiled. See [[MajorBBS integration]], [[Game timing]], and [[Porting Galactic Empire]] for the wider host contract.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Source code]] and [[Data structures]]&lt;br /&gt;
* [[Configuring Galactic Empire]] and [[Database files]]&lt;br /&gt;
* [[ge-arena development]]&lt;br /&gt;
* [https://github.com/manicpop/ge-next 16-bit source and releases]&lt;br /&gt;
* [https://github.com/manicpop/ge-next32 MajorBBS V10 port]&lt;br /&gt;
&lt;br /&gt;
{{GE navigation}}&lt;br /&gt;
[[Category:ge-next]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Manicpop</name></author>
	</entry>
</feed>