2022-03-05 16:49:34 -05:00
# Portal64
2023-03-27 15:35:30 -04:00
![](./assets/images/portal64_readme_logo.gif)
2022-02-27 18:41:51 -05:00
2022-11-29 00:28:49 -05:00
A demake of Portal for the Nintendo 64.
2022-04-07 23:41:58 -04:00
## How to build
2022-11-29 00:16:13 -05:00
First, you will need to setup [Modern SDK ](https://crashoveride95.github.io/n64hbrew/modernsdk/startoff.html ).
2022-04-07 23:41:58 -04:00
2023-03-04 00:10:50 -05:00
After installing modern sdk you will want to also install
```
sudo apt install libnustd
```
2022-11-29 00:16:13 -05:00
Next, you will need to download Blender 3.0 or higher. Then set the environment variable `BLENDER_3_0` to be the absolute path where the Blender executable is located on your system.
2022-04-07 23:41:58 -04:00
2022-06-18 20:30:03 -04:00
< br / >
2022-04-30 23:51:08 -04:00
2022-11-29 00:16:13 -05:00
You will need to install Python `vpk` .
2022-04-30 23:51:08 -04:00
```
pip install vpk
```
2022-06-18 20:30:03 -04:00
< br / >
2022-05-17 00:22:46 -04:00
2023-03-04 00:10:50 -05:00
Install `vtf2png` , `sfz2n64` , and setup `skeletool64` .
2022-06-18 20:33:32 -04:00
```sh
echo "deb [trusted=yes] https://lambertjamesd.github.io/apt/ ./" \
2023-03-04 00:10:50 -05:00
| sudo tee /etc/apt/sources.list.d/lambertjamesd.list
sudo apt update
sudo apt install vtf2png sfz2n64 mpg123 sox imagemagick
```
< br / >
Setup and build skelatool64
2022-06-18 20:33:32 -04:00
2023-03-04 00:10:50 -05:00
```
cd skelatool64
./setup_dependencies.sh
make
2022-05-17 00:22:46 -04:00
```
2022-04-30 23:51:08 -04:00
2022-06-18 20:30:03 -04:00
< br / >
2022-04-30 23:51:08 -04:00
2023-03-04 00:10:50 -05:00
You will need to install nodejs. You can use apt for this
2022-04-30 23:51:08 -04:00
```
2023-03-04 00:10:50 -05:00
sudo apt install nodejs
2022-05-17 00:22:46 -04:00
```
2022-06-18 20:30:03 -04:00
< br / >
2022-05-17 00:22:46 -04:00
2022-11-29 00:16:13 -05:00
You then need to add the following files from where Portal is installed to the folder `vpk` .
2022-05-17 00:22:46 -04:00
```
portal_pak_000.vpk
portal_pak_001.vpk
portal_pak_002.vpk
portal_pak_003.vpk
portal_pak_004.vpk
portal_pak_005.vpk
portal_pak_dir.vpk
2022-04-30 23:51:08 -04:00
```
2022-11-29 00:28:49 -05:00
Finally, run `make` to build the project.
2022-06-18 20:30:03 -04:00
< br / >
2022-05-17 00:22:46 -04:00
2022-05-17 22:45:40 -04:00
## Build with Docker
2022-06-18 20:30:03 -04:00
2022-11-29 00:16:13 -05:00
Build the Docker image.
2022-05-17 22:45:40 -04:00
```
docker build . -t portal64
```
2022-06-18 20:30:03 -04:00
< br / >
2022-11-29 00:16:13 -05:00
Then build.
2022-06-18 20:33:32 -04:00
```sh
2022-06-18 20:30:03 -04:00
# Set the environment variable
2022-09-27 21:33:56 -04:00
BLENDER_3_0=/blender/blender
2022-06-18 20:30:03 -04:00
# Build using docker
docker run \
-v /home/james/Blender/blender-2.93.1-linux-x64:/blender \
2022-09-27 21:33:56 -04:00
-e BLENDER_3_0 -v /home/james/portal/portal64/vpk:/usr/src/app/vpk \
2022-06-18 20:30:03 -04:00
-t -v /home/james/portal/portal64/docker-output:/usr/src/app/build portal64
2022-05-17 22:45:40 -04:00
```
2022-06-18 20:30:03 -04:00
< br / >
Where `/home/james/Blender/blender-2.93.1-linux-x64` is the folder where Blender is located.
`/home/james/portal/portal64/vpk` is the folder where the portal `*.vpk` files are located.
`/home/james/portal/portal64/docker-output` is where you want the output of the build to locate `portal.z64` will be put into this folder.
< br / >
2022-05-25 19:30:34 -04:00
2023-03-22 21:16:43 -04:00
## Current New Feature TODO List
2023-02-28 22:56:24 -05:00
- [ ] force placing auto portals when there is a conflict
2023-02-18 22:20:28 -05:00
- [ ] rotate auto uv
2023-02-27 00:05:06 -05:00
- [ ] disable portal surfaces manually on some surfaces
2023-03-22 21:16:43 -04:00
- [ ] Portal not rendering recursively sometimes
2022-08-12 23:02:18 -04:00
- [ ] Correct elevator timing
2022-07-09 23:47:40 -04:00
- [ ] Presort portal gun polygon order
2023-03-22 21:16:43 -04:00
- [ ] Adding a menu to game #47
- [ ] Adding y-axis/x-axis inverting options #55
- [ ] Adding loading notice between levels #45
- [ ] Vertex lighting #39
- [ ] Multi controller support #23
2023-04-08 16:37:32 -04:00
- [x] Camera shake
2023-03-24 21:38:58 -04:00
- [x] Portal gun movement with player movement/shooting #19
2023-03-22 21:16:43 -04:00
## Current New Sounds TODO List
- [ ] Box collision sounds
- [ ] Unstationary scaffolding moving sound
- [ ] Ambient background loop
2023-04-07 22:23:58 -04:00
- [x] Button release beep-beep sound
- [x] Elevator arrived chime sound
- [x] Ball catcher activated sound
2023-04-05 20:51:17 -04:00
- [x] Fast flying air whoosh sound
2023-03-22 21:16:43 -04:00
## Current Bug TODO List (Hardware Verified) (High->Low priority)
2023-04-13 08:44:01 -04:00
- [ ] investigate chell animation
----------------------- v8
2023-03-22 21:16:43 -04:00
- [ ] Player can clip through chamber 7 by walking back up the stairs (near the top).
- [ ] player can clip through back of elevator by jumping and strafeing at the back corners while inside.
2023-03-26 16:54:18 -04:00
- [ ] Player can trap themselves in chamber 5 by following instructions issue #75
2023-03-22 21:16:43 -04:00
- [ ] Two wall portals next to eachother can be used to clip any object out of any level by pushing it into corner, then dropping.
- [ ] Glass can be walked through from one side on multiple levels (0,1,4,...)
- [ ] Passing into a ceiling portal can sometimes mess with the player rotation
- [ ] Can shoot portals, and walk through signage
- [ ] Chell animation problem (fixed itself, investigate)
- [ ] Can place portals on ground after final fizzler on all levels
- [ ] Door at end of room 2, chamber 10 isnt rendered properly
- [ ] various visual glitches when running NTSC on PAL console #65
- [ ] various visual glitches when running PAL on NTSC console #65
2023-03-26 16:54:18 -04:00
- [x] Any grabbable object can be clipped through level by wall/floor portals method.
- [x] Player can clip through any level by placing one portal on wall and another portal right next to it on ground. #13
2023-03-27 17:12:01 -04:00
- [x] Can shoot portals while holding an object