# PeterJohn ThreeDim — Python IDE - Creating 3D Games

> Python IDE - Creating 3D Games (iPhone/iPad app by Yasushi Obata.)

- Source: https://appshunter.io/ios/app/peterjohn-threedim/id1632372110 (this page in markdown: same URL + `.md`)
- Developer: [Yasushi Obata](https://appshunter.io/developer/899977114)
- Category: Developer Tools, Utilities
- Price: $5.99
- Age rating: 4+
- Requires: iOS 15.0 · 140 MB
- Languages: American English
- Released: 2022-07-04
- Data updated: 2026-08-14
- User reviews in markdown: https://appshunter.io/ios/app/peterjohn-threedim/id1632372110/reviews.md

## What is PeterJohn ThreeDim?

****What is this;;
PeterJohn is a Python3 PlayGrounds runs on iPhone.
This enables you to code, run and learn Python3 even on the train, on the bus, even Offline.

****Why we named "PeterJohn";;
Peter is the son of Old John. Young John is the son of Zebedee.
Peter and Young John led Christianity in the early church.
We named "PeterJohn" after the two names of Peter and Young John.

** Why we made this and Why we chose Python3;;
We wanted to code even on the train or even on the bus,
even on OffLine.
and wanted to offer you to do the same things.
We chose Python3 as the programing language.
'cause the Curly Bracket language such
as JavaScript needs many lines and
it's Not appropriate in the narrow iPhone screen.

**Basic Technology;;
PeterJohn is constructed on some of basic technologies.

**Python-Apple-Support;;
We didn't want to make any Wheel language and
any Wheel interpreter.
so we chose Python3 and 
we used "Python-Apple-Support" as the Python3 interpreter.
"Python-Apple-Support" is one of CPython.

**CPython's Extension Function;;
This is used for Python to call Swift function
such as GUI
via Objective-C and
for Swift to call Python via Objective-C
in order to offer Python3 interpreter.

**PeterJohn-Bridging-Header.h;;
This is used to import Objective-C header files to Swift.
This enables Swift to use CPython's Extension Function via Objective-C.

**PeterJohn-Swift.h;;
This enables CPython's Extension Function to use Swift such as GUI via Objective-C.

**AudioKit;;
To implement playing MIDI function, we used AudioKit.

**squash.py;;
Many people on this planet have learned the programing
from the "squash.py".

****What we offer you;;
**s00stdErrTest.py;;
iOS hides "stderr" to make simple to use iPhone.
but it's required when we learn Python3.
so I wrote "logStdErr.py".
Import "logStdErr" and 
execute "logStdErr.errToFile()"
in your code.

**s01basicUi.py;;
pj.title()
pj.removeAllFromCanvas()
pj.createRectangle()
pj.createCircle()
pj.createLabel()
pj.setText()
pj.updateMainPanel()

**s02midiTest.py;;
pj.midi();

**s03bindTest.py;;
pj.bindMotionFunction()
pj.bindMotionCanvasFunction()
pj.bindButtonFunction()
pj.bindKeyPressFunction()
For example,
pj.bindButtonFunction("p1:s03bindTest.click")
By the notation of "p1:s03bindTest.click",
the function "click" is executed 
only from the script file "s03bindTest" in the project "p1".

**s04timerTest.py;;
pj.startTimerFunctionAfter()
pj.stopTimer()
For example,
pj.startTimerFunctionAfter("p1:s04timerTest.gameLoop")
By the notation of "p1:s04timerTest.gameLoop",
the function "gameLoop" is executed 
only from the script file "s04timerTest" in the project "p1".

**s05squash.py;;
This is the "PeterJohn" implementation
of the Famous "squash.py".

**s06spriteBundle.py;;
pj.createSpriteBundle()
This's just a demonstration,
you need to proceed to create Sprite from SandBox
'cause the Bundle file is freezed when we submitted 
this app to AppStore and 
you can Not change the Bundle file.

**s07audioBundle.py;;
pj.playSoundEffectsBundle()
pj.prepareBgmBundle()
pj.playBGM()
This's just a demonstration,
you need to proceed to create Audio from SandBox
'cause the Bundle file is freezed when we submitted 
this app to AppStore and 
you can Not change the Bundle file.

**s08spriteSandBox.py;;
pj.createSpriteSandBox()
You can import your PNG files to your project.

**s09audioSandBox.py;;
pj.playSoundEffectsSandBox()
pj.prepareBgmSandBox()
pj.playBGM()
You can import your MP3 files to your project.

**Acknowledgements;;
Thank you Lord, Thank you King Jesus.

Thank you AppStore Review Team, every day.

Thank you Guido van Rossum, the author of "CPython".
Thank you Russell Keith-Magee, the author of "Python-Apple-Support".
Thank you Aurelius Prochazka, the author of "AudioKit".
Thank you M-Sugaya, the author of "squash.py".

Best Regards,
--Yasushi Yassun Obata


## Version history (last 5 releases)

### 2026.0518.2019 — 2026-05-18

"pip.whl" Added Version;

we Apologize that we forgot to Add "pip.whl".
Now you Can Use "pip".
Please Check "pjCommandLineTools/scripts/s002pip.py".

Best Regards,
--Yasushi Yassun Obata

### 2026.0514.0029 — 2026-05-14

Last Time We Forgot to Add "PIL", Python Imaging Library, So That We Corrected it Version;

we Apologize 
that we Forgot to Add "PIL" ( Python Imaging Library ) at the last time.
we Corrected it at this time.
you will be Confirm it
by Testing "TutorialSeason003/scripts/s005PILtest.py".

Best Regards,
--Yasushi Yassun Obata

### 2026.0510.2136 — 2026-05-11

iOS26 Available Version;

After End Of April,
we Need to Compile on New Xcode and New iOS.

Best Regards,
--Yasushi Yassun Obata

### 2026.0329.1842 — 2026-03-30

"pjThreeDim became Available to GLB File" Version;

We Added Two APIs in "pjThreeDim" module
in order to make you available to GLB file.
1) pj3d.getMeshNameListFromGLBFile( GLBfileAbsPath )
2) pj3d.createSCNSceneWithGLBFilePath(
        GLBfileAbsPath,
        meshName,
        modelName,x,y,z )

In Order to know how to Use the APIs,
Please Check
"CameraAngle.create3dModelGLB(self,glbFileName,meshName,modelName) " method
in "TutorialSeason001/s009ThreeDimTest.py".

****Romans 12:6-8, NIV;
12:6 We have different gifts, according to the grace given to each of us. If your gift is prophesying, then prophesy in accordance with your faith; 
12:7 if it is serving, then serve; 
if it is teaching, then teach; 
12:8 if it is to encourage, then give encouragement; 
if it is giving, then give generously; 
if it is to lead, do it diligently; 
if it is to show mercy, do it cheerfully.

Best Regards,
--Yasushi Yassun Obata

### 2026.0316.2146 — 2026-03-19

Minor Update of "EditScriptView-KeyWordSearch" Version;

We modified the "EditScriptView-KeyWordSearch"
'cause, when we touch "Previous" button or "Next" button, our Thumb finger of Right hand hides Number of Matches or LineNumber.
Now both Number of Matches and LineNumber is at the Left of both "Previous" button and "Next" button.
This is a Very Small Update but the change will make Easier to Use.

It seems "Search" in Japanese Language means "Happy" in English.
So we quoted the Scripture about "Happy".

****Psalm 1:1-3, GNT;Good News Translation;
1:1 Happy are those
    who reject the advice of evil people,
    who do not follow the example of sinners
    or join those who have no use for God.
1:2 Instead, they find joy in obeying the Law of the Lord,
    and they study it day and night.
1:3 They are like trees that grow beside a stream,
    that bear fruit at the right time,
    and whose leaves do not dry up.
They succeed in everything they do.

Best Regards,
--Yasushi Yassun Obata

## More apps by Yasushi Obata

- [YassunPsalms](https://appshunter.io/ios/app/yassunpsalms/id1617333044)
- [YassunCallUpNotice](https://appshunter.io/ios/app/yassuncallupnotice/id1621617154)
- [YassunBitterness](https://appshunter.io/ios/app/yassunbitterness/id1624704495)
- [PeterJohn NumPy](https://appshunter.io/ios/app/peterjohn-numpy/id1662896316)
- [PeterJohn NumPy Matplotlib](https://appshunter.io/ios/app/peterjohn-numpy-matplotlib/id6471342492)

All apps by Yasushi Obata: https://appshunter.io/developer/899977114

---

*Data collected daily from the US App Store and indexed by [AppsHunter](https://appshunter.io/). User reviews are verbatim App Store reviews. Ratings, prices and chart positions refresh continuously; this snapshot is from 2026-08-14.*
