Code Monkey home page Code Monkey logo

Comments (3)

Deledrius avatar Deledrius commented on June 12, 2024

This will probably be a necessary addition for distributing Ages easily. Similar to #34, I'm unsure of the best way to reference the text. Do we want to use the internal editor for storing Python scripts? Or externally in a user-specified location?

Creating the packages themselves is fairly trivial.

I like the idea of parsing a data dir for the marker points. If we want to parse locs too, then that solves the question in #34 as well. We'll probably want a Rescan button in the helpers so external changes can be incorporated. I have a partially-complete branch with a feature that scans the .age files for the purposes of exporting new Pages for an existing Age. Perhaps these should all be consolidated?

from korman.

Hoikas avatar Hoikas commented on June 12, 2024

Update... As part of debugging a crash in Doobes' Pub in Path of the Shell, I have determined that PotS will crash when PtGetAgeSDL is called if the AgeSDL blob is missing from the sav file. The creation availability of this blob has two basic requirements:

  1. The presence of <agename>.sdl in the SDL directory.
  2. The existence of the <agename> class in the <agename>.py[c] Python file.

(Recall of course that these SDL files use the age name by complete convention of course. These notes are not intended to be a complete treatise on the functionality of plPythonSDLModifiers)

Therefore, this issue needs to be addressed. I see this playing out thusly:

  • Update the Python File node to take links to Blender text note blocks.
    • In my testing, Blender will track the local file as well as keep a copy in memory. It notifies the user when it notices the files are out of sync.
    • Text files can be packed. Blender refers to this as making the files "internal".
  • Write a new module in pykorlib that uses ctypes to load the game's python DLL (cypython22.dll or python27.dll) for compiling python source code.
    • Unfortunately, MOULa does not ship with a Python 2.3 DLL, AFAICT (but why are you targeting that anyway?)
    • A Python library selector can be added to the games panel for non-Windows systems.
  • Write a new stage in the exporter for generating the <agename>.pak
    • ABM/PotS will go ahead and xTEA/wdys encrypt the pak and copy it over to the game directory.
    • For MOUL, we'll just want to copy the python files over to the game directory, I expect. This is because that client will only load python.pak and no other file.
    • Note to Self: don't forget the glue!
    • TBD: which files need to be packed? A simple solution would be to just skip packing if the filename begins with "x", but that seems like a hack. We could load the main python.pak and check for membership.
  • If the age is exported with "Age SDL" as an option, Korman will automatically generate the python and SDL files.
    • SDL Version == 0
    • If an <agename>.py file is already present in the blendfile, we use it instead.
    • Remember that age names can contain characters that are illegal python identifiers. Will need to investigate if PotS can use runtime generated classes.
  • Rework the exporter a bit to support having export warnings so stupid issues like a failure to compile the age python won't completely hose the export.
    • Would be nice to have an operator for packing the python separate of the age export process.
  • Profit!

from korman.

Hoikas avatar Hoikas commented on June 12, 2024

Closed by #128

from korman.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.