Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to Xbox Chaos: Modding Evolved

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


Halo: CE
[Wip] Quickbeam

8 posts in this topic

First off, sorry for my stupid [WIP] Leaflock thread from months back. WIP threads are only worthwhile if you've actually accomplished something.


Therefore... Check it out! Scriptable runtime reference-swapping!




I think a few of you remember my Quickbeam project. I decided scripting was an important feature, so decided to rewrite the backend in Python, which has been a huge success.


I've had a lot of help getting this far from the Halo Mac users at MacGamingMods, and using Python means this can potentially be cross-platform so the Mac modders can use it as well (as LeafLock was supposed to be).


My next step is baking this functionality into some sort of UI. If I heavily borrowed Assembly's ideas, it could look something like this (no promises, though):

Edited by WaeV
Akarias likes this

Share this post

Link to post
Share on other sites

Demo images!
Sorry the text isn't very readable; imgur resized these on me.

Choose Halo's resolution with the sliders

Once you have the desired resolution, click launch

Observe Halo and the Python console
(the 'console' is pretty hacked together right now; that may change in the future)

Load the map, observe the needler's projectile reference

Presto change-o! See the needler's projectile reference has changed

Edited by WaeV

Share this post

Link to post
Share on other sites

New update!

I have switched from CPython3 to IronPython to make C# interop easier. Thanks to that switch, the edit boxes (traditional HMT/Eschaton-type controls) are seamlessly integrated with Python scripting -- whenever scripts make changes, the GUI updates to reflect this.


Here is an overview of Quickbeam's (planned) architecture. So far, many of the pieces are in place, with the exception of add-ons.


Binary Access

At the very bottom is the layer that makes reading maps from memory feel exactly the same as reading from disk. Most users need not think about this layer; they can just take it for granted.



One step up is the plugins layer. Whereas user-contributed plugins have been popular for older programs like HMT and Eschaton, Quickbeam's plugins will be moderated by me. This is because script compatibility depends on everyone having the same plugins, and we've pretty much mapped Halo out anyways. I can update plugins after the fact if they do need to change, and you can always substitute your own if you really want to.



In the middle is the celebrated (by me, anyways) scripting layer! This should hopefully be intuitive to most modders. Scripting is done via Python, and I intend to publish a few tutorials and examples. Besides being cool, the scripting layer will make it easier for me to develop new features. Additionally, it will open the door for...



This feature is less fleshed-out as the rest, but I want users to be able to create and publish their own special-purpose buttons and controls. This could be as simple as a button for automating some tedious task using scripts, or something more complex. The design of this feature is hazy at the moment, and will not be present in the initial releases of Quickbeam


Classic Editor Interface

Finally, at the very top is the HMT/Eschaton-like editing controls we all know and love. Except these ones won't be glitchy or laggy (I hope).

Edited by WaeV

Share this post

Link to post
Share on other sites

In order to actually release something that much faster, I've spent the last couple months polishing up the scripting layer.

Halolib 1.0 is now available for use!

It works a lot like the scripting demos shown above (from 2013, I know).

However, the code is a lot cleaner. It's written in straight Python 3 and requires no non-standard libraries.

Currently it only memory-mods Halo PC 1.10. In theory it can memory-mod CE as well as dedicated servers, but I need to put the time into discovering the correct offsets for everything.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now