Source Code for Populous for Windows CE / Dreamcast Released
github.com
github.com
If you don't have three hours to spare and all you want to know about is Godus then, helpfully, the documentary is also available in several parts (which, I believe, was its original format). Godus is covered in part 4: https://www.youtube.com/watch?v=V9ysOEFJhFY.
Bit of a sad tale overall. Nevertheless, for reasons I've explained at https://news.ycombinator.com/item?id=24377333, and despite all of this history, Peter Molyneux will always remain something of a legend to me.
You should also do yourself a favor and read John Walker's interview on RPS, which is absolutely brutal:
https://www.rockpapershotgun.com/peter-molyneux-interview-go...
(I miss that era of RPS)
It's a very good lesson in managing expectations and planning ahead. I don't ever want to end up in Molyneux's shoes. I think he did his honest best, but he just can't manage a lot of people or a complicated schedule, and because of that he pissed everyone off.
> RPS: Do you think you can make a great game?
Peter Molyneux has clearly made some mistakes over the years, and Godus was certainly a fiasco, but can he make a great game? What an absolutely arrogant and impertinent question. He's made a long list of great games going all the way back to Populous. So, yes, I think he can make a great game. John Walker ought to be ashamed of himself for asking that and I don't understand why Peter Molyneux didn't shut him down with a much stronger answer.
edit: Oh, I dug around for LemonHaze and found this twitter post https://nitter.mint.lgbt/i/status/1607154272612896769 I think the title of the HN post is erroneous. It seems to be an unreleased Pocket PC port, which makes way more sense.
edit2: The source for the code seems to be https://en.sega-dreamcast-info-games-preservation.com/liste-... where it's titled as "Source code of Populous for the Pocket PC system (Unreleased Windows CE Version)" Apparently WinCE games can be ported to Dreamcast too?
For some reason people equate “compatible with Windows CE” stickers with “runs Windows CE when you turn it on”
It doesn’t by default boot to CE. It /is/ an option though. But it doesn’t boot it from an internal ROM.
CE was a very lightweight OS that was mostly nice for making it easier to port drivers and apps from one embedded system to another
Maybe Sega had some vague plans to turn the Dreamcast into a multipurpose family computer?
It had a ton of potential. The hardware is still fast enough to do basic browsing etc without issue if it had an updated browser.
It’s not very intuitive that CE is merely available as an SDK option, and that it is only included in the boot media if developer wishes to do so.
Also slightly disappointing that it could have been the first console that don’t need to go through reset/reboot when changing games, though that would have been too ahead of its time.
My memory is fuzzy but that seems doubtful. Windows CE for PocketPC had implementations for Windows' windowing system but IIRC Windows CE for the Sega Dreamcast did not, under the assumption that the game developer would be going straight to DirectX to manage the display.
CString theCredits[50];
theCredits[0] = "POPULOUS";
theCredits[1] = "FOR THE";
theCredits[2] = "POCKET PC"; #define FIRST_RUIN_TOWN 54
#define BAD_LAND 66
#define FLAG_SPRITE 64
#define SHIELD_SPRITE 68
#define GODS_HAND_SPRITE 78
#define ANHK_SPRITE 80
#define SKULL_SPRITE 81
#define DEVILS_HAND_SPRITE 79https://github.com/LemonHaze420/DCPopulous/blob/4cd8b7562191...
It's license dialog has a link to http://www.portable-games.com/populous
https://github.com/LemonHaze420/DCSpeedBall2/blob/e6d9ce3c11...
I don't remember Speedball 2 having a DreamCast port, so these repositories seem somewhat strange. They are also strange for missing license files and various other asset files.
https://github.com/LemonHaze420/DCPopulous/blob/master/safep...
Many game companies ship with asserts + assert messages turned on, for example, instead of making them DEBUG-only.
Isn't there a risk of having a erroneously strict assert predicate and then having the game abort unnecessarily?
If the game keeps going without aborting in the case that state has somehow been compromised, there is still the chance that the player won't actually notice.
I wonder if they are afraid that the game state will be compromised in a way that makes the player not realize the corruption, but still ruin the game.
Most of the games I work on have a mixed approach where if an error is recoverable I don't crash out, but if it's not then I fail-fast out with a detailed error popup. An example of a recoverable error would be a bug causing a player-activated ability to fail to activate, while fail-fast would be the right choice for something like an unexpected null in a data structure.
https://github.com/LemonHaze420/DCPopulous/blob/master/popul...
If it was based on the Archimedes version then maybe the sprite routines would have been the only assembly language bit.
Name some?
Granted I’ve been out of the homebrew dev scene for a while, but this doesn’t sound right. Developing for Windows CE would require a commercial/proprietary copy of Platform Builder and Dreamcast BSP. This is not very “homebrew” friendly at all - especially when there were a ton of homebrew libraries and OSes for Dreamcast through the years, eg Kallistios.
Modern titles like Intrepid Izzy I don’t think are WinCE though.
As for performance, having an OS instead of coding to the bare metal of course imposes overhead but, from what I recall hearing, 3D performance of the WinCE SDK was on a par with Sega's SDK. The graphics engineers had access to Sega's SDK so they were able to do their own comparative benchmarking and they knew game developers would be scrutinizing that.
Ultimately, SR2's frame rate was entirely in the hands of the Sega Rally 2 development team by what code they used and what level of detail they tried to show. The cheat code for SR2 for the Dreamcast that reduces detail to increase framerate is an example of that. They were highly motivated to replicate the arcade experience as closely as possible and constrained by a need to hit the launch date and made choices that resulted in the frame rate issues SR2 has. Had they been using Sega's bare metal SDK, they may have made the same choices favoring arcade fidelity over stable framerate and therefore laying all the blame on WinCE isn't entirely reasonable.
REG_ORIENTATION_SETTING
DEFAULT_STYLUS_CONTROL#ifdef COMPAQ_SOUND
// IPaqs are slow to declare a buffer finished with. Need fewer, but longer buffers.
// Longer buffers result in a time lag between the code
// issuing a sample play command and it actually being
// played. This configuration seems to be the best.
// Short or longer buffers cause stutter.
#define SOUND_BUFFER_LENGTH (3072)
#define NUMBER_OF_QUEUED_BUFFERS 2
#else
// All other machines are much better about the sound code
// and have a response time half that of the IPaq.
#define SOUND_BUFFER_LENGTH (1024)
#define NUMBER_OF_QUEUED_BUFFERS 3
#endif
https://github.com/LemonHaze420/DCPopulous/blob/master/popul...
On the other hand, it doesn’t seem to matter since people will buy Skyrim for their fridge for the 40th time over.
(For me personally, AlephOne for Marathon has some mysterious crashes every few days and it’s pretty annoying.)
Maybe if they had programmers who didn't suck*
Fixed for accuracy.
The main idea is to have a callback and iteration over entities you have (that match some condition/interface). This would refactor the code to .add_system(reduce_size).add_system(handle_magnet_carrier).add_system(...)..., where each section is a separate behaviour which can be tested in isolation.
/* if either paple magnet carrier is a knight make them drop the pm*/I mean, why refactor when something is so eminently readable?